@kiwicom/orbit-components
Version:
Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com’s products.
31 lines (23 loc) • 876 B
JavaScript
import { POSITIONS } from "../consts";
const isInside = (p, canBe) => {
if (p === POSITIONS.TOP && canBe[p]) {
return POSITIONS.TOP;
}
if (p === POSITIONS.BOTTOM && canBe[p]) {
return POSITIONS.BOTTOM;
}
return false;
};
const calculateVerticalPosition = (desiredPositions, pos) => {
const canBe = {
[POSITIONS.TOP]: pos.containerTop - pos.popoverHeight > pos.windowScrollTop,
[POSITIONS.BOTTOM]: pos.containerTop - pos.windowScrollTop + pos.containerHeight + pos.popoverHeight < pos.windowHeight
};
const possiblePositions = desiredPositions.map(p => isInside(p, canBe)).filter(p => typeof p === "string"); // ordering in POSITIONS const is important
const posPosition = possiblePositions[0];
if (typeof posPosition === "string") {
return posPosition;
}
return POSITIONS.BOTTOM;
};
export default calculateVerticalPosition;