devextreme
Version:
JavaScript/TypeScript Component Suite for Responsive Web Development
91 lines (90 loc) • 3.57 kB
JavaScript
/**
* DevExtreme (esm/__internal/grids/new/card_view/context_menu/controller.js)
* Version: 25.2.5
* Build date: Fri Feb 20 2026
*
* Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
import {
ColumnsController
} from "../../grid_core/columns_controller/index";
import {
BaseContextMenuController
} from "../../grid_core/context_menu/controller";
import {
SortingController
} from "../../grid_core/sorting_controller/index";
import {
OptionsController
} from "../options_controller";
export class ContextMenuController extends 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 = Object.assign({
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)
}
}
}
ContextMenuController.dependencies = [ColumnsController, OptionsController, SortingController];