diff options
Diffstat (limited to 'src/static/js/client/sticky-heading.js')
-rw-r--r-- | src/static/js/client/sticky-heading.js | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/src/static/js/client/sticky-heading.js b/src/static/js/client/sticky-heading.js index 1020cab3..b65574d0 100644 --- a/src/static/js/client/sticky-heading.js +++ b/src/static/js/client/sticky-heading.js @@ -7,7 +7,10 @@ import {cssProp, dispatchInternalEvent, templateContent} export const info = { id: 'stickyHeadingInfo', + stickyRoots: null, + stickyContainers: null, + staticContainers: null, stickyHeadingRows: null, stickyHeadings: null, @@ -20,10 +23,10 @@ export const info = { contentContainers: null, contentHeadings: null, + contentCoverColumns: null, contentCovers: null, contentCoversReveal: null, - imaginaryStaticHeadings: null, referenceCollapsedHeading: null, state: { @@ -37,8 +40,16 @@ export const info = { }; export function getPageReferences() { + info.stickyRoots = + Array.from(document.querySelectorAll('.content-sticky-heading-root:not([inert])')); + info.stickyContainers = - Array.from(document.getElementsByClassName('content-sticky-heading-container')); + info.stickyRoots + .map(el => el.querySelector('.content-sticky-heading-container')); + + info.staticContainers = + info.stickyRoots + .map(el => el.nextElementSibling); info.stickyCoverContainers = info.stickyContainers @@ -72,9 +83,13 @@ export function getPageReferences() { info.stickyContainers .map(el => el.closest('.content-sticky-heading-root').parentElement); - info.contentCovers = + info.contentCoverColumns = info.contentContainers - .map(el => el.querySelector('#cover-art-container')); + .map(el => el.querySelector('#artwork-column')); + + info.contentCovers = + info.contentCoverColumns + .map(el => el ? el.querySelector('.cover-artwork') : null); info.contentCoversReveal = info.contentCovers @@ -84,10 +99,6 @@ export function getPageReferences() { info.contentContainers .map(el => Array.from(el.querySelectorAll('.content-heading'))); - info.imaginaryStaticHeadings = - info.contentContainers - .map(el => el.querySelector('.imaginary-static-heading-root')); - info.referenceCollapsedHeading = info.stickyHeadings .map(el => el.querySelector('.reference-collapsed-heading')); @@ -182,16 +193,16 @@ function updateStuckStatus(index) { function updateCollapseStatus(index) { const stickyContainer = info.stickyContainers[index]; + const staticContainer = info.staticContainers[index]; const stickyHeading = info.stickyHeadings[index]; - const imaginaryStaticHeading = info.imaginaryStaticHeadings[index]; const referenceCollapsedHeading = info.referenceCollapsedHeading[index]; const {height: uncollapsedHeight} = stickyHeading.getBoundingClientRect(); const {height: collapsedHeight} = referenceCollapsedHeading.getBoundingClientRect(); if ( - imaginaryStaticHeading.getBoundingClientRect().bottom < 4 || - imaginaryStaticHeading.getBoundingClientRect().top < -80 + staticContainer.getBoundingClientRect().bottom < 4 || + staticContainer.getBoundingClientRect().top < -80 ) { if (!stickyContainer.classList.contains('collapse')) { stickyContainer.classList.add('collapse'); @@ -206,10 +217,10 @@ function updateCollapseStatus(index) { function updateStickyCoverVisibility(index) { const stickyCoverContainer = info.stickyCoverContainers[index]; const stickyContainer = info.stickyContainers[index]; - const contentCover = info.contentCovers[index]; + const contentCoverColumn = info.contentCoverColumns[index]; - if (contentCover && stickyCoverContainer) { - if (contentCover.getBoundingClientRect().bottom < 4) { + if (contentCoverColumn && stickyCoverContainer) { + if (contentCoverColumn.getBoundingClientRect().bottom < 4) { stickyCoverContainer.classList.add('visible'); stickyContainer.classList.add('cover-visible'); } else { |