devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
62 lines (46 loc) • 2.07 kB
JavaScript
var $ = require("../../core/renderer"),
ListStrategy = require("./ui.toolbar.strategy.list_base"),
extend = require("../../core/utils/extend").extend,
translator = require("../../animation/translator");
var ListTopStrategy = ListStrategy.inherit({
NAME: "listTop",
_listOverlayConfig: function _listOverlayConfig() {
var config = this.callBase();
return extend({}, config, {
onContentReady: this._setItemsContainerZIndex.bind(this)
});
},
_setItemsContainerZIndex: function _setItemsContainerZIndex(e) {
var overlayZIndex = e.component.$content().css("zIndex");
this._toolbar._$toolbarItemsContainer.css("zIndex", overlayZIndex + 1);
},
_renderMenuPosition: function _renderMenuPosition(offset, animate) {
var $element = this._toolbar._$toolbarItemsContainer;
var pos = this._calculateItemsContainerOffset(offset);
if (animate) {
this._animateMenuToggling($element, pos, this._menuShown);
} else {
translator.move($element, { top: pos });
}
return this.callBase(offset, animate);
},
_calculateItemsContainerOffset: function _calculateItemsContainerOffset(offset) {
offset = (offset || 0) - 1;
var maxOffset = this._getItemsContainerHeight();
return offset * maxOffset;
},
_getItemsContainerHeight: function _getItemsContainerHeight() {
var semiHiddenHeight = this._toolbar._$toolbarItemsContainer.height() - this._toolbar.$element().height();
return semiHiddenHeight;
},
_listOutsideClickHandler: function _listOutsideClickHandler(e) {
var $target = $(e.target);
var isOverlayClick = $target.closest(this._listOverlay.$content()).length > 0;
var isItemsContainerClick = $target.closest(this._toolbar._$toolbarItemsContainer).length > 0;
if (!isOverlayClick && !isItemsContainerClick) {
this._toggleMenu(false, true);
}
}
});
module.exports = ListTopStrategy;
;