Donald Lucke
Feb 26, 2017
{ let columns; let linkFolderTitle = data.config.looseLinksTitle; let linkFolderPages = []; let textAlign = ""; const findBreakPoint = () => { if (window.matchMedia("(max-width: 860px)").matches) { columns = 1; destroyMasonry(); textAlign = data.config.mobileTextAlign; createMasonry(); } else if (window.matchMedia("(max-width: 1199px)").matches) { columns = data.config.numOfColumnsTablet != '' ? data.config.numOfColumnsTablet : 2; destroyMasonry(); textAlign = data.config.tabletTextAlign; createMasonry(); } else if (window.matchMedia("(min-width: 1200px)").matches) { columns = data.config.numOfColumnsDesktop != '' ? data.config.numOfColumnsDesktop : 2; destroyMasonry(); textAlign = data.config.desktopTextAlign; createMasonry(); } } const titleCase = (pageTitle) => { let separatePageTitle = pageTitle.toLowerCase().split(" "); for (let i = 0; i < separatePageTitle.length; i++) { if(i == 0 || !['and', 'a', 'an', 'but', 'for', 'at', 'by', 'to', 'of'].includes(separatePageTitle[i])) { separatePageTitle[i] = separatePageTitle[i].charAt(0).toUpperCase() + separatePageTitle[i].substring(1); } } return separatePageTitle.join(" "); } const createNavBlock = (navBlock) => { let navBlockDiv = document.createElement('div') navBlockDiv.classList.add('footer-nav-block'); let navBlockTitleDiv = document.createElement('div'); navBlockTitleDiv.classList.add('footer-nav-title', 'footer-nav-text'); navBlockTitleDiv.appendChild(document.createTextNode( data.config.titleCaseMainNav ? titleCase(navBlock.title) : navBlock.title)); navBlockDiv.appendChild(navBlockTitleDiv); navBlock.subNav.forEach(link => { if(link.visible != false && link.path != '#') navBlockDiv.appendChild(createNavLink(link)); }); return navBlockDiv; } const createNavLink = (navLink) => { navLink.path = inIframe() ? getPreviewUrl(navLink.path) : navLink.path; let activePath = document.URL.substr(document.URL.indexOf(".com") + 4); let navBlockLink = document.createElement('a'); let navBlockLinkText = document.createTextNode(data.config.titleCaseSubNav ? titleCase(navLink.title) : navLink.title); navBlockLink.appendChild(navBlockLinkText); navBlockLink.classList.add('footer-nav-link', 'footer-nav-text') if(data.config.underlineOnHover) navBlockLink.classList.add('footer-nav-link-hover-underline'); navBlockLink.href = navLink.path; if(navLink.path == activePath) { navBlockLink.style.setProperty('color', data.config.footerNavLinkActive, "important"); if(data.config.underlineOnHover) navBlockLink.style.setProperty('text-decoration', 'underline', "important"); } return navBlockLink; } const createMasonry = () => { let linkFolderPages = []; for (let i = 0; i < columns; i++) { let columnItem = document.createElement('div'); columnItem.classList.add('masonry-grid-column'); textAlign == "LEFT" || textAlign == "RIGHT" ? columnItem.style.width = 'fit-content' : columnItem.style.width = '100%'; columnItem.style.textAlign = textAlign; element.querySelector('.grid-display-wrapper').appendChild(columnItem); } if(data.config.useSpecificFolders == true) { let newNavLinks = []; let folders = data.config.folders; for(let i = 0; i < folders.length; i++) { let currentFolder = data.config.folders[i]["currentFolder"]; pages = navLinks.filter( (page) => page.title.toLowerCase() == currentFolder.toLowerCase() )[0]; newNavLinks.push(pages); } navLinks = newNavLinks; } let currentColumn = 0; navLinks.forEach((navBlockObj) => { if(navBlockObj.title.toLowerCase() == 'home' || navBlockObj.visible == false) return; if(navBlockObj.subNav.length == 0) { linkFolderPages.push(navBlockObj); return; } if(navBlockObj.path != '#') { if(navBlockObj.path == navBlockObj.subNav[0].path) return; newNavBlockObj = {...navBlockObj}; newNavBlockObj.subNav = []; navBlockObj.subNav.unshift(newNavBlockObj); navBlockObj.path = '#'; } if (data.config.sequential) { if (currentColumn >= columns) currentColumn = 0; } else { let columnHeights = []; for (let i = 0; i < columns; i++) { columnHeights.push($(element).find(`.masonry-grid-column`).eq(i).height()); } currentColumn = columnHeights.indexOf(Math.min(...columnHeights)); } element.querySelectorAll('.masonry-grid-column')[currentColumn].appendChild(createNavBlock(navBlockObj)); if(data.config.sequential) currentColumn++; }); linkFolderPages = linkFolderPages.filter(link => link.path != '#'); if(linkFolderPages.length == 0) return; if (data.config.sequential) { if (currentColumn >= columns) currentColumn = 0; } let looseLinkNavBlock = { title: linkFolderTitle, subNav: linkFolderPages, path: "#" }; element.querySelectorAll('.masonry-grid-column')[currentColumn].appendChild(createNavBlock(looseLinkNavBlock)); } const removeAllChildNodes = (parent) => { while (parent.firstChild) { parent.removeChild(parent.firstChild); } } const destroyMasonry = () => { removeAllChildNodes(element.querySelector('.grid-display-wrapper')); } let resizeId; let width = $(window).width(), height = $(window).height(); $(window).resize(function () { if ($(window).width() != width || $(window).height() != height) { clearTimeout(resizeId); resizeId = setTimeout(findBreakPoint, 500); } }); findBreakPoint();}navPromise.then((res) => { let navLinks = res; initFooter(navLinks);}); };