consul/ui-v2/app/helpers/dom-position.js

29 lines
773 B
JavaScript

import Helper from '@ember/component/helper';
import { inject as service } from '@ember/service';
export default Helper.extend({
dom: service('dom'),
compute: function([selector, id], hash) {
const $el = this.dom.element(selector);
const $refs = [$el.offsetParent, $el];
// TODO: helper probably needs to accept a `reference=` option
// with a selector to use as reference/root
if (selector.startsWith('#resolver:')) {
$refs.unshift($refs[0].offsetParent);
}
return $refs.reduce(
function(prev, item) {
prev.x += item.offsetLeft;
prev.y += item.offsetTop;
return prev;
},
{
x: 0,
y: 0,
height: $el.offsetHeight,
width: $el.offsetWidth,
}
);
},
});