@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.
53 lines (44 loc) • 2.05 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";
var resolveContainerAlign = function resolveContainerAlign(_ref) {
var align = _ref.align,
theme = _ref.theme,
position = _ref.position,
containerTop = _ref.containerTop,
_ref$customContainerO = _ref.customContainerOffset,
customContainerOffset = _ref$customContainerO === void 0 ? 0 : _ref$customContainerO,
containerLeft = _ref.containerLeft,
containerHeight = _ref.containerHeight,
containerWidth = _ref.containerWidth,
tooltipHeight = _ref.tooltipHeight,
tooltipWidth = _ref.tooltipWidth;
var offset = (theme.rtl ? -customContainerOffset - 15 : customContainerOffset) || 0;
if (isAlignCenter(align)) {
if (isHorizontal(position)) {
return css(["top:", "px;"], Math.floor(containerTop + containerHeight / 2 - tooltipHeight / 2 - offset));
}
if (isVertical(position)) {
return css(["left:", "px;"], Math.floor(containerLeft + containerWidth / 2 - tooltipWidth / 2 - offset));
}
return null;
}
if (isAlignStart(align)) {
if (isHorizontal(position)) {
return css(["top:", "px;"], Math.floor(containerTop - parseFloat(TOOLTIP_ARROW_SIZE) - offset));
}
if (isVertical(position)) {
return css(["left:", "px;"], Math.floor(containerLeft + offset + 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) + offset));
}
if (isVertical(position)) {
return css(["left:", "px;"], Math.floor(containerLeft + containerWidth - tooltipWidth + parseFloat(TOOLTIP_ARROW_SIZE) + offset));
}
}
return null;
};
export default resolveContainerAlign;