@flexis/ui
Version:
Styleless React Components
42 lines (37 loc) • 2.84 kB
JavaScript
/**
* Move element from overflow.
* @param element - Element to set position.
* @param positionTop - Top position of element.
* @param positionLeft - Left position of element.
* @return Overflow offset was set or not.
*/
export default function setOverflowOffset(element, positionTop, positionLeft) {
var _document$documentEle = document.documentElement,
clientWidth = _document$documentEle.clientWidth,
clientHeight = _document$documentEle.clientHeight;
var style = element.style;
var _element$getBoundingC = element.getBoundingClientRect(),
top = _element$getBoundingC.top,
left = _element$getBoundingC.left,
width = _element$getBoundingC.width,
height = _element$getBoundingC.height;
var right = clientWidth - (left + width);
var bottom = clientHeight - (top + height);
var withOverflowOffset = false;
if (top < 0) {
style.top = "".concat(positionTop - top, "px");
withOverflowOffset = true;
} else if (bottom < 0) {
style.top = "".concat(positionTop + bottom, "px");
withOverflowOffset = true;
}
if (right < 0) {
style.left = "".concat(positionLeft + right, "px");
withOverflowOffset = true;
} else if (left < 0) {
style.left = "".concat(positionLeft - left, "px");
withOverflowOffset = true;
}
return withOverflowOffset;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9zZXRPdmVyZmxvd09mZnNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztBQU9BLGVBQWMsU0FBVSxpQkFBVixDQUNiLE9BRGEsRUFFYixXQUZhLEVBR2IsWUFIYSxFQUdPO0FBQUEsOEJBTWhCLFFBQVEsQ0FBQyxlQU5PO0FBQUEsTUFJbkIsV0FKbUIseUJBSW5CLFdBSm1CO0FBQUEsTUFLbkIsWUFMbUIseUJBS25CLFlBTG1CO0FBQUEsTUFRbkIsS0FSbUIsR0FTaEIsT0FUZ0IsQ0FRbkIsS0FSbUI7O0FBQUEsOEJBZWhCLE9BQU8sQ0FBQyxxQkFBUixFQWZnQjtBQUFBLE1BV25CLEdBWG1CLHlCQVduQixHQVhtQjtBQUFBLE1BWW5CLElBWm1CLHlCQVluQixJQVptQjtBQUFBLE1BYW5CLEtBYm1CLHlCQWFuQixLQWJtQjtBQUFBLE1BY25CLE1BZG1CLHlCQWNuQixNQWRtQjs7QUFnQnBCLE1BQU0sS0FBSyxHQUFHLFdBQVcsSUFBSSxJQUFJLEdBQUcsS0FBWCxDQUF6QjtBQUNBLE1BQU0sTUFBTSxHQUFHLFlBQVksSUFBSSxHQUFHLEdBQUcsTUFBVixDQUEzQjtBQUNBLE1BQUksa0JBQWtCLEdBQUcsS0FBekI7O0FBRUEsTUFBSSxHQUFHLEdBQUcsQ0FBVixFQUFhO0FBQ1osSUFBQSxLQUFLLENBQUMsR0FBTixhQUFlLFdBQVcsR0FBRyxHQUE3QjtBQUNBLElBQUEsa0JBQWtCLEdBQUcsSUFBckI7QUFDQSxHQUhELE1BSUEsSUFBSSxNQUFNLEdBQUcsQ0FBYixFQUFnQjtBQUNmLElBQUEsS0FBSyxDQUFDLEdBQU4sYUFBZSxXQUFXLEdBQUcsTUFBN0I7QUFDQSxJQUFBLGtCQUFrQixHQUFHLElBQXJCO0FBQ0E7O0FBRUQsTUFBSSxLQUFLLEdBQUcsQ0FBWixFQUFlO0FBQ2QsSUFBQSxLQUFLLENBQUMsSUFBTixhQUFnQixZQUFZLEdBQUcsS0FBL0I7QUFDQSxJQUFBLGtCQUFrQixHQUFHLElBQXJCO0FBQ0EsR0FIRCxNQUlBLElBQUksSUFBSSxHQUFHLENBQVgsRUFBYztBQUNiLElBQUEsS0FBSyxDQUFDLElBQU4sYUFBZ0IsWUFBWSxHQUFHLElBQS9CO0FBQ0EsSUFBQSxrQkFBa0IsR0FBRyxJQUFyQjtBQUNBOztBQUVELFNBQU8sa0JBQVA7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==