UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

144 lines (139 loc) 4.65 kB
/** * DevExtreme (cjs/ui/scheduler/tooltip_strategies/mobileTooltipStrategy.js) * Version: 22.1.9 * Build date: Tue Apr 18 2023 * * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; exports.MobileTooltipStrategy = void 0; var _size = require("../../../core/utils/size"); var _ui = _interopRequireDefault(require("../../overlay/ui.overlay")); var _tooltipStrategyBase = require("./tooltipStrategyBase"); var _window = require("../../../core/utils/window"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } } function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass) } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) { o.__proto__ = p; return o }; return _setPrototypeOf(o, p) } var SLIDE_PANEL_CLASS_NAME = "dx-scheduler-overlay-panel"; var MAX_TABLET_OVERLAY_HEIGHT_FACTOR = .9; var MAX_HEIGHT = { PHONE: 250, TABLET: "90%", DEFAULT: "auto" }; var MAX_WIDTH = { PHONE: "100%", TABLET: "80%" }; var animationConfig = { show: { type: "slide", duration: 300, from: { position: { my: "top", at: "bottom", of: (0, _window.getWindow)() } }, to: { position: { my: "center", at: "center", of: (0, _window.getWindow)() } } }, hide: { type: "slide", duration: 300, to: { position: { my: "top", at: "bottom", of: (0, _window.getWindow)() } }, from: { position: { my: "center", at: "center", of: (0, _window.getWindow)() } } } }; var createPhoneDeviceConfig = function(listHeight) { return { shading: false, width: MAX_WIDTH.PHONE, height: listHeight > MAX_HEIGHT.PHONE ? MAX_HEIGHT.PHONE : MAX_HEIGHT.DEFAULT, position: { my: "bottom", at: "bottom", of: (0, _window.getWindow)() } } }; var createTabletDeviceConfig = function(listHeight) { var currentMaxHeight = (0, _size.getHeight)((0, _window.getWindow)()) * MAX_TABLET_OVERLAY_HEIGHT_FACTOR; return { shading: true, width: MAX_WIDTH.TABLET, height: listHeight > currentMaxHeight ? MAX_HEIGHT.TABLET : MAX_HEIGHT.DEFAULT, position: { my: "center", at: "center", of: (0, _window.getWindow)() } } }; var MobileTooltipStrategy = function(_TooltipStrategyBase) { _inheritsLoose(MobileTooltipStrategy, _TooltipStrategyBase); function MobileTooltipStrategy() { return _TooltipStrategyBase.apply(this, arguments) || this } var _proto = MobileTooltipStrategy.prototype; _proto._shouldUseTarget = function() { return false }; _proto._onShowing = function() { var isTabletWidth = (0, _size.getWidth)((0, _window.getWindow)()) > 700; this._tooltip.option("height", MAX_HEIGHT.DEFAULT); var listHeight = (0, _size.getOuterHeight)(this._list.$element()); this._tooltip.option(isTabletWidth ? createTabletDeviceConfig(listHeight) : createPhoneDeviceConfig(listHeight)) }; _proto._createTooltip = function(target, dataList) { var _this = this; var element = this._createTooltipElement(SLIDE_PANEL_CLASS_NAME); return this._options.createComponent(element, _ui.default, { target: (0, _window.getWindow)(), hideOnOutsideClick: true, animation: animationConfig, onShowing: function() { return _this._onShowing() }, onShown: this._onShown.bind(this), contentTemplate: this._getContentTemplate(dataList), copyRootClassesToWrapper: true, _ignoreCopyRootClassesToWrapperDeprecation: true }) }; return MobileTooltipStrategy }(_tooltipStrategyBase.TooltipStrategyBase); exports.MobileTooltipStrategy = MobileTooltipStrategy;