UNPKG

devextreme

Version:

JavaScript/TypeScript Component Suite for Responsive Web Development

91 lines (90 loc) 3.57 kB
/** * 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];