UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

158 lines (156 loc) 6.35 kB
/** * DevExtreme (ui/grid_core/ui.grid_core.sorting.js) * Version: 18.2.18 * Build date: Tue Oct 18 2022 * * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; var _renderer = require("../../core/renderer"); var _renderer2 = _interopRequireDefault(_renderer); var _events_engine = require("../../events/core/events_engine"); var _events_engine2 = _interopRequireDefault(_events_engine); var _click = require("../../events/click"); var _click2 = _interopRequireDefault(_click); var _type = require("../../core/utils/type"); var _extend = require("../../core/utils/extend"); var _uiGrid_core = require("../grid_core/ui.grid_core.sorting_mixin"); var _uiGrid_core2 = _interopRequireDefault(_uiGrid_core); var _message = require("../../localization/message"); var _message2 = _interopRequireDefault(_message); var _utils = require("../../events/utils"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj } } var COLUMN_HEADERS_VIEW_NAMESPACE = "dxDataGridColumnHeadersView"; var ColumnHeadersViewSortingExtender = (0, _extend.extend)({}, _uiGrid_core2.default, { _createRow: function(row) { var that = this; var $row = that.callBase(row); if ("header" === row.rowType) { _events_engine2.default.on($row, (0, _utils.addNamespace)(_click2.default.name, COLUMN_HEADERS_VIEW_NAMESPACE), "td", that.createAction(function(e) { if ((0, _renderer2.default)(e.event.currentTarget).parent().get(0) !== $row.get(0)) { return } var keyName = null; var event = e.event; var $cellElementFromEvent = (0, _renderer2.default)(event.currentTarget); var rowIndex = $cellElementFromEvent.parent().index(); var columnIndex = -1; [].slice.call(that.getCellElements(rowIndex)).some(function($cellElement, index) { if ($cellElement === $cellElementFromEvent.get(0)) { columnIndex = index; return true } }); var visibleColumns = that._columnsController.getVisibleColumns(rowIndex); var column = visibleColumns[columnIndex]; var editingController = that.getController("editing"); var editingMode = that.option("editing.mode"); var isCellEditing = editingController && editingController.isEditing() && ("batch" === editingMode || "cell" === editingMode); if (isCellEditing || !that._isSortableElement((0, _renderer2.default)(event.target))) { return } if (column && !(0, _type.isDefined)(column.groupIndex) && !column.command) { if (event.shiftKey) { keyName = "shift" } else { if (event.ctrlKey) { keyName = "ctrl" } } setTimeout(function() { that._columnsController.changeSortOrder(column.index, keyName) }) } })) } return $row }, _renderCellContent: function($cell, options) { var that = this; var column = options.column; if (!column.command && "header" === options.rowType) { that._applyColumnState({ name: "sort", rootElement: $cell, column: column, showColumnLines: that.option("showColumnLines") }) } that.callBase($cell, options) }, _columnOptionChanged: function(e) { var changeTypes = e.changeTypes; if (1 === changeTypes.length && changeTypes.sorting) { this._updateIndicators("sort"); return } this.callBase(e) }, optionChanged: function(args) { var that = this; switch (args.name) { case "sorting": that._invalidate(); args.handled = true; break; default: that.callBase(args) } } }); var HeaderPanelSortingExtender = (0, _extend.extend)({}, _uiGrid_core2.default, { _createGroupPanelItem: function($rootElement, groupColumn) { var that = this; var $item = that.callBase.apply(that, arguments); _events_engine2.default.on($item, (0, _utils.addNamespace)(_click2.default.name, "dxDataGridHeaderPanel"), that.createAction(function() { setTimeout(function() { that.getController("columns").changeSortOrder(groupColumn.index) }) })); that._applyColumnState({ name: "sort", rootElement: $item, column: { alignment: that.option("rtlEnabled") ? "right" : "left", allowSorting: groupColumn.allowSorting, sortOrder: "desc" === groupColumn.sortOrder ? "desc" : "asc" }, showColumnLines: true }); return $item }, optionChanged: function(args) { var that = this; switch (args.name) { case "sorting": that._invalidate(); args.handled = true; break; default: that.callBase(args) } } }); module.exports = { defaultOptions: function() { return { sorting: { mode: "single", ascendingText: _message2.default.format("dxDataGrid-sortingAscendingText"), descendingText: _message2.default.format("dxDataGrid-sortingDescendingText"), clearText: _message2.default.format("dxDataGrid-sortingClearText") } } }, extenders: { views: { columnHeadersView: ColumnHeadersViewSortingExtender, headerPanel: HeaderPanelSortingExtender } } };