aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenry Jameson <me@hjkos.com>2019-09-25 00:21:55 +0300
committerHenry Jameson <me@hjkos.com>2019-09-25 00:21:55 +0300
commitdaa0e284c32cc8c97006e3a1701ab96ddfabfd30 (patch)
tree2f599b3b6ae3d8094110cec40964396d07df36c1
parentca92e294013e0773460516e5831c28e2ccf3d760 (diff)
forgotten file
-rw-r--r--src/services/offset_finder/offset_finder.service.js20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/services/offset_finder/offset_finder.service.js b/src/services/offset_finder/offset_finder.service.js
new file mode 100644
index 00000000..edee6412
--- /dev/null
+++ b/src/services/offset_finder/offset_finder.service.js
@@ -0,0 +1,20 @@
+export const findOffset = (child, parent, { top = 0, left = 0 } = {}, ignorePadding = true) => {
+ const result = {
+ top: top + child.offsetTop,
+ left: left + child.offsetLeft
+ }
+ if (!ignorePadding && child !== window) {
+ const topPaddingStr = window.getComputedStyle(child)['padding-top']
+ const topPadding = Number(topPaddingStr.substring(0, topPaddingStr.length - 2))
+ const leftPaddingStr = window.getComputedStyle(child)['padding-left']
+ const leftPadding = Number(leftPaddingStr.substring(0, leftPaddingStr.length - 2))
+ result.top += ignorePadding ? 0 : topPadding
+ result.left += ignorePadding ? 0 : leftPadding
+ }
+
+ if (child.offsetParent && (parent === window || parent.contains(child.offsetParent))) {
+ return findOffset(child.offsetParent, parent, result, false)
+ } else {
+ return result
+ }
+}