@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.
49 lines (41 loc) • 1.51 kB
JavaScript
import { css } from "styled-components";
import { isHorizontal, isVertical } from "./isPosition";
import { isAlignCenter, isAlignEnd, isAlignStart } from "./isAlign";
import { TOOLTIP_ARROW_SIZE, TOOLTIP_PADDING } from "../consts";
const resolveContainerAlign = ({
align,
position,
containerTop,
containerLeft,
containerHeight,
containerWidth,
tooltipHeight,
tooltipWidth
}) => {
if (isAlignCenter(align)) {
if (isHorizontal(position)) {
return css(["top:", "px;"], Math.floor(containerTop + containerHeight / 2 - tooltipHeight / 2));
}
if (isVertical(position)) {
return css(["left:", "px;"], Math.floor(containerLeft + containerWidth / 2 - tooltipWidth / 2));
}
return null;
}
if (isAlignStart(align)) {
if (isHorizontal(position)) {
return css(["top:", "px;"], Math.floor(containerTop - parseFloat(TOOLTIP_ARROW_SIZE)));
}
if (isVertical(position)) {
return css(["left:", "px;"], Math.floor(containerLeft + containerWidth / 2 - parseFloat(TOOLTIP_PADDING) - parseFloat(TOOLTIP_ARROW_SIZE)));
}
} else if (isAlignEnd(align)) {
if (isHorizontal(position)) {
return css(["top:", "px;"], Math.floor(containerTop - tooltipHeight + containerHeight + parseFloat(TOOLTIP_ARROW_SIZE)));
}
if (isVertical(position)) {
return css(["left:", "px;"], Math.floor(containerLeft + containerWidth - tooltipWidth + parseFloat(TOOLTIP_ARROW_SIZE)));
}
}
return null;
};
export default resolveContainerAlign;