UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

206 lines (204 loc) • 8.5 kB
/** * DevExtreme (cjs/ui/grid_core/ui.grid_core.header_panel.js) * Version: 21.2.4 * Build date: Mon Dec 06 2021 * * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; exports.headerPanelModule = void 0; var _renderer = _interopRequireDefault(require("../../core/renderer")); var _toolbar = _interopRequireDefault(require("../toolbar")); var _uiGrid_core = require("./ui.grid_core.columns_view"); var _common = require("../../core/utils/common"); var _type = require("../../core/utils/type"); var _message = _interopRequireDefault(require("../../localization/message")); require("../drop_down_menu"); var _extend = require("../../core/utils/extend"); var _data = require("../../core/utils/data"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } } var HEADER_PANEL_CLASS = "header-panel"; var TOOLBAR_BUTTON_CLASS = "toolbar-button"; var TOOLBAR_ARIA_LABEL = "-ariaToolbar"; var HeaderPanel = _uiGrid_core.ColumnsView.inherit({ _getToolbarItems: function() { return [] }, _getButtonContainer: function() { return (0, _renderer.default)("<div>").addClass(this.addWidgetPrefix(TOOLBAR_BUTTON_CLASS)) }, _getToolbarButtonClass: function(specificClass) { var secondClass = specificClass ? " " + specificClass : ""; return this.addWidgetPrefix(TOOLBAR_BUTTON_CLASS) + secondClass }, _getToolbarOptions: function() { var userToolbarOptions = this.option("toolbar"); var options = { toolbarOptions: { items: this._getToolbarItems(), visible: null === userToolbarOptions || void 0 === userToolbarOptions ? void 0 : userToolbarOptions.visible, disabled: null === userToolbarOptions || void 0 === userToolbarOptions ? void 0 : userToolbarOptions.disabled, onItemRendered: function(e) { var itemRenderedCallback = e.itemData.onItemRendered; if (itemRenderedCallback) { itemRenderedCallback(e) } } } }; var userItems = null === userToolbarOptions || void 0 === userToolbarOptions ? void 0 : userToolbarOptions.items; options.toolbarOptions.items = this._normalizeToolbarItems(options.toolbarOptions.items, userItems); this.executeAction("onToolbarPreparing", options); if (options.toolbarOptions && !(0, _type.isDefined)(options.toolbarOptions.visible)) { var toolbarItems = options.toolbarOptions.items; options.toolbarOptions.visible = !!(null !== toolbarItems && void 0 !== toolbarItems && toolbarItems.length) } return options.toolbarOptions }, _normalizeToolbarItems: function(defaultItems, userItems) { var defaultProps = { location: "after" }; var isArray = Array.isArray(userItems); if (!(0, _type.isDefined)(userItems)) { return defaultItems } if (!isArray) { userItems = [userItems] } var defaultButtonsByNames = {}; defaultItems.forEach((function(button) { defaultButtonsByNames[button.name] = button })); var normalizedItems = userItems.map((function(button) { var needHideButton = false; if ((0, _type.isString)(button)) { button = { name: button }; needHideButton = true } if ((0, _type.isDefined)(button.name)) { if ((0, _type.isDefined)(defaultButtonsByNames[button.name])) { button = (0, _extend.extend)(true, {}, defaultButtonsByNames[button.name], button) } else if (needHideButton) { button.visible = false } } return (0, _extend.extend)(true, {}, defaultProps, button) })); return isArray ? normalizedItems : normalizedItems[0] }, _renderCore: function() { if (!this._toolbar) { var $headerPanel = this.element(); $headerPanel.addClass(this.addWidgetPrefix(HEADER_PANEL_CLASS)); var label = _message.default.format(this.component.NAME + TOOLBAR_ARIA_LABEL); var $toolbar = (0, _renderer.default)("<div>").attr("aria-label", label).appendTo($headerPanel); this._toolbar = this._createComponent($toolbar, _toolbar.default, this._toolbarOptions) } else { this._toolbar.option(this._toolbarOptions) } }, _columnOptionChanged: _common.noop, _handleDataChanged: function() { if (this._requireReady) { this.render() } }, init: function() { this.callBase(); this.createAction("onToolbarPreparing", { excludeValidators: ["disabled", "readOnly"] }) }, render: function() { this._toolbarOptions = this._getToolbarOptions(); this.callBase.apply(this, arguments) }, setToolbarItemDisabled: function(name, optionValue) { var toolbarInstance = this._toolbar; if (toolbarInstance) { var items = toolbarInstance.option("items") || []; var itemIndex = items.indexOf(items.filter((function(item) { return item.name === name }))[0]); if (itemIndex >= 0) { var itemOptionPrefix = "items[" + itemIndex + "]"; if (toolbarInstance.option(itemOptionPrefix + ".options")) { toolbarInstance.option(itemOptionPrefix + ".options.disabled", optionValue) } else { toolbarInstance.option(itemOptionPrefix + ".disabled", optionValue) } } } }, updateToolbarDimensions: function() { var _this$_toolbar; null === (_this$_toolbar = this._toolbar) || void 0 === _this$_toolbar ? void 0 : _this$_toolbar.updateDimensions() }, getHeaderPanel: function() { return this.element() }, getHeight: function() { return this.getElementHeight() }, optionChanged: function(args) { if ("onToolbarPreparing" === args.name) { this._invalidate(); args.handled = true } if ("toolbar" === args.name) { args.handled = true; if (this._toolbar) { var parts = (0, _data.getPathParts)(args.fullName); var optionName = args.fullName.replace(/^toolbar\./, ""); if (1 === parts.length) { var toolbarOptions = this._getToolbarOptions(); this._toolbar.option(toolbarOptions) } else if ("items" === parts[1]) { if (2 === parts.length) { var _toolbarOptions = this._getToolbarOptions(); this._toolbar.option("items", _toolbarOptions.items) } else if (3 === parts.length) { var normalizedItem = this._normalizeToolbarItems(this._getToolbarItems(), args.value); this._toolbar.option(optionName, normalizedItem) } else if (parts.length >= 4) { this._toolbar.option(optionName, args.value) } } else { this._toolbar.option(optionName, args.value) } } } this.callBase(args) }, isVisible: function() { return this._toolbarOptions && this._toolbarOptions.visible }, allowDragging: _common.noop }); var headerPanelModule = { defaultOptions: function() { return {} }, views: { headerPanel: HeaderPanel }, extenders: { controllers: { resizing: { _updateDimensionsCore: function() { this.callBase.apply(this, arguments); this.getView("headerPanel").updateToolbarDimensions() } } } } }; exports.headerPanelModule = headerPanelModule;