devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
108 lines (107 loc) • 5.77 kB
JavaScript
/**
* DevExtreme (cjs/__internal/grids/new/card_view/header_panel/view.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/
*/
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.HeaderPanelView = void 0;
var _signalsCore = require("@preact/signals-core");
var _columns_controller = require("../../../../grids/new/grid_core/columns_controller/columns_controller");
var _view = require("../../../../grids/new/grid_core/core/view");
var _index = require("../../../../grids/new/grid_core/keyboard_navigation/index");
var _index2 = require("../../grid_core/column_chooser/index");
var _filter_controller = require("../../grid_core/filtering/filter_controller");
var _view_controller = require("../../grid_core/filtering/header_filter/view_controller");
var _index3 = require("../../grid_core/sorting_controller/index");
var _index4 = require("../context_menu/index");
var _options_controller = require("../options_controller");
var _controller = require("./controller");
var _header_panel = require("./header_panel");
class HeaderPanelView extends _view.View {
constructor(headerPanelController, contextMenuController, sortingController, columnsController, options, headerFilterViewController, keyboardNavigationController, columnChooserController, filterController, columnChooserView) {
super();
this.headerPanelController = headerPanelController;
this.contextMenuController = contextMenuController;
this.sortingController = sortingController;
this.columnsController = columnsController;
this.options = options;
this.headerFilterViewController = headerFilterViewController;
this.keyboardNavigationController = keyboardNavigationController;
this.columnChooserController = columnChooserController;
this.filterController = filterController;
this.columnChooserView = columnChooserView;
this.component = _header_panel.HeaderPanel;
this.navigationStrategy = new _index.NavigationStrategyHorizontalList;
this.showDropzone = (0, _signalsCore.computed)((() => {
var _this$columnChooserCo;
const allowReordering = this.columnsController.allowColumnReordering.value;
const column = null === (_this$columnChooserCo = this.columnChooserController.draggingItem.value) || void 0 === _this$columnChooserCo ? void 0 : _this$columnChooserCo.column;
if (!column) {
return false
}
const allColumnsHidden = 0 === this.columnsController.visibleColumns.value.length;
const canReorder = allowReordering && column.allowReordering;
return !canReorder || allColumnsHidden
}))
}
getProps() {
return (0, _signalsCore.computed)((() => ({
visibleColumns: this.columnsController.visibleColumns.value,
kbnEnabled: this.keyboardNavigationController.enabled.value,
navigationStrategy: this.navigationStrategy,
showSortIndexes: this.sortingController.showSortIndexes.value,
onColumnSort: this.onColumnSort.bind(this),
itemTemplate: this.options.template("headerPanel.itemTemplate").value,
onHeaderFilterOpen: this.onHeaderFilterOpen.bind(this),
itemCssClass: this.options.oneWay("headerPanel.itemCssClass").value,
visible: this.options.oneWay("headerPanel.visible").value,
draggingOptions: this.options.oneWay("headerPanel.dragging").value,
sortableConfig: {
onColumnMove: this.headerPanelController.onColumnMove,
showDropzone: this.showDropzone.value,
isColumnDraggable: this.headerPanelController.isColumnDraggable,
onPlaceholderPrepared: this.headerPanelController.onPlaceholderPrepared
},
showContextMenu: this.showContextMenu.bind(this),
openColumnChooser: () => {
this.columnChooserView.show()
},
filterSyncValue: this.filterController.filterSyncValue.value
})))
}
onColumnSort(column, event) {
const mode = this.sortingController.mode.peek();
switch (mode) {
case "none":
return;
case "single":
this.sortingController.onSingleModeSortClick(column, event);
return;
case "multiple":
this.sortingController.onMultipleModeSortClick(column, event);
return;
default:
throw new Error("Unsupported sorting state")
}
}
onHeaderFilterOpen(element, column, onFilterCloseCallback) {
if (!element) {
return
}
this.headerFilterViewController.openPopup(element, column, onFilterCloseCallback)
}
showContextMenu(event, column, columnIndex, onMenuCloseCallback) {
this.contextMenuController.show(event, "headerPanel", {
column: column,
columnIndex: columnIndex
}, onMenuCloseCallback)
}
}
exports.HeaderPanelView = HeaderPanelView;
HeaderPanelView.dependencies = [_controller.HeaderPanelController, _index4.ContextMenuController, _index3.SortingController, _columns_controller.ColumnsController, _options_controller.OptionsController, _view_controller.HeaderFilterViewController, _index.KeyboardNavigationController, _index2.ColumnChooserController, _filter_controller.FilterController, _index2.ColumnChooserView];