diff options
| author | HJ <30-hj@users.noreply.git.pleroma.social> | 2019-09-26 05:27:59 +0000 |
|---|---|---|
| committer | HJ <30-hj@users.noreply.git.pleroma.social> | 2019-09-26 05:27:59 +0000 |
| commit | 501208d350a9bd0fbcafb13d70a2fa6182fb8cf3 (patch) | |
| tree | beb8a09c2033d5c3da6dcf49a1fe259e1986c4d0 /src/services | |
| parent | e55645aec16f083e4eedf6b01954b79689c244f1 (diff) | |
| parent | 836cb817d18f5e3ee6dab446633b8e05733c2a3a (diff) | |
Merge branch 'emoji-selector-update' into 'develop'
Emoji selector update
Closes #101
See merge request pleroma/pleroma-fe!895
Diffstat (limited to 'src/services')
| -rw-r--r-- | src/services/offset_finder/offset_finder.service.js | 31 |
1 files changed, 31 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..9034f8c8 --- /dev/null +++ b/src/services/offset_finder/offset_finder.service.js @@ -0,0 +1,31 @@ +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 { topPadding, leftPadding } = findPadding(child) + result.top += ignorePadding ? 0 : topPadding + result.left += ignorePadding ? 0 : leftPadding + } + + if (child.offsetParent && (parent === window || parent.contains(child.offsetParent) || parent === child.offsetParent)) { + return findOffset(child.offsetParent, parent, result, false) + } else { + if (parent !== window) { + const { topPadding, leftPadding } = findPadding(parent) + result.top += topPadding + result.left += leftPadding + } + return result + } +} + +const findPadding = (el) => { + const topPaddingStr = window.getComputedStyle(el)['padding-top'] + const topPadding = Number(topPaddingStr.substring(0, topPaddingStr.length - 2)) + const leftPaddingStr = window.getComputedStyle(el)['padding-left'] + const leftPadding = Number(leftPaddingStr.substring(0, leftPaddingStr.length - 2)) + + return { topPadding, leftPadding } +} |
