UNPKG

zent

Version:

一套前端设计语言和基于React的实现

70 lines (46 loc) 2.1 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _getViewportSize = require('../../utils/dom/getViewportSize'); var _getViewportSize2 = _interopRequireDefault(_getViewportSize); var _create = require('./create'); var _create2 = _interopRequireDefault(_create); var _bottomLeft = require('./bottom-left'); var _bottomLeft2 = _interopRequireDefault(_bottomLeft); var _bottomRight = require('./bottom-right'); var _bottomRight2 = _interopRequireDefault(_bottomRight); var _topLeft = require('./top-left'); var _topLeft2 = _interopRequireDefault(_topLeft); var _topRight = require('./top-right'); var _topRight2 = _interopRequireDefault(_topRight); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var positionMap = { BottomLeft: _bottomLeft2['default'], BottomRight: _bottomRight2['default'], TopLeft: _topLeft2['default'], TopRight: _topRight2['default'] }; function locate(anchorBoundingBox, containerBoundingBox, contentDimension, options) { var viewport = (0, _getViewportSize2['default'])(); var anchorBoundingBoxViewport = options.anchorBoundingBoxViewport, cushion = options.cushion; var horizontal = void 0; var vertical = void 0; // 只有当左边放不下,并且右边能够放下的时候才移动到右边 if (anchorBoundingBoxViewport.left + contentDimension.width > viewport.width && anchorBoundingBoxViewport.right - contentDimension.width > 0) { horizontal = 'Right'; } else { horizontal = 'Left'; } // 只有当上面放不下,并且下面能够放下时才移动到下面 if (anchorBoundingBoxViewport.top - cushion - contentDimension.height < 0 && anchorBoundingBoxViewport.bottom + cushion + contentDimension.height < viewport.height) { vertical = 'Bottom'; } else { vertical = 'Top'; } var key = '' + vertical + horizontal; return positionMap[key].locate(anchorBoundingBox, containerBoundingBox, contentDimension, options); } var AutoTopLeft = (0, _create2['default'])(locate); exports['default'] = AutoTopLeft;