devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
144 lines (141 loc) • 6.5 kB
JavaScript
/**
* DevExtreme (cjs/ui/diagram/ui.diagram.menu_helper.js)
* Version: 21.1.4
* Build date: Mon Jun 21 2021
*
* Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
exports.default = void 0;
var _renderer = _interopRequireDefault(require("../../core/renderer"));
var _icon = require("../../core/utils/icon");
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
}
}
function _typeof(obj) {
if ("function" === typeof Symbol && "symbol" === typeof Symbol.iterator) {
_typeof = function(obj) {
return typeof obj
}
} else {
_typeof = function(obj) {
return obj && "function" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj
}
}
return _typeof(obj)
}
var DIAGRAM_CONTEXT_MENU_CLASS = "dx-diagram-contextmenu";
var DiagramMenuHelper = {
getContextMenuItemTemplate: function(contextMenu, itemData, itemIndex, itemElement) {
var $itemElement = (0, _renderer.default)(itemElement);
$itemElement.empty();
var itemKey = void 0 !== itemData.rootCommand ? itemData.rootCommand : -1;
if (itemData.icon && !itemData.checked) {
var $iconElement = (0, _icon.getImageContainer)(itemData.icon);
$itemElement.append($iconElement)
} else if (contextMenu._menuHasCheckedItems && true === contextMenu._menuHasCheckedItems[itemKey]) {
var $checkElement = (0, _icon.getImageContainer)("check");
$checkElement.css("visibility", !itemData.checked ? "hidden" : "visible");
$itemElement.append($checkElement)
}
$itemElement.append('<span class="dx-menu-item-text">' + itemData.text + "</span>");
if (Array.isArray(itemData.items) && itemData.items.length > 0) {
$itemElement.append('<span class="dx-menu-item-popout-container"><div class="dx-menu-item-popout"></div></span>')
}
},
getContextMenuCssClass: function() {
return DIAGRAM_CONTEXT_MENU_CLASS
},
onContextMenuItemClick: function(widget, itemData, actionHandler) {
if ((void 0 !== itemData.command || void 0 !== itemData.name) && (!Array.isArray(itemData.items) || !itemData.items.length)) {
var parameter = DiagramMenuHelper.getItemCommandParameter(widget, itemData);
actionHandler.call(this, itemData.command, itemData.name, parameter)
} else if (void 0 !== itemData.rootCommand && void 0 !== itemData.value) {
var _parameter = DiagramMenuHelper.getItemCommandParameter(widget, itemData, itemData.value);
actionHandler.call(this, itemData.rootCommand, void 0, _parameter)
}
},
getItemValue: function(item) {
return "object" === _typeof(item.value) ? JSON.stringify(item.value) : item.value
},
getItemOptionText: function(contextMenu, indexPath) {
if (contextMenu) {
indexPath = indexPath.slice();
var parentItemOptionText = this._getParentItemOptionText(indexPath);
if (contextMenu._originalItemsInfo && contextMenu._originalItemsInfo[parentItemOptionText]) {
indexPath[indexPath.length - 1] += contextMenu._originalItemsInfo[parentItemOptionText].indexPathCorrection
}
}
return this._getItemOptionTextCore(indexPath)
},
_getParentItemOptionText: function(indexPath) {
var parentIndexPath = indexPath.slice(0, indexPath.length - 1);
return this._getItemOptionTextCore(parentIndexPath)
},
_getItemOptionTextCore: function(indexPath) {
return indexPath.reduce((function(r, i) {
return r + "items[".concat(i, "].")
}), "")
},
getItemCommandParameter: function(widget, item, value) {
if (item.getParameter) {
return item.getParameter(widget)
}
return value
},
updateContextMenuItems: function(contextMenu, itemOptionText, rootCommandKey, items) {
var _this = this;
if (!contextMenu._originalItemsInfo) {
contextMenu._originalItemsInfo = {}
}
if (!contextMenu._originalItemsInfo[itemOptionText]) {
contextMenu._originalItemsInfo[itemOptionText] = {
items: contextMenu.option(itemOptionText + "items") || []
}
}
items = items.map((function(item) {
return {
value: _this.getItemValue(item),
text: item.text,
checked: item.checked,
widget: contextMenu,
rootCommand: rootCommandKey
}
}));
var originalItems = contextMenu._originalItemsInfo[itemOptionText].items;
contextMenu.option(itemOptionText + "items", items.concat(originalItems));
if (contextMenu._originalItemsInfo[itemOptionText] && originalItems.length) {
contextMenu._originalItemsInfo[itemOptionText].indexPathCorrection = items.length
}
},
updateContextMenuItemVisible: function(contextMenu, itemOptionText, visible) {
contextMenu.option(itemOptionText + "visible", visible)
},
updateContextMenuItemValue: function(contextMenu, itemOptionText, rootCommandKey, value) {
var items = contextMenu.option(itemOptionText + "items");
if ("boolean" === typeof value && (!items || !items.length)) {
this._setContextMenuHasCheckedItems(contextMenu, -1);
contextMenu.option(itemOptionText + "checked", value)
} else if (void 0 !== value) {
this._setContextMenuHasCheckedItems(contextMenu, rootCommandKey);
if (Array.isArray(items)) {
items.forEach((function(item, index) {
item.checked = item.value === value
}))
}
}
},
_setContextMenuHasCheckedItems: function(contextMenu, key) {
if (!contextMenu._menuHasCheckedItems) {
contextMenu._menuHasCheckedItems = {}
}
contextMenu._menuHasCheckedItems[key] = true
}
};
var _default = DiagramMenuHelper;
exports.default = _default;
module.exports = exports.default;
module.exports.default = exports.default;