devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
101 lines (99 loc) • 4.1 kB
JavaScript
/**
* DevExtreme (cjs/__internal/grids/new/card_view/context_menu/controller.js)
* Version: 25.1.3
* Build date: Wed Jun 25 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ContextMenuController = void 0;
var _index = require("../../grid_core/columns_controller/index");
var _controller = require("../../grid_core/context_menu/controller");
var _index2 = require("../../grid_core/sorting_controller/index");
var _options_controller = require("../options_controller");
function _extends() {
return _extends = Object.assign ? Object.assign.bind() : function(n) {
for (var e = 1; e < arguments.length; e++) {
var t = arguments[e];
for (var r in t) {
({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
}
}
return n
}, _extends.apply(null, arguments)
}
class ContextMenuController extends _controller.BaseContextMenuController {
constructor(columnsController, options, sortingController) {
super();
this.columnsController = columnsController;
this.options = options;
this.sortingController = sortingController
}
show(event, view) {
let contextInfo = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
let onMenuCloseCallback = arguments.length > 3 ? arguments[3] : void 0;
super.show(event, view, contextInfo, onMenuCloseCallback)
}
getItems(view, targetElement) {
let contextInfo = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
const items = [];
if ("headerPanel" === view && contextInfo.column) {
items.push(...this.getSortingItems(contextInfo.column))
}
const event = _extends({
items: items.length > 0 ? items : void 0,
target: view,
targetElement: targetElement,
columnIndex: void 0,
card: void 0,
cardIndex: void 0,
column: void 0
}, contextInfo);
const callback = this.options.action("onContextMenuPreparing").peek();
callback(event);
return event.items
}
getSortingItems(column) {
const mode = this.sortingController.mode.value;
const isDisabled = "none" === mode || !column.allowSorting;
const onItemClick = event => {
this.handleSortMenuClick(event, mode, column)
};
return [{
text: this.options.oneWay("sorting.ascendingText").peek(),
value: "asc",
disabled: isDisabled || "asc" === column.sortOrder,
icon: "sortuptext",
onItemClick: onItemClick
}, {
text: this.options.oneWay("sorting.descendingText").peek(),
value: "desc",
disabled: isDisabled || "desc" === column.sortOrder,
icon: "sortdowntext",
onItemClick: onItemClick
}, {
text: this.options.oneWay("sorting.clearText").peek(),
value: void 0,
disabled: isDisabled || !column.sortOrder,
icon: "none",
onItemClick: onItemClick
}]
}
handleSortMenuClick(e, mode, column) {
var _e$itemData;
const sortOrder = null === (_e$itemData = e.itemData) || void 0 === _e$itemData ? void 0 : _e$itemData.value;
switch (mode) {
case "single":
this.sortingController.onSingleModeSortCore(column, true, sortOrder);
break;
case "multiple":
this.sortingController.onMultipleModeSortCore(column, false, sortOrder)
}
}
}
exports.ContextMenuController = ContextMenuController;
ContextMenuController.dependencies = [_index.ColumnsController, _options_controller.OptionsController, _index2.SortingController];