console.log('RUNNING ELMWOOD AMENITIES.JS'); var Webflow = Webflow || []; Webflow.push(function () { const dropdownGroups = document.querySelectorAll('[fc-dropdown = group]'); setupDropdownGroups(dropdownGroups); if (sessionStorage['fc-dropdown-id'] !== undefined) openTargetDropdown(); else { openAutomaticDropdown(); window.addEventListener('resize', function () { openAutomaticDropdown(); }); } }); Webflow.push(function () { const sources = document.querySelectorAll('[fc-dropdown-source]'); if (sources.length <= 0) return; for (const source of sources) { source.addEventListener('click', function (event) { const identifier = source.getAttribute('fc-dropdown-source'); const link = source.getAttribute('href'); event.preventDefault(); sessionStorage['fc-dropdown-id'] = identifier; window.location = link; }); } }); function setupDropdownGroups(dropdownGroups) { if (dropdownGroups === null) return; for (const group of dropdownGroups) { const dropdowns = group.querySelectorAll('.w-dropdown'); for (const dropdown of dropdowns) { dropdown.addEventListener('click', function () { group.interacted = true; }); } } } function openTargetDropdown() { const identifier = sessionStorage['fc-dropdown-id']; sessionStorage.removeItem('fc-dropdown-id'); const targets = document.querySelectorAll('[fc-dropdown-target]'); let targetIds = []; for (const target of targets) targetIds.push(target.getAttribute('fc-dropdown-target')); for (let i = 0; i < targetIds.length; i++) { if (identifier === targetIds[i]) { const dropdownGroup = targets[i].closest('[fc-dropdown = group]'); if (dropdownGroup !== null) dropdownGroup.interacted = true; openDropdown(targets[i]); targets[i].scrollIntoView({ behavior: 'smooth', block: 'center' }); break; } } } function openAutomaticDropdown() { const dropdowns = document.querySelectorAll('[fc-dropdown-behavior = open]'); if (dropdowns.length <= 0) return; else if (dropdowns.length === 1) { const dropdown = dropdowns[0]; const dropdownGroup = dropdown.closest('[fc-dropdown = group]'); if (dropdownGroup !== null && dropdownGroup.interacted) return; if (checkBreakpoint(dropdown)) { closeDropdown(dropdown); return; } openDropdown(dropdown); } else { let options = { threshold: 0, }; let callback = (entries, observer) => { entries.forEach(entry => { const dropdownGroup = entry.target.closest('[fc-dropdown = group]'); if (dropdownGroup !== null && dropdownGroup.interacted) return; if (entry.isIntersecting) { if (checkBreakpoint(entry.target)) { closeDropdown(entry.target); return; } openDropdown(entry.target); } }); }; let observer = new IntersectionObserver(callback, options); for (const dropdown of dropdowns) observer.observe(dropdown); } } function checkBreakpoint(dropdown) { const breakpoints = { tablet: 991, landscape: 767, portrait: 478 }; const dropdownBreakpoint = dropdown.getAttribute( 'fc-dropdown-breakpoint-off' ); if (dropdownBreakpoint === null) return false; const breakpointWidth = breakpoints[`${dropdownBreakpoint}`]; if (breakpointWidth === undefined) return false; if (window.innerWidth <= breakpointWidth) return true; return false; } function closeDropdown(dropdown) { const dropdownToggle = dropdown.querySelector('.w-dropdown-toggle'); if (dropdownToggle.classList.contains('w--open')) { dropdownToggle.dispatchEvent(new Event('mousedown')); dropdownToggle.dispatchEvent(new Event('mouseup')); dropdownToggle.dispatchEvent(new MouseEvent('click')); } } function openDropdown(dropdown) { const dropdownToggle = dropdown.querySelector('.w-dropdown-toggle'); if (!dropdownToggle.classList.contains('w--open')) { dropdownToggle.dispatchEvent(new Event('mousedown')); dropdownToggle.dispatchEvent(new Event('mouseup')); dropdownToggle.dispatchEvent(new MouseEvent('click')); } }