mirror of
https://github.com/vyos/vyos-documentation.git
synced 2025-10-26 08:41:46 +01:00
93 lines
2.7 KiB
JavaScript
93 lines
2.7 KiB
JavaScript
$(document).ready(function() {
|
|
insertIframe()
|
|
|
|
const options = {
|
|
threshold: 0.01,
|
|
}
|
|
const divDoc = document.querySelector('.iframe-container')
|
|
const innerSidebar = $('.wy-side-scroll')
|
|
|
|
intersectionObserver(options, divDoc, innerSidebar)
|
|
|
|
$(window).resize(function() {
|
|
intersectionObserver(options, divDoc, innerSidebar)
|
|
})
|
|
|
|
$(window).scroll(function() {
|
|
intersectionObserver(options, divDoc, innerSidebar)
|
|
})
|
|
});
|
|
|
|
function intersectionObserver(options, divDoc, innerSidebar) {
|
|
// we delete any inline-styles from innerSidebar
|
|
if($(innerSidebar).attr('style')) {
|
|
innerSidebar.removeAttr('style')
|
|
}
|
|
const screenWidth = $(window).width()
|
|
const sidebar = $('.wy-nav-side')
|
|
const documentHeight = $(document).height()
|
|
const iframeHeight = $('.iframe-container').height()
|
|
const currentPosition = $(document).scrollTop()
|
|
const additionalPaddingFromSidebar = screenWidth > 991 ? 70 : 83
|
|
const heightThatIsAddedByPaddings = 36
|
|
const resultOfSums = documentHeight -
|
|
iframeHeight -
|
|
currentPosition -
|
|
additionalPaddingFromSidebar -
|
|
heightThatIsAddedByPaddings
|
|
const heightOfAdditionalButton = 50
|
|
|
|
const onEntry = (entries, observer) => {
|
|
entries.forEach(entry => {
|
|
if(entry.isIntersecting) {
|
|
if(resultOfSums <= 70) {
|
|
$(sidebar).hide()
|
|
return
|
|
}
|
|
$(sidebar).show()
|
|
$(sidebar).height(resultOfSums)
|
|
$(sidebar).css('margin-bottom', '20px')
|
|
$(innerSidebar).removeAttr('style')
|
|
$(innerSidebar).height(resultOfSums - heightOfAdditionalButton)
|
|
return
|
|
} else {
|
|
$(sidebar).removeAttr('style')
|
|
$(innerSidebar).removeAttr('style')
|
|
}
|
|
})
|
|
}
|
|
const observer = new IntersectionObserver(onEntry, options);
|
|
observer.observe(divDoc)
|
|
|
|
if($(innerSidebar).attr('style')) {
|
|
observer.unobserve(divDoc)
|
|
}
|
|
|
|
determineHeightOfFooterContainer()
|
|
|
|
}
|
|
|
|
function determineHeightOfFooterContainer() {
|
|
const iframeFooter= $('#vyos-footer-iframe');
|
|
const title = window.document.getElementsByTagName('title')?.[0]?.text;
|
|
const iframeContainer = $('.iframe-container')
|
|
const href = window.location.href;
|
|
|
|
window.addEventListener('message',function(message){
|
|
if(message.data.footerIframeHeight){
|
|
$(iframeFooter).css('min-height', `${message.data.footerIframeHeight + 1}px`)
|
|
$(iframeContainer).height(message.data.footerIframeHeight + 1)
|
|
iframeFooter[0].contentWindow.postMessage({title, href},'*');
|
|
}
|
|
})
|
|
}
|
|
|
|
function insertIframe() {
|
|
const body = $('.wy-body-for-nav')
|
|
body.append(divWithIframe)
|
|
}
|
|
|
|
const divWithIframe = `<div class="iframe-container">
|
|
<iframe src='https://vyos.io/iframes/footer' id='vyos-footer-iframe'></iframe>
|
|
</div>`
|