UNPKG

@flexis/ui

Version:

Styleless React Components

33 lines 2.6 kB
/** * 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) { const { clientWidth, clientHeight } = document.documentElement; const { style } = element; const { top, left, width, height } = element.getBoundingClientRect(); const right = clientWidth - (left + width); const bottom = clientHeight - (top + height); let withOverflowOffset = false; if (top < 0) { style.top = `${positionTop - top}px`; withOverflowOffset = true; } else if (bottom < 0) { style.top = `${positionTop + bottom}px`; withOverflowOffset = true; } if (right < 0) { style.left = `${positionLeft + right}px`; withOverflowOffset = true; } else if (left < 0) { style.left = `${positionLeft - left}px`; withOverflowOffset = true; } return withOverflowOffset; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0T3ZlcmZsb3dPZmZzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9jb21tb24vc2V0T3ZlcmZsb3dPZmZzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE9BQU8sVUFBVSxpQkFBaUIsQ0FDeEMsT0FBb0IsRUFDcEIsV0FBbUIsRUFDbkIsWUFBb0I7SUFHcEIsTUFBTSxFQUNMLFdBQVcsRUFDWCxZQUFZLEVBQ1osR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO0lBQzdCLE1BQU0sRUFDTCxLQUFLLEVBQ0wsR0FBRyxPQUFPLENBQUM7SUFDWixNQUFNLEVBQ0wsR0FBRyxFQUNILElBQUksRUFDSixLQUFLLEVBQ0wsTUFBTSxFQUNOLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDcEMsTUFBTSxLQUFLLEdBQUcsV0FBVyxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQzNDLE1BQU0sTUFBTSxHQUFHLFlBQVksR0FBRyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQztJQUM3QyxJQUFJLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUUvQixJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUU7UUFDWixLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsV0FBVyxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ3JDLGtCQUFrQixHQUFHLElBQUksQ0FBQztLQUMxQjtTQUNELElBQUksTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNmLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUM7UUFDeEMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0tBQzFCO0lBRUQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1FBQ2QsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLFlBQVksR0FBRyxLQUFLLElBQUksQ0FBQztRQUN6QyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7S0FDMUI7U0FDRCxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUU7UUFDYixLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDO1FBQ3hDLGtCQUFrQixHQUFHLElBQUksQ0FBQztLQUMxQjtJQUVELE9BQU8sa0JBQWtCLENBQUM7QUFDM0IsQ0FBQyJ9