UNPKG

ukelli-ui

Version:

ukelli-ui 是基于 React 的 UI 库,提供简约和功能齐全的组件,可高度定制的组件接口,灵活的配置,提供给开发者另一种开发思路,也致力于尝试不同的组件使用和开发方向。

68 lines (57 loc) 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getLeft = getLeft; exports.getRight = getRight; exports.getTop = getTop; exports.getBottom = getBottom; var _utils = require("../utils"); var ScreenWidth = (0, _utils.getScreenWidth)(); var ScreenHeight = (0, _utils.getScreenHeight)(); var verticalOffset = 14; var horizontalOffset = 4; window.onresize = function () { ScreenWidth = (0, _utils.getScreenWidth)(); ScreenHeight = (0, _utils.getScreenHeight)(); }; /** * 计算最终的 top 和 left,并且根据浏览器可视边界判断最终结果 */ function getLeft(offsetTop, offsetLeft, offsetWidth, offsetHeight, elemWidth, elemHeight) { var fromRight = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false; var left = offsetLeft - elemWidth - 12; if (left - elemWidth <= 0 && !fromRight) return getRight.apply(void 0, arguments); // if(left + elemWidth > ScreenWidth) left = ScreenWidth - elemWidth; return { top: offsetTop - horizontalOffset, position: 'left', left: left }; } function getRight(offsetTop, offsetLeft, offsetWidth, offsetHeight, elemWidth, elemHeight) { var left = offsetLeft + offsetWidth + 15; if (left + elemWidth >= ScreenWidth) return getLeft.apply(void 0, Array.prototype.slice.call(arguments).concat([true])); // if(left - elemWidth <= 0) left = ScreenWidth - elemWidth; return { top: offsetTop - horizontalOffset, position: 'right', left: left }; } function getTop(offsetTop, offsetLeft, offsetWidth, offsetHeight, elemWidth, elemHeight) { var top = offsetTop - elemHeight - offsetHeight / 2; if (top - elemHeight <= 0) return getBottom.apply(void 0, arguments); return { top: top, position: 'top', left: offsetLeft - verticalOffset }; } function getBottom(offsetTop, offsetLeft, offsetWidth, offsetHeight, elemWidth, elemHeight) { var top = offsetTop + offsetHeight + offsetHeight / 2; if (top + elemHeight >= ScreenHeight) return getTop.apply(void 0, arguments); return { top: top, position: 'bottom', left: offsetLeft - verticalOffset }; }