{"version":3,"file":"assets/AMA/js/main.min.js","mappings":"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","sources":["webpack://ama-website-frontend/./src/assets/js/utility.js","webpack://ama-website-frontend/./src/assets/js/main.js","webpack://ama-website-frontend/./src/dynamic/accordion/accordion.js","webpack://ama-website-frontend/./src/base/02-content/content.js","webpack://ama-website-frontend/./src/section/footer/footer.js","webpack://ama-website-frontend/./src/section/header/header.js","webpack://ama-website-frontend/./src/dynamic/nav/nav.js","webpack://ama-website-frontend/./src/simple/page-feedback-form/page-feedback-form.js","webpack://ama-website-frontend/./src/base/02-content/responsiveTable.js","webpack://ama-website-frontend/./src/dynamic/tabbed-content/tabbed-content.js","webpack://ama-website-frontend/./src/dynamic/tablist/tablist.js"],"sourcesContent":["/* GLOBAL BETWEEN DIFF COMPONENTS */\r\n\r\n/**\r\n * For setting up jump-links to sectioned components,\r\n * such as tabbed content or accordions\r\n */\r\nexport const PAGE_HASH_DATA = {\r\n windowHashValue: window.location.hash.replace('#', ''),\r\n allAnchorHashElements: document.querySelectorAll('a[href^=\\\\#]'),\r\n get allAnchorHashValues() {\r\n return this.allAnchorHashElements != null\r\n ? [...this.allAnchorHashElements]\r\n .map(({ hash }) => hash)\r\n .filter((str) => str != '') // don't want empties\r\n : '';\r\n },\r\n};\r\n\r\n/**\r\n * Given an element, scrolls to its parent container\r\n * @param {Node Element} element - clicked/active element\r\n */\r\nexport const scrollToContainer = (element, containerClass) => {\r\n if (!element || containerClass == '') {\r\n return;\r\n }\r\n\r\n const VIEWHEIGHT = document.documentElement.clientHeight;\r\n const OFFSET = VIEWHEIGHT * 0.1;\r\n\r\n let containingElement = element.closest(containerClass);\r\n if (!containingElement) {\r\n return;\r\n }\r\n\r\n let elementTop = containingElement.getBoundingClientRect().top;\r\n\r\n // don't jump to if already in ~ top->center view\r\n if (elementTop >= 0 && elementTop <= (window.innerHeight || VIEWHEIGHT) / 2) {\r\n return;\r\n }\r\n\r\n window.scrollTo({\r\n behavior: 'smooth',\r\n top: elementTop - document.body.getBoundingClientRect().top - OFFSET,\r\n });\r\n};\r\n\r\n/* CLASS MANIPULATIONS */\r\n\r\n/**\r\n * @param {Element} el\r\n * @param {string} cssClass\r\n * @returns success or failure\r\n */\r\nexport const addClass = (el, cssClass) => {\r\n if (!el.classList.contains(cssClass)) {\r\n el.classList.add(cssClass);\r\n return true;\r\n }\r\n\r\n return false;\r\n};\r\n\r\n/**\r\n * @param {Element} el\r\n * @param {string} cssClass\r\n * @returns success or failure\r\n */\r\nexport const removeClass = (el, cssClass) => {\r\n if (el.classList.contains(cssClass)) {\r\n el.classList.remove(cssClass);\r\n return true;\r\n }\r\n\r\n return false;\r\n};\r\n\r\n/**\r\n * Toggles class for an element node by utilizing other utility functions\r\n * @param {Element} el\r\n * @param {string} cssClass\r\n * @calls addClass || removeClass\r\n */\r\nexport const toggleClass = (el, cssClass) => {\r\n addClass(el, cssClass) || removeClass(el, cssClass);\r\n};\r\n\r\n/**\r\n * Toggles multiple classes for a single element node\r\n * @param {Element} el\r\n * @param {array} classList - list of strings\r\n * @calls addClass || removeClass\r\n */\r\nexport const toggleClasses = (el, classList) => {\r\n for (let c = 0; c < classList.length; c++) {\r\n addClass(el, classList[c]) || removeClass(el, classList[c]);\r\n }\r\n};\r\n\r\n/**\r\n * @param {Element} el - element to be wrapped\r\n * @param {Element} wrapper - wrapper node to be created to wrap around el\r\n * @param {string} wrapperClass - class(es) to add to the wrapper\r\n */\r\nexport const wrapElement = (el, wrapper, wrapperClass) => {\r\n el.parentNode.insertBefore(wrapper, el);\r\n wrapper.appendChild(el);\r\n addClass(wrapper, wrapperClass);\r\n};\r\n\r\n/**\r\n * Toggles a binary attribute of an element node\r\n * @param {Element} el\r\n * @param {string} attr - name of element's attribute to target\r\n * @returns success or failure\r\n */\r\nexport const toggleAttribute = (el, attr) => {\r\n let currentValue = el.getAttribute(attr);\r\n\r\n if (currentValue == 'true') {\r\n el.setAttribute(attr, 'false');\r\n return true;\r\n } else if (currentValue == 'false') {\r\n el.setAttribute(attr, 'true');\r\n return true;\r\n }\r\n\r\n return false;\r\n};\r\n\r\n/**\r\n * Creates a dynamically sized slide up/down effect for toggleable content.\r\n * Does not control open/close class to simplify cases with children focus keeping state open\r\n * @param {event} e - dom event that triggered for scope\r\n * @param {string} parentContainer - identifier for the parent container. (Eg: '.class')\r\n * @param {string} toggleContent - identifier for the content container to animate\r\n * @param {string} cssClass - class to look for whether container is open/closed. Default is 'is-open'\r\n */\r\nexport const slideDownTogglableSection = (\r\n e,\r\n parentContainer,\r\n toggleContent,\r\n cssClass = 'is-open'\r\n) => {\r\n // get parent toggle-section to locate content & apply/remove open class\r\n let sectionContainer = e.target.closest(parentContainer);\r\n if (!sectionContainer) {\r\n return;\r\n }\r\n\r\n let contentContainer = sectionContainer.querySelector(toggleContent);\r\n if (!contentContainer) {\r\n return;\r\n }\r\n\r\n // cause padding cut-off for some reason despite being accurately calculated\r\n // add 2 rhythm units to accomodate\r\n let startHeight = contentContainer.scrollHeight + 64;\r\n\r\n if (sectionContainer.classList.contains(cssClass)) {\r\n // store transition for animation later\r\n var transitions = contentContainer.style.transition;\r\n contentContainer.style.transition = '';\r\n contentContainer.style.maxHeight = startHeight + 'px';\r\n\r\n // on next animation frame explicitly set height to its current pixel height,\r\n // to avoid transitioning out of 'auto'\r\n window.requestAnimationFrame(function () {\r\n contentContainer.style.transition = transitions;\r\n\r\n window.requestAnimationFrame(function () {\r\n contentContainer.style.maxHeight = 0 + 'px';\r\n contentContainer.style.removeProperty('max-height');\r\n });\r\n });\r\n } else {\r\n // expand\r\n contentContainer.style.maxHeight = startHeight + 'px';\r\n }\r\n};\r\n","import PageFeedbackForm from '../../simple/page-feedback-form/page-feedback-form';\r\nimport Tablist from '../../dynamic/tablist/tablist';\r\nimport Accordion from '../../dynamic/accordion/accordion';\r\nimport TabbedContent from '../../dynamic/tabbed-content/tabbed-content';\r\nimport Nav from '../../dynamic/nav/nav';\r\nimport Header from '../../section/header/header';\r\nimport Footer from '../../section/footer/footer';\r\nimport ResponsiveTables from '../../base/02-content/responsiveTable';\r\nimport Content from '../../base/02-content/content';\r\n\r\n//global scope\r\n//used for multiple instances of the same component\r\nvar globalClasses = {};\r\nwindow.classes = globalClasses;\r\n\r\n//used for class to class interactions\r\nvar mainClasses = {\r\n Accordion,\r\n Content,\r\n Footer,\r\n Header,\r\n Nav,\r\n PageFeedbackForm,\r\n ResponsiveTables,\r\n TabbedContent,\r\n Tablist,\r\n};\r\n\r\n//used for class to class interactions\r\nvar mainClassesInstances = {};\r\n\r\nfunction init() {\r\n for (const [key, value] of Object.entries(mainClasses)) {\r\n mainClassesInstances[key] = new value();\r\n }\r\n}\r\n\r\ndocument.addEventListener('DOMContentLoaded', init);\r\n\r\nexport default mainClasses;\r\n","import {\r\n PAGE_HASH_DATA,\r\n scrollToContainer,\r\n addClass,\r\n toggleClass,\r\n toggleAttribute,\r\n slideDownTogglableSection,\r\n} from '../../assets/js/utility';\r\n\r\nclass Accordion {\r\n constructor() {\r\n this.toggleClass = 'is-open';\r\n this.accordionItemClass = '.simple-accordion-item';\r\n this.accordionHeadings = document.querySelectorAll(\r\n `${this.accordionItemClass} .accordion-item-heading`\r\n );\r\n\r\n // each item works independently so don't need to care about the section\r\n // container itself\r\n if (this.accordionHeadings && this.accordionHeadings.length > 0) {\r\n this.InitAccordionItems();\r\n this.watchRelatedAnchors();\r\n }\r\n }\r\n\r\n watchRelatedAnchors() {\r\n if (PAGE_HASH_DATA.allAnchorHashValues.length <= 0) {\r\n return;\r\n }\r\n\r\n // check if any # links match an accordion tiem & add to relevant list\r\n let allAccordionIds = [...this.accordionHeadings].map(({ id }) => id);\r\n let relevantLinkHashes = [];\r\n\r\n allAccordionIds.filter((id) => {\r\n if (PAGE_HASH_DATA.allAnchorHashValues.indexOf(`#${id}`) !== -1) {\r\n relevantLinkHashes.push(`#${id}`);\r\n }\r\n });\r\n\r\n // pair down relevant anchor elements for listeners\r\n let relevantAnchorElements = [...PAGE_HASH_DATA.allAnchorHashElements].filter(\r\n (element) => {\r\n if (relevantLinkHashes.indexOf(element.hash) !== -1) {\r\n return element;\r\n }\r\n }\r\n );\r\n\r\n relevantAnchorElements.forEach((anchor) => {\r\n anchor.addEventListener('click', (e) => {\r\n let targetHash = e.target.hash;\r\n let currentElement = document.querySelector(\r\n `${this.accordionItemClass} ${targetHash}`\r\n );\r\n\r\n e.preventDefault(); // prevent normal snap to element\r\n currentElement.setAttribute('aria-expanded', 'true');\r\n addClass(currentElement.closest(this.accordionItemClass), this.toggleClass);\r\n\r\n // resume normal behavior but with smooth scroll\r\n window.location.hash = targetHash;\r\n scrollToContainer(currentElement, this.accordionItemClass);\r\n });\r\n });\r\n }\r\n\r\n InitAccordionItems() {\r\n this.accordionHeadings.forEach((heading) => {\r\n if (\r\n PAGE_HASH_DATA.windowHashValue != '' &&\r\n heading.id == PAGE_HASH_DATA.windowHashValue\r\n ) {\r\n // jump to matching item on load & open it\r\n heading.setAttribute('aria-expanded', 'true');\r\n addClass(heading.closest(this.accordionItemClass), this.toggleClass);\r\n scrollToContainer(heading, this.accordionItemClass);\r\n }\r\n\r\n heading.addEventListener('click', (e) => {\r\n let accordionItem = e.target.closest(this.accordionItemClass);\r\n if (!accordionItem) {\r\n return;\r\n }\r\n\r\n slideDownTogglableSection(e, this.accordionItemClass, '.content');\r\n toggleAttribute(heading, 'aria-expanded');\r\n toggleClass(accordionItem, this.toggleClass);\r\n });\r\n });\r\n }\r\n}\r\n\r\nexport default Accordion;\r\n","import { addClass } from '../../assets/js/utility';\r\n\r\nclass Content {\r\n constructor() {\r\n // all content links and nav menu sublinks to apply external class to\r\n this.externalClass = 'external';\r\n this.externalLinks = document.querySelectorAll(\r\n '.content a[href]:not(.button), .content-sidebar a[href]:not(.button), ' +\r\n '.dynamic-nav .submenu a[href], .dynamic-resource-links-list a[href]'\r\n );\r\n\r\n if (this.externalLinks.length > 0) {\r\n for (let i = 0; i < this.externalLinks.length; i++) {\r\n var link = this.externalLinks[i];\r\n\r\n // exclude inline js, mailto, tel, etc links\r\n if (link.href.indexOf('://') > 0) {\r\n let hostnameParts = location.hostname.split('.');\r\n let rootDomain = '';\r\n\r\n // location.hostname includes subdoms which we don't want to compare with\r\n // poor mans detection expecting simple subdom.rootdom.com format\r\n // what we want should be 2nd last unless on localhost\r\n if (hostnameParts.length > 1) {\r\n rootDomain = hostnameParts[hostnameParts.length - 2];\r\n } else {\r\n rootDomain = hostnameParts[0];\r\n }\r\n\r\n if (link.hostname.indexOf(rootDomain) < 0) {\r\n addClass(link, this.externalClass);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // insert a word break opportunity for emails\r\n this.mailToLinks = document.querySelectorAll('a[href^=mailto]');\r\n\r\n if (this.mailToLinks.length > 0) {\r\n for (let mailto of this.mailToLinks) {\r\n var formatted = mailto.innerText.replace(/([@.])/g, '$1');\r\n\r\n // check for complex link element like resource or nav\r\n // so we don't destroy markup\r\n let spanLayer = mailto.querySelector('span');\r\n if (spanLayer != null) {\r\n spanLayer.innerHTML = formatted;\r\n } else {\r\n mailto.innerHTML = formatted;\r\n }\r\n }\r\n }\r\n\r\n // all images wrapped in an anchor tag within content sections\r\n this.linkedImageClass = 'img-link';\r\n this.linkedImages = document.querySelectorAll(\r\n '.content a > img, a.content > img'\r\n );\r\n\r\n if (this.linkedImages.length > 0) {\r\n this.linkedImages.forEach((link) =>\r\n addClass(link.parentElement, this.linkedImageClass)\r\n );\r\n }\r\n\r\n // all content images use their alt text as their title\r\n this.allContentImages = document.querySelectorAll('.content img');\r\n if (this.allContentImages.length > 0) {\r\n this.allContentImages.forEach((image) => {\r\n let imgAltText = image.getAttribute('alt');\r\n\r\n if (imgAltText != '') {\r\n image.setAttribute('title', imgAltText);\r\n }\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default Content;\r\n","class Footer {\r\n constructor() {\r\n this.copyrightElement = document.querySelector('.site-footer #copyright');\r\n\r\n if (this.copyrightElement) {\r\n this.copyrightElement.insertAdjacentText(\r\n 'afterbegin',\r\n new Date().getFullYear()\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default Footer;\r\n","import {\r\n toggleClass,\r\n toggleAttribute,\r\n slideDownTogglableSection,\r\n removeClass,\r\n addClass,\r\n} from '../../assets/js/utility';\r\n\r\nclass Header {\r\n constructor() {\r\n this.scrollClass = 'is-scrolled';\r\n this.toggleClass = 'is-open';\r\n this.mobileMembersOpenClass = 'members-is-open';\r\n this.menuLeaveTimer;\r\n this.mobileMenuBreakpoint = 870; // md\r\n\r\n this.siteHeaderElement = document.querySelector('.site-header');\r\n this.headerNav = document.querySelector('.site-header .dynamic-header-nav');\r\n this.memberMenuButton = document.querySelector(\r\n '.site-header .member-menu-button'\r\n );\r\n this.memberMenuArea = document.querySelector(\r\n '.site-header .member-logged-group'\r\n );\r\n this.memberMenu = document.querySelector('.site-header .dynamic-mega-menu');\r\n\r\n this.mobileMemberIcon = document.querySelector(\r\n '.site-header .mobile-members-menu-icon'\r\n );\r\n this.menuIcon = document.querySelector('#mobile-menu-icon');\r\n\r\n // for mobile scrolling\r\n if (this.siteHeaderElement) {\r\n let ticking = false;\r\n\r\n window.addEventListener('resize', () => this.checkForScroll());\r\n window.addEventListener('scroll', () => {\r\n if (!ticking) {\r\n window.requestAnimationFrame(() => {\r\n this.checkForScroll();\r\n ticking = false;\r\n });\r\n\r\n ticking = true;\r\n }\r\n });\r\n\r\n // always check on load in case page using jump link\r\n this.checkForScroll();\r\n }\r\n\r\n if (this.headerNav) {\r\n // desktop mega menu states\r\n // specifically add/remove and not toggle cause if page loads w/ user mouse over an area\r\n // the menus will not toggle backwards\r\n if (this.memberMenuButton && this.memberMenu) {\r\n this.memberMenuButton.addEventListener('mouseenter', (e) => {\r\n slideDownTogglableSection(e, '.member-logged-group', '.dynamic-mega-menu');\r\n addClass(this.memberMenuButton, this.toggleClass);\r\n addClass(this.memberMenuArea, this.toggleClass);\r\n });\r\n\r\n this.memberMenuButton.addEventListener('mouseleave', (e) => {\r\n // stay open if focusing in submenu\r\n if (this.memberMenu.contains(e.relatedTarget)) {\r\n return;\r\n } else {\r\n // don't close immediately in case mouse traveling outside of\r\n // menu area to reach distant menu panel\r\n this.menuLeaveTimer = setTimeout(() => {\r\n slideDownTogglableSection(\r\n e,\r\n '.member-logged-group',\r\n '.dynamic-mega-menu'\r\n );\r\n removeClass(this.memberMenuButton, this.toggleClass);\r\n removeClass(this.memberMenuArea, this.toggleClass);\r\n }, 800);\r\n }\r\n });\r\n\r\n this.memberMenu.addEventListener('mouseenter', (e) => {\r\n // clear any leave timer if mouse traveled over non-menu elements\r\n // on its way here\r\n clearTimeout(this.menuLeaveTimer);\r\n\r\n slideDownTogglableSection(e, '.member-logged-group', '.dynamic-mega-menu');\r\n addClass(this.memberMenuButton, this.toggleClass);\r\n addClass(this.memberMenuArea, this.toggleClass);\r\n });\r\n\r\n this.memberMenu.addEventListener('mouseleave', (e) => {\r\n slideDownTogglableSection(e, '.member-logged-group', '.dynamic-mega-menu');\r\n removeClass(this.memberMenuButton, this.toggleClass);\r\n removeClass(this.memberMenuArea, this.toggleClass);\r\n });\r\n\r\n this.memberMenu.addEventListener('focusin', (e) => {\r\n // stay open if focusing in submenu\r\n if (this.memberMenu.contains(e.relatedTarget)) {\r\n return;\r\n }\r\n\r\n slideDownTogglableSection(e, '.member-logged-group', '.dynamic-mega-menu');\r\n addClass(this.memberMenuButton, this.toggleClass);\r\n addClass(this.memberMenuArea, this.toggleClass);\r\n });\r\n\r\n this.memberMenu.addEventListener('focusout', (e) => {\r\n // stay open if focusing in submenu\r\n if (this.memberMenu.contains(e.relatedTarget)) {\r\n return;\r\n }\r\n\r\n slideDownTogglableSection(e, '.member-logged-group', '.dynamic-mega-menu');\r\n removeClass(this.memberMenuButton, this.toggleClass);\r\n removeClass(this.memberMenuArea, this.toggleClass);\r\n });\r\n }\r\n\r\n // Mobile Specific elements\r\n if (this.menuIcon) {\r\n this.menuIcon.addEventListener('click', () => {\r\n // check if was opened by members icon\r\n if (this.menuIcon.classList.contains(this.mobileMembersOpenClass)) {\r\n toggleClass(this.menuIcon, this.mobileMembersOpenClass);\r\n toggleClass(this.headerNav, this.mobileMembersOpenClass);\r\n } else {\r\n toggleClass(this.menuIcon, this.toggleClass);\r\n }\r\n\r\n toggleAttribute(this.menuIcon, 'aria-expanded');\r\n });\r\n }\r\n\r\n if (this.mobileMemberIcon) {\r\n this.mobileMemberIcon.addEventListener('click', () => {\r\n // uses same menu area & close button,\r\n // but controls the member specific portion\r\n toggleClass(this.menuIcon, this.mobileMembersOpenClass);\r\n toggleClass(this.headerNav, this.mobileMembersOpenClass);\r\n toggleAttribute(this.menuIcon, 'aria-expanded');\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * applies style to header if on mobile & scrolled\r\n */\r\n checkForScroll() {\r\n if (window.innerWidth > this.mobileMenuBreakpoint) return;\r\n\r\n if (window.scrollY + this.siteHeaderElement.getBoundingClientRect().top > 10) {\r\n addClass(this.siteHeaderElement, this.scrollClass);\r\n } else {\r\n removeClass(this.siteHeaderElement, this.scrollClass);\r\n }\r\n }\r\n}\r\nexport default Header;\r\n","import {\r\n addClass,\r\n toggleClass,\r\n slideDownTogglableSection,\r\n} from '../../assets/js/utility';\r\n\r\nclass Nav {\r\n constructor() {\r\n this.toggleClass = 'is-open';\r\n this.linksWithDropdown = document.querySelectorAll('.dynamic-nav .has-sublinks');\r\n this.activeLink = document.querySelectorAll('.dynamic-nav .is-active');\r\n\r\n // set dropdown show/hide listener\r\n if (this.linksWithDropdown) {\r\n // for preventing duplicate event triggers\r\n let navActive = false;\r\n let allowArrowDownTrigger = false;\r\n\r\n for (let i = 0; i < this.linksWithDropdown.length; i++) {\r\n let currentNavLink = this.linksWithDropdown[i];\r\n\r\n // mouse events\r\n currentNavLink.addEventListener('mouseenter', (e) => {\r\n if (navActive == false) {\r\n navActive = true;\r\n this.changeOpenState(e, currentNavLink, 'true');\r\n\r\n // in case triggered by an arrow down click\r\n // don't allow trigger from same event\r\n setTimeout(function () {\r\n allowArrowDownTrigger = true;\r\n }, 600);\r\n }\r\n });\r\n\r\n currentNavLink.addEventListener('mouseleave', (e) => {\r\n if (navActive == true) {\r\n navActive = false;\r\n this.changeOpenState(e, currentNavLink);\r\n\r\n // prevent arrow click triggers until next mouseenter\r\n allowArrowDownTrigger = false;\r\n }\r\n });\r\n\r\n // keyboard events\r\n currentNavLink.addEventListener('focusin', (e) => {\r\n // stay open if focusing in submenu\r\n if (currentNavLink.contains(e.relatedTarget) || navActive === true) {\r\n return;\r\n }\r\n\r\n navActive = true;\r\n this.changeOpenState(e, currentNavLink, 'true');\r\n });\r\n\r\n currentNavLink.addEventListener('focusout', (e) => {\r\n // stay open if focusing in submenu\r\n if (currentNavLink.contains(e.relatedTarget) || navActive === false) {\r\n return;\r\n }\r\n\r\n navActive = false;\r\n this.changeOpenState(e, currentNavLink);\r\n });\r\n\r\n // for mobile\r\n let downArrow = currentNavLink.querySelector('.arrow-down');\r\n\r\n if (downArrow) {\r\n downArrow.addEventListener('mousedown', (e) => {\r\n if (allowArrowDownTrigger == true) {\r\n // if not open, tell changeState to open it\r\n let openSubmenu = !currentNavLink.classList.contains(this.toggleClass);\r\n\r\n this.changeOpenState(\r\n e,\r\n currentNavLink,\r\n openSubmenu ? 'true' : 'false'\r\n );\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n // if dropdown item active, indicate on 1st level & dropdown item\r\n if (this.activeLink) {\r\n this.activeLink.forEach((link) => {\r\n let navContainer = link.closest('.dynamic-nav');\r\n let parentItem = link.closest('.has-sublinks');\r\n\r\n if (parentItem && !navContainer.classList.contains('horizontal')) {\r\n addClass(parentItem, this.toggleClass);\r\n parentItem.setAttribute('aria-expanded', true);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Checks if submenu needs to be opened or not & sets the state if so\r\n * @param {Event} e - event trigger for animation\r\n * @param {Node Element} group - nav item (li) element\r\n * @param {string} makeExpanded - aria-expanded value to set\r\n * @param {string} toggleClass - class to toggle on the group element\r\n */\r\n changeOpenState(e, group, makeExpanded = 'false') {\r\n let navContainer = group.closest('.dynamic-nav');\r\n let linkElement = group.querySelector('.nav-link');\r\n let currentState = 'false';\r\n\r\n // is-active in vertical should always be open\r\n let ignoreToggle =\r\n !navContainer.classList.contains('horizontal') &&\r\n group.classList.contains('is-active');\r\n\r\n if (linkElement) {\r\n currentState = linkElement.getAttribute('aria-expanded');\r\n\r\n if (currentState != makeExpanded && !ignoreToggle) {\r\n linkElement.setAttribute('aria-expanded', makeExpanded);\r\n\r\n // can't go outside if-statement cause must happen before class change\r\n slideDownTogglableSection(e, '.has-sublinks', '.submenu');\r\n toggleClass(group, this.toggleClass);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default Nav;\r\n","import {\r\n addClass,\r\n removeClass,\r\n slideDownTogglableSection,\r\n} from '../../assets/js/utility';\r\n\r\nclass PageFeedbackForm {\r\n constructor() {\r\n this.toggleClass = 'is-open';\r\n this.positiveSubmitClass = 'is-submitted';\r\n this.formSubmitClass = 'feedback-success';\r\n this.componentClass = '.simple-page-feedback-form';\r\n this.formAreaClass = '.feedback-form';\r\n this.messageClass = '.positive-submit-message';\r\n\r\n // should be unique on page\r\n this.feedbackform = document.querySelector(this.componentClass);\r\n\r\n if (this.feedbackform) {\r\n this.initPageFeedbackForm();\r\n }\r\n }\r\n\r\n initPageFeedbackForm() {\r\n let positive = this.feedbackform.querySelector('#feedbackPositive');\r\n let negative = this.feedbackform.querySelector('#feedbackNegative');\r\n let formArea = this.feedbackform.querySelector(this.formAreaClass);\r\n let messageContainer = this.feedbackform.querySelector(this.messageClass);\r\n\r\n // if part of the required pieces are missing don't show the component at all\r\n if (!positive || !negative || !formArea || !messageContainer) {\r\n this.feedbackform.style.display = 'none';\r\n this.feedbackform.innerHTML = '';\r\n console.warning('Page feedback form is missing an initialization piece.');\r\n return;\r\n }\r\n\r\n // check if this is a page load after form submit success\r\n if (this.feedbackform.querySelector('.umbraco-forms-submitmessage')) {\r\n // show the set message from component since form workflow unreliable to show\r\n addClass(this.feedbackform, this.formSubmitClass);\r\n addClass(formArea, this.toggleClass);\r\n\r\n // disable the buttons\r\n positive.disabled = true;\r\n negative.disabled = true;\r\n }\r\n\r\n positive.addEventListener('click', (e) => {\r\n // set as submitted and show thank you\r\n addClass(this.feedbackform, this.positiveSubmitClass);\r\n addClass(messageContainer, this.toggleClass);\r\n slideDownTogglableSection(e, this.componentClass, this.messageClass);\r\n\r\n // disable the negative\r\n negative.disabled = true;\r\n\r\n // if negative was clicked before, close form\r\n removeClass(formArea, this.toggleClass);\r\n formArea.style.removeProperty('max-height');\r\n });\r\n\r\n negative.addEventListener('click', (e) => {\r\n // don't show form if user already submitted positive feedback\r\n if (this.feedbackform.classList.contains(this.positiveSubmitClass)) {\r\n return;\r\n }\r\n\r\n // only open once\r\n let isOpen = formArea.classList.contains(this.toggleClass);\r\n\r\n if (!isOpen) {\r\n addClass(formArea, this.toggleClass);\r\n slideDownTogglableSection(e, this.componentClass, this.formAreaClass);\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default PageFeedbackForm;\r\n","import { wrapElement, addClass } from '../../assets/js/utility';\r\n\r\nclass ResponsiveTables {\r\n constructor() {\r\n // May want to tweak if any tables are used for non-data purposes in project\r\n this.tablesList = document.querySelectorAll('table');\r\n this.wrapperClass = 'table-wrapper';\r\n this.stackedClass = 'stacked-table';\r\n this.stickyHorizontalClass = 'sticky-left-col';\r\n this.stackedHeaderClass = 'stacked-table-header';\r\n this.cellHeadingClass = 'cell-heading';\r\n\r\n if (this.tablesList && this.tablesList.length > 0) {\r\n this.tablesList.forEach((table) => {\r\n // avoid double wrapping if wrapper already exists\r\n if (table.classList.contains(this.stickyHorizontalClass)) {\r\n if (!table.parentElement.classList.contains(this.wrapperClass)) {\r\n // create & insert the wrapper element\r\n wrapElement(table, document.createElement('div'), this.wrapperClass);\r\n }\r\n\r\n this.setLabelColumn(table);\r\n } else {\r\n // add responsive class for styles if not already there\r\n addClass(table, this.stackedClass);\r\n this.setupStackedTable(table);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Assigns a set width for 1st column to remain visible on horizontal scroll with the wrapper shadow\r\n * properly set at its edge. Based on auto-fit size determined on load, or a hardset width if too big\r\n * @param {Element} el - table element node\r\n * @returns\r\n */\r\n setLabelColumn(el) {\r\n let width = 0;\r\n const largestLabelWidth = 190; // in px, keep small for mobile considerations\r\n const rows = el.querySelectorAll('tr');\r\n\r\n for (let i = 0; i < rows.length; i++) {\r\n const tdFirst = rows[i].querySelector('td'); // first column in row\r\n\r\n if (tdFirst) {\r\n // special case: check if only 2 columns. If so, unset absolute positioning\r\n if (rows[i].cells.length === 2 && tdFirst.getAttribute('colspan') === null) {\r\n for (let c = 0; c < rows.length; c++) {\r\n // unset sticky on all heading & content rows in the table\r\n rows[c].querySelector('th,td').style.position = 'relative';\r\n rows[c].querySelector('th,td').style.backgroundColor = '#fff0'; // adjust as needed for project\r\n }\r\n\r\n return;\r\n }\r\n\r\n // check column isn't spanning to avoid skewing normal columns\r\n if (tdFirst.getAttribute('colspan') == null) {\r\n // set the label column width as is, or cap at declared largest size if too big\r\n width =\r\n tdFirst.clientWidth <= largestLabelWidth\r\n ? tdFirst.clientWidth\r\n : largestLabelWidth;\r\n tdFirst.style.width = `${width + 1}px`; // account for sticky position -1 left\r\n\r\n // set wrapper shadow offset to match width of 1st column\r\n const wrapper = tdFirst.closest('.table-wrapper');\r\n wrapper.style.backgroundPosition = `${width}px center, right center, ${width}px center, right center`;\r\n\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Performs setup for table stacking on the given element\r\n * @param {Element} element Table element node\r\n */\r\n setupStackedTable(element) {\r\n // Don't setup the table when it's already been set up\r\n if (element.dataset.initialized == 'true') {\r\n return;\r\n }\r\n element.dataset.initiated = true;\r\n\r\n // Determine what the header should be\r\n // - thead, if applicable\r\n // - first tr of tbody, if no thead\r\n let header = element.querySelector('thead tr');\r\n if (!header) {\r\n header = element.querySelector('tr:first-child');\r\n\r\n // in cases of bad table markup where there is a 'ghost' still around\r\n // that has the table & tbody markup but nothing inside\r\n if (!header) {\r\n return;\r\n }\r\n\r\n addClass(header, this.stackedHeaderClass);\r\n }\r\n\r\n const headingCells = Array.from(header.querySelectorAll('th, td'));\r\n\r\n const rows = Array.from(\r\n element.querySelectorAll(`tbody tr:not(.${this.stackedHeaderClass}), tfoot tr`)\r\n );\r\n\r\n // Create template label elements for headings\r\n const headingLabels = headingCells.map((cell) => {\r\n const newElement = document.createElement('span');\r\n newElement.innerHTML = cell.innerHTML;\r\n newElement.classList.add(this.cellHeadingClass);\r\n\r\n return newElement;\r\n });\r\n\r\n // Apply new headings\r\n for (const row of rows) {\r\n const cells = Array.from(row.querySelectorAll('td, th'));\r\n\r\n for (let i = 0; i < cells.length; i++) {\r\n const heading = headingLabels[i].cloneNode(true);\r\n const cell = cells[i];\r\n\r\n cell.insertAdjacentElement('afterbegin', heading);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default ResponsiveTables;\r\n","import {\r\n PAGE_HASH_DATA,\r\n scrollToContainer,\r\n addClass,\r\n removeClass,\r\n slideDownTogglableSection,\r\n} from '../../assets/js/utility';\r\n\r\nclass TabbedContent {\r\n constructor() {\r\n this.activeClass = 'is-active';\r\n this.tabbedContentContainerClass = '.dynamic-tabbed-content';\r\n this.tabListClass = '.dynamic-tablist';\r\n this.tabLists = document.querySelectorAll(\r\n `${this.tabbedContentContainerClass} ${this.tabListClass}`\r\n );\r\n\r\n if (this.tabLists && this.tabLists.length > 0) {\r\n this.InitTabbedContent();\r\n }\r\n }\r\n\r\n /**\r\n * Sets active states on given tab & panel elements that are not\r\n * animated by the slideToggle script\r\n * @param {Node Element} tabElement\r\n * @param {Node Element} panelElement\r\n */\r\n setNonAnimatedTabAndPanel(tabElement, panelElement) {\r\n if (tabElement && panelElement) {\r\n tabElement.setAttribute('aria-selected', 'true');\r\n addClass(tabElement, this.activeClass);\r\n addClass(panelElement, this.activeClass);\r\n\r\n // set height for smooth slide animation if users click on tab\r\n let startHeight = panelElement.scrollHeight + 64; // match adjustment from utility script\r\n panelElement.style.maxHeight = startHeight + 'px';\r\n }\r\n }\r\n\r\n /**\r\n * Sets the provided tab element & its corresponding content panel\r\n * to an active state\r\n * @param {event} e - (optional) if user clicks a tab\r\n * @param {Node Element} tabElement - tab heading element to set active\r\n * calls removeActiveStateOfPrevious\r\n */\r\n setSelectedTab(e = null, tabElement) {\r\n if (!tabElement) {\r\n return;\r\n }\r\n\r\n if (e) {\r\n // tab is clicked\r\n let correspondingContentPanel = document.querySelector(\r\n '#tabContent-' + tabElement.id\r\n );\r\n\r\n tabElement.setAttribute('aria-selected', 'true');\r\n addClass(tabElement, this.activeClass);\r\n addClass(correspondingContentPanel, this.activeClass);\r\n\r\n // open panel\r\n slideDownTogglableSection(\r\n e,\r\n this.tabbedContentContainerClass,\r\n `#tabContent-${tabElement.id}`,\r\n this.activeClass\r\n );\r\n } else {\r\n // # anchor clicked directing to tab,\r\n // won't have event context for panel\r\n let correspondingContentPanel = document.querySelector(\r\n '#tabContent-' + tabElement.id\r\n );\r\n\r\n this.setNonAnimatedTabAndPanel(tabElement, correspondingContentPanel);\r\n }\r\n\r\n // find old active tab & remove active state\r\n this.removeActiveStateOfPrevious(tabElement);\r\n }\r\n\r\n /**\r\n * Called by SetSelectedTab. Removes active state of tab that does not match\r\n * the current tab element it is given\r\n * @param {Node Element} currentTabElement - tab heading element being set active\r\n */\r\n removeActiveStateOfPrevious(currentTabElement) {\r\n let tabList = currentTabElement\r\n ? currentTabElement.closest(`${this.tabListClass}`)\r\n : null;\r\n let containingElement = currentTabElement\r\n ? currentTabElement.closest(this.tabbedContentContainerClass)\r\n : null;\r\n\r\n if (!tabList || !containingElement) {\r\n return;\r\n }\r\n\r\n // check each sibling in the tablist for the previously active tab\r\n Array.from(tabList.children).forEach((tab) => {\r\n let tabId = tab.getAttribute('id');\r\n\r\n if (\r\n tabId != currentTabElement.id &&\r\n tab.classList.contains(this.activeClass)\r\n ) {\r\n // found the previously active tab\r\n let previousContentPanel = containingElement.querySelector(\r\n '#tabContent-' + tabId\r\n );\r\n\r\n tab.setAttribute('aria-selected', 'false');\r\n removeClass(tab, this.activeClass);\r\n\r\n // remove active settings from corresponding content panel\r\n if (previousContentPanel) {\r\n removeClass(previousContentPanel, this.activeClass);\r\n previousContentPanel.style.removeProperty('max-height');\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Calls setSelectedTab & scrollToContainer when a user clicks a tab\r\n * @param {event} e - user clicked on a tab heading\r\n */\r\n onTabClick(e) {\r\n let clickedTab = e.target.closest('.tab-heading'); // in case clicked on svg in button\r\n if (!clickedTab) {\r\n return;\r\n }\r\n\r\n // get content panels from same container\r\n let tabList = clickedTab.closest(`${this.tabListClass}`);\r\n let containingElement = clickedTab.closest(this.tabbedContentContainerClass);\r\n if (!containingElement || !tabList) {\r\n return;\r\n }\r\n\r\n if (containingElement.querySelector('#tabContent-' + clickedTab.id)) {\r\n this.setSelectedTab(e, clickedTab);\r\n }\r\n\r\n scrollToContainer(clickedTab, this.tabbedContentContainerClass);\r\n }\r\n\r\n /**\r\n * @param {string array} jumpToElementIds - ids of all elements to watch for matching anchors\r\n */\r\n watchRelatedAnchors(jumpToElementIds) {\r\n if (PAGE_HASH_DATA.allAnchorHashValues.length <= 0) {\r\n return;\r\n }\r\n\r\n // check if any # links match a tab & add to relevant list\r\n let relevantLinkHashes = [];\r\n\r\n jumpToElementIds.filter((id) => {\r\n if (PAGE_HASH_DATA.allAnchorHashValues.indexOf(`#${id}`) !== -1) {\r\n relevantLinkHashes.push(`#${id}`);\r\n }\r\n });\r\n\r\n // pair down relevant anchor elements for listeners\r\n let relevantAnchorElements = [...PAGE_HASH_DATA.allAnchorHashElements].filter(\r\n (element) => {\r\n if (relevantLinkHashes.indexOf(element.hash) !== -1) {\r\n return element;\r\n }\r\n }\r\n );\r\n\r\n relevantAnchorElements.forEach((anchor) => {\r\n anchor.addEventListener('click', (e) => {\r\n let targetHash = e.target.hash;\r\n let currentElement = document.querySelector(\r\n `${this.tabbedContentContainerClass} ${targetHash}`\r\n );\r\n\r\n e.preventDefault(); // prevent normal snap to element\r\n this.setSelectedTab(null, currentElement);\r\n\r\n // resume normal behavior but with smooth scroll\r\n window.location.hash = targetHash;\r\n scrollToContainer(currentElement, this.tabbedContentContainerClass);\r\n });\r\n });\r\n }\r\n\r\n InitTabbedContent() {\r\n // Begin setting all tab list interactions on page\r\n this.tabLists.forEach((tabbedList) => {\r\n // tab headings\r\n let tabs = tabbedList.querySelectorAll('[role=tab]');\r\n let allTabIds = [...tabs].map(({ id }) => id);\r\n\r\n // get content panels from same container\r\n let containingElement = tabbedList.closest(this.tabbedContentContainerClass);\r\n let tabPanels = containingElement\r\n ? containingElement.querySelectorAll('[role=tabpanel]')\r\n : null;\r\n\r\n if (!tabPanels || tabPanels.length <= 0) {\r\n console.info('No tab panels found');\r\n return;\r\n }\r\n\r\n // default init\r\n let initialTab = tabs[0];\r\n let initialPanel = tabPanels[0];\r\n\r\n // determine if init should be based on url #\r\n if (\r\n PAGE_HASH_DATA.windowHashValue != '' &&\r\n allTabIds.indexOf(PAGE_HASH_DATA.windowHashValue) >= 0\r\n ) {\r\n // found matching tab to direct to\r\n let initIndex = allTabIds.indexOf(PAGE_HASH_DATA.windowHashValue);\r\n\r\n initialTab = tabs[initIndex];\r\n initialPanel = tabPanels[initIndex];\r\n scrollToContainer(initialTab, this.tabbedContentContainerClass);\r\n }\r\n\r\n // Init 1st tab & content on load\r\n this.setNonAnimatedTabAndPanel(initialTab, initialPanel);\r\n\r\n // set listeners\r\n tabs.forEach((tab) =>\r\n tab.addEventListener('click', this.onTabClick.bind(this))\r\n );\r\n\r\n this.watchRelatedAnchors(allTabIds);\r\n });\r\n }\r\n}\r\n\r\nexport default TabbedContent;\r\n","import { addClass, removeClass } from '../../assets/js/utility';\r\n\r\nclass TabList {\r\n constructor() {\r\n this.tabListClass = '.dynamic-tablist';\r\n this.tabLists = document.querySelectorAll(`${this.tabListClass}`);\r\n this.overflowClass = 'is-overflowing';\r\n\r\n if (this.tabLists && this.tabLists.length > 0) {\r\n // check if tablist is overflowing after a window resize\r\n window.addEventListener('resize', () => {\r\n this.tabLists.forEach((list) => {\r\n this.checkOverflow(list);\r\n });\r\n });\r\n\r\n this.tabLists.forEach((tabbedList) => {\r\n // change glider behavior if there's overflow\r\n this.checkOverflow(tabbedList);\r\n });\r\n }\r\n }\r\n\r\n checkOverflow(el) {\r\n let hasOverflow =\r\n el.clientWidth < el.scrollWidth || el.clientWidth > window.innerWidth;\r\n\r\n if (hasOverflow) {\r\n addClass(el, this.overflowClass);\r\n } else {\r\n removeClass(el, this.overflowClass);\r\n }\r\n }\r\n}\r\n\r\nexport default TabList;\r\n"],"names":["PAGE_HASH_DATA","windowHashValue","window","location","hash","replace","allAnchorHashElements","document","querySelectorAll","allAnchorHashValues","this","map","filter","str","scrollToContainer","element","containerClass","VIEWHEIGHT","documentElement","clientHeight","OFFSET","containingElement","closest","elementTop","getBoundingClientRect","top","innerHeight","scrollTo","behavior","body","addClass","el","cssClass","classList","contains","add","removeClass","remove","toggleClass","toggleAttribute","attr","currentValue","getAttribute","setAttribute","slideDownTogglableSection","e","parentContainer","toggleContent","sectionContainer","target","contentContainer","querySelector","startHeight","scrollHeight","transitions","style","transition","maxHeight","requestAnimationFrame","removeProperty","classes","mainClasses","Accordion","constructor","accordionItemClass","accordionHeadings","length","InitAccordionItems","watchRelatedAnchors","allAccordionIds","id","relevantLinkHashes","indexOf","push","forEach","anchor","addEventListener","targetHash","currentElement","preventDefault","heading","accordionItem","Content","externalClass","externalLinks","i","link","href","hostnameParts","hostname","split","rootDomain","mailToLinks","mailto","formatted","innerText","spanLayer","innerHTML","linkedImageClass","linkedImages","parentElement","allContentImages","image","imgAltText","Footer","copyrightElement","insertAdjacentText","Date","getFullYear","Header","scrollClass","mobileMembersOpenClass","menuLeaveTimer","mobileMenuBreakpoint","siteHeaderElement","headerNav","memberMenuButton","memberMenuArea","memberMenu","mobileMemberIcon","menuIcon","ticking","checkForScroll","relatedTarget","setTimeout","clearTimeout","innerWidth","scrollY","Nav","linksWithDropdown","activeLink","navActive","allowArrowDownTrigger","currentNavLink","changeOpenState","downArrow","openSubmenu","navContainer","parentItem","group","makeExpanded","linkElement","currentState","ignoreToggle","PageFeedbackForm","positiveSubmitClass","formSubmitClass","componentClass","formAreaClass","messageClass","feedbackform","initPageFeedbackForm","positive","negative","formArea","messageContainer","display","console","warning","disabled","ResponsiveTables","tablesList","wrapperClass","stackedClass","stickyHorizontalClass","stackedHeaderClass","cellHeadingClass","table","wrapper","createElement","parentNode","insertBefore","appendChild","setLabelColumn","setupStackedTable","width","rows","tdFirst","cells","c","position","backgroundColor","clientWidth","backgroundPosition","dataset","initialized","initiated","header","headingCells","Array","from","headingLabels","cell","newElement","row","cloneNode","insertAdjacentElement","TabbedContent","activeClass","tabbedContentContainerClass","tabListClass","tabLists","InitTabbedContent","setNonAnimatedTabAndPanel","tabElement","panelElement","setSelectedTab","correspondingContentPanel","removeActiveStateOfPrevious","currentTabElement","tabList","children","tab","tabId","previousContentPanel","onTabClick","clickedTab","jumpToElementIds","tabbedList","tabs","allTabIds","tabPanels","info","initialTab","initialPanel","initIndex","bind","Tablist","overflowClass","list","checkOverflow","scrollWidth","mainClassesInstances","key","value","Object","entries"],"sourceRoot":""}