UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

153 lines (149 loc) 5.4 kB
/** * DevExtreme (cjs/__internal/ui/popup/m_popup_position_controller.js) * Version: 24.2.7 * Build date: Mon Apr 28 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.PopupPositionController = void 0; var _translator = require("../../../common/core/animation/translator"); var _renderer = _interopRequireDefault(require("../../../core/renderer")); var _view_port = require("../../../core/utils/view_port"); var _m_overlay_position_controller = require("../../ui/overlay/m_overlay_position_controller"); var _m_window = _interopRequireDefault(require("../../core/utils/m_window")); const _excluded = ["fullScreen", "forceApplyBindings", "dragOutsideBoundary", "dragAndResizeArea", "outsideDragFactor"]; function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } function _objectWithoutPropertiesLoose(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t } const window = _m_window.default.getWindow(); class PopupPositionController extends _m_overlay_position_controller.OverlayPositionController { constructor(_ref) { let { fullScreen: fullScreen, forceApplyBindings: forceApplyBindings, dragOutsideBoundary: dragOutsideBoundary, dragAndResizeArea: dragAndResizeArea, outsideDragFactor: outsideDragFactor } = _ref, args = _objectWithoutPropertiesLoose(_ref, _excluded); super(args); this._props = _extends({}, this._props, { fullScreen: fullScreen, forceApplyBindings: forceApplyBindings, dragOutsideBoundary: dragOutsideBoundary, dragAndResizeArea: dragAndResizeArea, outsideDragFactor: outsideDragFactor }); this._$dragResizeContainer = void 0; this._updateDragResizeContainer() } set fullScreen(fullScreen) { this._props.fullScreen = fullScreen; if (fullScreen) { this._fullScreenEnabled() } else { this._fullScreenDisabled() } } get $dragResizeContainer() { return this._$dragResizeContainer } get outsideDragFactor() { if (this._props.dragOutsideBoundary) { return 1 } return this._props.outsideDragFactor } set dragAndResizeArea(dragAndResizeArea) { this._props.dragAndResizeArea = dragAndResizeArea; this._updateDragResizeContainer() } set dragOutsideBoundary(dragOutsideBoundary) { this._props.dragOutsideBoundary = dragOutsideBoundary; this._updateDragResizeContainer() } set outsideDragFactor(outsideDragFactor) { this._props.outsideDragFactor = outsideDragFactor } updateContainer(containerProp) { super.updateContainer(containerProp); this._updateDragResizeContainer() } dragHandled() { this.restorePositionOnNextRender(false) } resizeHandled() { this.restorePositionOnNextRender(false) } positionContent() { if (this._props.fullScreen) { (0, _translator.move)(this._$content, { top: 0, left: 0 }); this.detectVisualPositionChange() } else { var _this$_props$forceApp, _this$_props; null === (_this$_props$forceApp = (_this$_props = this._props).forceApplyBindings) || void 0 === _this$_props$forceApp || _this$_props$forceApp.call(_this$_props); super.positionContent() } } _updateDragResizeContainer() { this._$dragResizeContainer = this._getDragResizeContainer() } _getDragResizeContainer() { if (this._props.dragOutsideBoundary) { return (0, _renderer.default)(window) } if (this._props.dragAndResizeArea) { return (0, _renderer.default)(this._props.dragAndResizeArea) } const isContainerDefined = (0, _view_port.originalViewPort)().get(0) || this._props.container; return isContainerDefined ? this._$markupContainer : (0, _renderer.default)(window) } _getVisualContainer() { if (this._props.fullScreen) { return (0, _renderer.default)(window) } return super._getVisualContainer() } _fullScreenEnabled() { this.restorePositionOnNextRender(false) } _fullScreenDisabled() { this.restorePositionOnNextRender(true) } } exports.PopupPositionController = PopupPositionController;