react-elegant-ui
Version:
Elegant UI components, made by BEM best practices for react
41 lines • 1.29 kB
JavaScript
// Don't use const from popper such as they is not export in commonjs bundle
// This make problems while testing (for example with jest)
// Original issue: https://github.com/popperjs/popper-core/issues/1259
export var top = 'top';
export var left = 'left';
export var right = 'right';
export var bottom = 'bottom';
export function getLayoutRect(element) {
return {
x: element.offsetLeft,
y: element.offsetTop,
width: element.offsetWidth,
height: element.offsetHeight
};
}
export default function getBasePlacement(placement) {
return placement.split('-')[0];
}
export function distanceAndSkiddingToXY(placement, offset) {
var basePlacement = getBasePlacement(placement);
var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
var skidding = offset[0] || 0;
var distance = (offset[1] || 0) * invertDistance;
return [left, right].indexOf(basePlacement) >= 0 ? {
x: distance,
y: skidding
} : {
x: skidding,
y: distance
};
}
export function getElementsFromRefs(boundary) {
var refs = Array.isArray(boundary) ? boundary : [boundary];
var elements = refs.reduce(function (acc, ref) {
if (ref && ref.current) {
acc.push(ref.current);
}
return acc;
}, []);
return elements.length ? elements : undefined;
}