UNPKG

@usj/vue-components

Version:

VueJS components used internally by USJ

42 lines (30 loc) 1.39 kB
const margin = 8 const isAboveOfViewport = (element, position) => { return position.top <= margin - parseInt(getComputedStyle(element).marginTop, 10) } const isBelowOfViewport = (element, position) => { return position.top + element.offsetHeight + margin >= window.innerHeight - parseInt(getComputedStyle(element).marginTop, 10) } const isOnTheLeftOfViewport = (element, position) => { return position.left <= margin - parseInt(getComputedStyle(element).marginLeft, 10) } const isOnTheRightOfViewport = (element, position) => { return position.left + element.offsetWidth + margin >= window.innerWidth - parseInt(getComputedStyle(element).marginLeft, 10) } const getInViewPosition = (element, position) => { let computedStyle = getComputedStyle(element) if (isAboveOfViewport(element, position)) { position.top = margin - parseInt(computedStyle.marginTop, 10) } if (isOnTheLeftOfViewport(element, position)) { position.left = margin - parseInt(computedStyle.marginLeft, 10) } if (isOnTheRightOfViewport(element, position)) { position.left = window.innerWidth - margin - element.offsetWidth - parseInt(computedStyle.marginLeft, 10) } if (isBelowOfViewport(element, position)) { position.top = window.innerHeight - margin - element.offsetHeight - parseInt(computedStyle.marginTop, 10) } return position } export default getInViewPosition