UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

124 lines (123 loc) 4.41 kB
/** * DevExtreme (esm/__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/ */ import _extends from "@babel/runtime/helpers/esm/extends"; import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose"; const _excluded = ["fullScreen", "forceApplyBindings", "dragOutsideBoundary", "dragAndResizeArea", "outsideDragFactor"]; import { move } from "../../../common/core/animation/translator"; import $ from "../../../core/renderer"; import { originalViewPort } from "../../../core/utils/view_port"; import { OverlayPositionController } from "../../ui/overlay/m_overlay_position_controller"; import windowUtils from "../../core/utils/m_window"; const window = windowUtils.getWindow(); class PopupPositionController extends 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) { 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 $(window) } if (this._props.dragAndResizeArea) { return $(this._props.dragAndResizeArea) } const isContainerDefined = originalViewPort().get(0) || this._props.container; return isContainerDefined ? this._$markupContainer : $(window) } _getVisualContainer() { if (this._props.fullScreen) { return $(window) } return super._getVisualContainer() } _fullScreenEnabled() { this.restorePositionOnNextRender(false) } _fullScreenDisabled() { this.restorePositionOnNextRender(true) } } export { PopupPositionController };