@universityofmaryland/web-elements-library 1.5.5 → 1.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# University of Maryland Web Elements Library
|
|
2
2
|
|
|
3
|
-
[](https://www.npmjs.com/package/@universityofmaryland/web-elements-library)
|
|
4
4
|
|
|
5
5
|
Foundational UI building blocks for the UMD Design System, providing atomic elements that combine to create complex, accessible, and brand-compliant University of Maryland digital experiences.
|
|
6
6
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../source/composite/navigation/utility/index.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport * as elementStyles from '@universityofmaryland/web-styles-library/element';\nimport * as layout from '@universityofmaryland/web-styles-library/layout';\nimport {\n jssToCSS,\n jssEntryToCSS,\n} from '@universityofmaryland/web-utilities-library/styles';\nimport { handleKeyboardNavigation } from '@universityofmaryland/web-utilities-library/events';\nimport { search as iconSearch } from '@universityofmaryland/web-icons-library/search';\nimport { chevron_down as iconChevronDown } from '@universityofmaryland/web-icons-library/controls';\nimport {\n createNavAlert,\n STYLES_NAV_ALERT,\n ALERT_CONSTANTS,\n TypeAlertProps,\n} from './alert';\nimport UtilitySearch from './search';\n\ntype TypeMenuItemsRequirements = {\n alertUrl?: string | null;\n giftUrl?: string;\n isAdmissionsFeed: boolean;\n isAlertOff?: boolean;\n isEventsFeed: boolean;\n isGiftsFeed: boolean;\n isLockFull?: boolean;\n isNewsFeed: boolean;\n isSchoolsFeed: boolean;\n isSearch: boolean;\n isSearchDomain?: boolean;\n};\n\ntype TypeUtilityRequirements = TypeMenuItemsRequirements & TypeAlertProps;\n\nconst flagIcon = `<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"29\" height=\"28\" viewBox=\"0 0 29 28\"><title>Flag</title><path d=\"M5 4c0 .72-.39 1.36-1 1.72V25.5c0 .266-.234.5-.5.5h-1c-.266 0-.5-.234-.5-.5V5.72c-.61-.36-1-1-1-1.72 0-1.11.89-2 2-2s2 .89 2 2zm23 1v11.922c0 .578-.36.797-.812 1.03-1.766.954-3.72 1.814-5.766 1.814-2.875 0-4.25-2.188-7.656-2.188-2.484 0-5.094 1.125-7.25 2.28-.172.095-.328.142-.516.142-.547 0-1-.453-1-1V7.406c0-.375.187-.64.484-.86.375-.25.828-.468 1.234-.67 1.97-1 4.36-1.876 6.578-1.876 2.453 0 4.375.812 6.547 1.828.438.22.89.297 1.375.297C23.67 6.125 26.312 4 26.998 4c.548 0 1 .453 1 1z\"></path></svg>`;\nconst homeIcon = `<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"28\" viewBox=\"0 0 26 28\"><title>School</title><path d=\"M22 15.5V23c0 .547-.453 1-1 1h-6v-6h-4v6H5c-.547 0-1-.453-1-1v-7.5c0-.03.016-.063.016-.094L13 8l8.984 7.406c.016.03.016.063.016.094zm3.484-1.078l-.97 1.156c-.077.094-.202.156-.327.172h-.047c-.125 0-.234-.03-.328-.11L13 6.626 2.185 15.64c-.11.08-.234.126-.375.11-.124-.016-.25-.078-.327-.172l-.97-1.156c-.17-.203-.14-.53.064-.703L11.81 4.36c.657-.547 1.72-.547 2.376 0L18 7.547V4.5c0-.28.218-.5.5-.5h3c.28 0 .5.22.5.5v6.375l3.42 2.844c.204.17.235.5.064.702z\"></path></svg>`;\nconst starIcon = `<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"28\" viewBox=\"0 0 26 28\"><title>Star</title><path d=\"M26 10.11c0 .28-.203.546-.406.75l-5.672 5.53 1.344 7.812c.016.11.016.203.016.313 0 .406-.187.78-.64.78-.22 0-.44-.077-.626-.186L13 21.42 5.984 25.11c-.203.108-.406.186-.625.186-.454 0-.657-.375-.657-.78 0-.11.016-.204.03-.314L6.08 16.39.39 10.86c-.187-.204-.39-.47-.39-.75 0-.47.483-.657.874-.72l7.844-1.14 3.516-7.11c.14-.297.406-.64.766-.64s.625.343.766.64l3.516 7.11 7.844 1.14c.375.063.875.25.875.72z\"></path></svg>`;\nconst calendarIcon = `<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"28\" viewBox=\"0 0 26 28\"><title>Calendar</title><path d=\"M2 26h22V10H2v16zM8 7V2.5c0-.28-.22-.5-.5-.5h-1c-.28 0-.5.22-.5.5V7c0 .28.22.5.5.5h1c.28 0 .5-.22.5-.5zm12 0V2.5c0-.28-.22-.5-.5-.5h-1c-.28 0-.5.22-.5.5V7c0 .28.22.5.5.5h1c.28 0 .5-.22.5-.5zm6-1v20c0 1.094-.906 2-2 2H2c-1.094 0-2-.906-2-2V6c0-1.094.906-2 2-2h2V2.5C4 1.125 5.125 0 6.5 0h1C8.875 0 10 1.125 10 2.5V4h6V2.5C16 1.125 17.125 0 18.5 0h1C20.875 0 22 1.125 22 2.5V4h2c1.094 0 2 .906 2 2z\"></path></svg>`;\nconst mIcon = `<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"28\" viewBox=\"0 0 35 28\"><title>Gift</title><path d=\"M16 1.4C7.937 1.4 1.4 7.937 1.4 16S7.937 30.6 16 30.6c8.063 0 14.6-6.537 14.6-14.6S24.063 1.4 16 1.4zm3.38 22.66v-2.55h2L21 13l-4.68 8.36h-.38L11.11 13l-.27 8.55h2v2.55H6.08v-2.55H8l.45-11.5H6.42V7.5h4.54l5.16 9.19 5-9.27h4.51v2.55h-2.04l.61 11.49h2v2.55z\"></path></svg>`;\n\nconst TABLET = 768;\nconst DESKTOP = 1024;\nconst ANIMATION_OUT_SPEED = 400;\nconst ANIMATION_IN_SPEED = 800;\n\nconst ATTRIBUTE_LOCK = 'lock';\nconst WITH_ITEMS = 'data-items';\nconst LOCK_FULL = 'full';\n\nconst ELEMENT_NAME = 'umd-element-utility-header';\n\nconst IS_LOCK_FULL = `[${ATTRIBUTE_LOCK}=${LOCK_FULL}]`;\nconst IS_HAS_ITEMS = `[${WITH_ITEMS}=\"true\"]`;\nconst IS_WITHOUT_ITEMS = `[${WITH_ITEMS}=\"false\"]`;\n\nconst ELEMENT_UTILITY_DECLARATION = 'element-utility-declaration';\nconst ELEMENT_UTILITY_CONTAINTER = 'element-utility-container';\nconst ELEMENT_UTILITY_LOCK = 'umd-element-nav-utility-lock';\nconst ELEMENT_UTILITY_WRAPPER = 'umd-element-nav-utility-wrapper';\nconst ELEMENT_UTILITY_LOGO = 'umd-element-nav-utility-logo';\nconst ELEMENT_UTILITY_LOGO_COLUMN = 'umd-element-nav-utility-logo-column';\nconst ELEMENT_UTILITY_MENU = 'umd-element-nav-utility-menu';\nconst ELEMENT_UTILITY_MOBILE_MENU = 'umd-element-nav-utility-mobile-menu';\nconst ELEMENT_UTILITY_MOBILE_BUTTON = 'umd-element-nav-utility-mobile-button';\nconst ELEMENT_UTILITY_SEARCH_BUTTON = 'umd-element-nav-utility-search-button';\n\nconst OVERWRITE_LOCK_FULL = `.${ELEMENT_UTILITY_CONTAINTER}${IS_LOCK_FULL} .${ELEMENT_UTILITY_LOCK}`;\n\nconst OVERWRITE_CONTAINER_WITH_ITEMS = `.${ELEMENT_UTILITY_CONTAINTER}${IS_HAS_ITEMS}`;\nconst OVERWRITE_CONTAINER_WITHOUT_ITEMS = `.${ELEMENT_UTILITY_CONTAINTER}${IS_WITHOUT_ITEMS}`;\nconst OVERWRIE_WRAPPER_WITH_ITEMS = `${OVERWRITE_CONTAINER_WITH_ITEMS} .${ELEMENT_UTILITY_WRAPPER}`;\nconst OVERWRIE_WRAPPER_WITHOUT_ITEMS = `${OVERWRITE_CONTAINER_WITHOUT_ITEMS} .${ELEMENT_UTILITY_WRAPPER}`;\n\nconst isDesktop = () => window.innerWidth >= DESKTOP;\n\nconst TOP_TWENTY_TEXT = `A Top 20 Public Research University`;\n\n// prettier-ignore\nconst LockStyles = `\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_UTILITY_LOCK}`]: layout.space.horizontal.larger,\n },\n })}\n\n ${jssToCSS({\n styleObj: {\n [`${OVERWRITE_LOCK_FULL}`]: layout.space.horizontal.full,\n },\n })}\n`;\n\n// prettier-ignore\nconst WrapperStyles = `\n .${ELEMENT_UTILITY_WRAPPER} {\n display: flex;\n align-items: center;\n justify-content: space-between;\n position: relative;\n min-height: 44px;\n }\n\n .${ELEMENT_UTILITY_WRAPPER} > a {\n color: ${token.color.white};\n text-transform: uppercase;\n }\n\n .${ELEMENT_UTILITY_WRAPPER} > a:hover,\n .${ELEMENT_UTILITY_WRAPPER} > a:focus {\n text-decoration: underline;\n }\n\n ${OVERWRIE_WRAPPER_WITHOUT_ITEMS} {\n display: flex;\n justify-content: center;\n justify-self: center;\n }\n`;\n\n// prettier-ignore\nconst MenuStyles = `\n .${ELEMENT_UTILITY_MENU} {\n display: flex;\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MENU} {\n flex-direction: column;\n }\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MENU} {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n }\n\n .${ELEMENT_UTILITY_MENU} a {\n color: ${token.color.white};\n text-decoration: none;\n text-transform: uppercase;\n }\n\n .${ELEMENT_UTILITY_MENU} > * {\n display: flex;\n align-items: center;\n gap: 4px;\n height: 100%;\n padding: ${token.spacing.min} ${token.spacing.sm};\n font-weight: 700;\n font-size: 13px;\n transition: background ${ANIMATION_IN_SPEED}ms;\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MENU} > * {\n justify-content: space-between;\n }\n }\n\n .${ELEMENT_UTILITY_MENU} > *[aria-expanded=\"true\"] {\n background-color: ${token.color.redDark};\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_CONTAINTER} .${ELEMENT_UTILITY_MENU} > * {\n border-top: 1px solid ${token.color.gray.lighter};\n color: ${token.color.red};\n order: 2;\n transition: background ${ANIMATION_OUT_SPEED}ms, color ${ANIMATION_OUT_SPEED}ms;\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MENU} > *:first-child {\n border-top: none;\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MENU} > a:hover,\n .${ELEMENT_UTILITY_MENU} > a:focus {\n background-color: ${token.color.red};\n color: ${token.color.white};\n transition: background ${ANIMATION_IN_SPEED}ms, color ${ANIMATION_IN_SPEED}ms;\n }\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MENU} > *:hover,\n .${ELEMENT_UTILITY_MENU} > *:focus {\n background-color: ${token.color.redDark};\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MENU} > a:hover svg,\n .${ELEMENT_UTILITY_MENU} > a:focus svg {\n fill: ${token.color.white};\n }\n }\n\n .${ELEMENT_UTILITY_SEARCH_BUTTON} svg {\n height: 22px;\n width: inherit;\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_SEARCH_BUTTON} {\n display: none;\n }\n }\n\n .${ELEMENT_UTILITY_MENU} svg {\n max-width: 15px;\n transition: fill ${ANIMATION_OUT_SPEED}ms;\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MENU} svg {\n fill: ${token.color.red};\n transition: fill ${ANIMATION_IN_SPEED}ms;\n }\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MENU} svg {\n fill: ${token.color.white};\n }\n }\n`;\n\n// prettier-ignore\nconst MobileMenuStyles = `\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU} {\n position: absolute;\n left: -${token.spacing['2xl']};\n right: -${token.spacing['2xl']};\n top: 44px;\n box-shadow: 0 5px 5px 1px rgba(0, 0, 0, .2);\n height: 0;\n overflow: hidden;\n transition: height ${ANIMATION_OUT_SPEED}ms;\n display: flex;\n flex-direction: column;\n background-color: ${token.color.white};\n }\n }\n\n @container (max-width: ${TABLET - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU} {\n left: -${token.spacing.md};\n right: -${token.spacing.md};\n }\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU} {\n display: flex;\n height: inherit !important;\n margin-left: auto;\n position: relative;\n margin-right: -${token.spacing.md};\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU}[aria-hidden=\"true\"] {\n transition: height ${ANIMATION_OUT_SPEED}ms;\n display: none;\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU}[aria-hidden=\"false\"] {\n transition: height ${ANIMATION_IN_SPEED}ms;\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU} > button {\n display: none;\n }\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU} > button {\n transition: background ${ANIMATION_OUT_SPEED}ms;\n }\n }\n`\n\n// prettier-ignore\nconst MobileButtonStyles = `\n .${ELEMENT_UTILITY_MOBILE_BUTTON} {\n margin-left: auto;\n height: 100%;\n padding: ${token.spacing.xs} ${token.spacing.md};\n margin-right: -${token.spacing.md};\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n @media (min-width: ${TABLET}px) {\n margin-right: -${token.spacing['2xl']};\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MOBILE_BUTTON} {\n display: none;\n }\n }\n\n .${ELEMENT_UTILITY_MOBILE_BUTTON}:hover,\n .${ELEMENT_UTILITY_MOBILE_BUTTON}:focus {\n background-color: ${token.color.redDark};\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_BUTTON} svg {\n fill: ${token.color.white};\n width: 18px;\n height: 18px;\n }\n }\n`;\n\n// prettier-ignore\nconst LogoStyles = `\n .${ELEMENT_UTILITY_LOGO_COLUMN} {\n display: flex;\n opacity: 0;\n transition: opacity .3s ease-in;\n padding: 10px 0;\n }\n\n @media (max-width: ${TABLET - 1}px) {\n .${ELEMENT_UTILITY_LOGO_COLUMN} {\n flex-direction: column;\n gap: ${token.spacing.min};\n text-align: center;\n }\n }\n\n @media (min-width: ${TABLET}px) {\n .${ELEMENT_UTILITY_LOGO_COLUMN} {\n align-items: center;\n gap: ${token.spacing.xs};\n }\n }\n\n .${ELEMENT_UTILITY_LOGO_COLUMN} * {\n color: ${token.color.white};\n\n }\n\n .${ELEMENT_UTILITY_LOGO_COLUMN} > p {\n display: block;\n font-size: 11px;\n }\n\n @media (max-width: ${TABLET - 1}px) {\n ${OVERWRIE_WRAPPER_WITH_ITEMS} .${ELEMENT_UTILITY_LOGO_COLUMN} > p {\n display: none;\n }\n }\n\n @media (min-width: ${TABLET}px) {\n .${ELEMENT_UTILITY_LOGO_COLUMN} > p {\n position: relative;\n font-size: 13px;\n }\n\n .${ELEMENT_UTILITY_LOGO_COLUMN} > p:before {\n content: '';\n position: absolute;\n left: -4px;\n height: 100%;\n width: 1px;\n background-color: ${token.color.white};\n }\n }\n\n .${ELEMENT_UTILITY_LOGO} {\n font-family: Crimson Text, Georgia, serif;\n letter-spacing: 1px;\n font-size: 14px;\n text-transform: uppercase;\n }\n`;\n\nlet STYLES_NAVIGATION_UTILITY = `\n .${ELEMENT_UTILITY_DECLARATION} {\n container: ${ELEMENT_NAME} / inline-size;\n }\n\n .${ELEMENT_UTILITY_CONTAINTER} {\n display: block;\n background-color: ${token.color.red};\n position: relative;\n z-index: 999;\n }\n\n ${LockStyles}\n ${WrapperStyles}\n ${LogoStyles}\n ${MenuStyles}\n ${MobileButtonStyles}\n ${MobileMenuStyles}\n ${STYLES_NAV_ALERT}\n ${UtilitySearch.Styles}\n`;\n\nconst CreateSearchFormButton = ({\n expandElement,\n}: {\n expandElement: HTMLDivElement | HTMLFormElement;\n}) => {\n const button = document.createElement('button');\n const elements = Array.from(expandElement.querySelectorAll('div'));\n let focusCallback = () => {};\n\n const eventClose = () => {\n expandElement.style.height = `0`;\n\n setTimeout(() => {\n expandElement.style.display = 'none';\n expandElement.setAttribute('aria-hidden', 'true');\n button.setAttribute('aria-expanded', 'false');\n button.focus();\n\n if (focusCallback) {\n focusCallback();\n focusCallback = () => {};\n }\n }, ANIMATION_OUT_SPEED + 100);\n };\n\n const eventOpen = () => {\n const focusElement = expandElement.querySelector(\n 'input[type=\"text\"]',\n ) as HTMLInputElement;\n\n expandElement.style.display = 'block';\n\n setTimeout(() => {\n const size = elements.reduce((accumulator, currentValue) => {\n return accumulator + currentValue.offsetHeight;\n }, 0);\n\n expandElement.setAttribute('aria-hidden', 'false');\n expandElement.style.height = `${size}px`;\n button.setAttribute('aria-expanded', 'true');\n if (focusElement) focusElement.focus();\n }, 100);\n\n focusCallback = handleKeyboardNavigation({\n element: expandElement,\n action: () => eventClose(),\n });\n };\n\n button.setAttribute('aria-label', 'enable the search form');\n button.setAttribute('type', 'button');\n button.innerHTML = `${iconSearch}`;\n button.setAttribute('aria-controls', UtilitySearch.Elements.form);\n button.classList.add(ELEMENT_UTILITY_SEARCH_BUTTON);\n button.setAttribute('aria-expanded', 'false');\n\n button.addEventListener('click', () => {\n const isExpanded = button.getAttribute('aria-expanded') === 'true';\n\n if (isExpanded) {\n eventClose();\n } else {\n eventOpen();\n }\n });\n\n return button;\n};\n\nconst CreateMobileMenuButton = ({\n expandElement,\n}: {\n expandElement: HTMLDivElement;\n}) => {\n const button = document.createElement('button');\n let focusCallback = () => {};\n\n const eventClose = () => {\n expandElement.style.height = `0`;\n\n setTimeout(() => {\n expandElement.style.display = 'none';\n expandElement.setAttribute('aria-hidden', 'true');\n button.setAttribute('aria-expanded', 'false');\n button.focus();\n\n if (focusCallback) {\n focusCallback();\n focusCallback = () => {};\n }\n }, ANIMATION_OUT_SPEED + 100);\n };\n\n const eventOpen = () => {\n const wrapper = expandElement.querySelector(\n `.${ELEMENT_UTILITY_MENU}`,\n ) as HTMLElement;\n const focusElement = expandElement.querySelector('a') as HTMLAnchorElement;\n\n expandElement.style.display = 'block';\n\n setTimeout(() => {\n expandElement.setAttribute('aria-hidden', 'false');\n expandElement.style.height = `${wrapper.offsetHeight}px`;\n button.setAttribute('aria-expanded', 'true');\n if (focusElement) focusElement.focus();\n }, 100);\n\n focusCallback = handleKeyboardNavigation({\n element: expandElement,\n action: () => eventClose(),\n });\n };\n\n button.innerHTML = `${iconChevronDown}`;\n button.setAttribute('type', 'button');\n button.setAttribute('aria-label', 'toggle mobile menu');\n button.setAttribute('aria-controls', `${ELEMENT_UTILITY_MOBILE_MENU}`);\n button.classList.add(ELEMENT_UTILITY_MOBILE_BUTTON);\n\n button.addEventListener('click', () => {\n const isExpanded = button.getAttribute('aria-expanded') === 'true';\n\n if (isExpanded) {\n eventClose();\n } else {\n eventOpen();\n }\n });\n\n return button;\n};\n\nconst createLogoElement = () => {\n const logo = document.createElement('a');\n\n logo.innerHTML = 'University of Maryland';\n logo.setAttribute('href', 'https://umd.edu');\n logo.setAttribute('target', '_blank');\n logo.setAttribute('rel', 'noopener noreferrer');\n logo.classList.add(ELEMENT_UTILITY_LOGO);\n\n return logo;\n};\n\nconst createLogoColumn = () => {\n const container = document.createElement('div');\n const text = document.createElement('p');\n const logo = createLogoElement();\n\n text.innerHTML = TOP_TWENTY_TEXT;\n\n container.appendChild(logo);\n container.appendChild(text);\n container.classList.add(ELEMENT_UTILITY_LOGO_COLUMN);\n\n setTimeout(() => {\n container.style.opacity = '1';\n }, 400);\n\n return container;\n};\n\nconst CreateMenuItems = ({\n isAdmissionsFeed,\n isEventsFeed,\n isGiftsFeed,\n isNewsFeed,\n isSchoolsFeed,\n isSearch,\n giftUrl,\n isSearchDomain,\n}: TypeMenuItemsRequirements) => {\n const container = document.createElement('div');\n\n const isValidUrl = (url: string) => {\n try {\n new URL(url);\n } catch (e) {\n return false;\n }\n return true;\n };\n\n const makeLinkElement = ({\n name,\n icon,\n url,\n }: {\n name: string;\n icon: string;\n url: string;\n }) => {\n const tag = document.createElement('a');\n\n tag.setAttribute('href', url);\n tag.setAttribute('target', '_blank');\n tag.setAttribute('rel', 'noopener noreferrer');\n tag.innerHTML = `${icon} <span>${name}</span>`;\n\n return tag;\n };\n\n let hasItems = false;\n\n if (isAdmissionsFeed) {\n hasItems = true;\n\n container.appendChild(\n makeLinkElement({\n name: 'Admissions',\n url: 'https://umd.edu/admissions',\n icon: flagIcon,\n }),\n );\n }\n\n if (isSchoolsFeed) {\n hasItems = true;\n\n container.appendChild(\n makeLinkElement({\n name: 'Colleges & Schools',\n url: 'https://umd.edu/colleges-and-schools',\n icon: homeIcon,\n }),\n );\n }\n\n if (isNewsFeed) {\n hasItems = true;\n\n container.appendChild(\n makeLinkElement({\n name: 'News',\n url: 'https://today.umd.edu/',\n icon: starIcon,\n }),\n );\n }\n\n if (isEventsFeed) {\n hasItems = true;\n\n container.appendChild(\n makeLinkElement({\n name: 'Events',\n url: 'https://calendar.umd.edu',\n icon: calendarIcon,\n }),\n );\n }\n\n if (isGiftsFeed) {\n hasItems = true;\n const getURL = () => {\n const defaultURL = 'https://giving.umd.edu/giving';\n\n if (!giftUrl) return defaultURL;\n\n const validURL = giftUrl ? isValidUrl(giftUrl) : null;\n return validURL ? giftUrl : defaultURL;\n };\n\n container.appendChild(\n makeLinkElement({\n name: 'Make a Gift',\n url: getURL(),\n icon: mIcon,\n }),\n );\n }\n\n if (isSearch || isSearchDomain) {\n hasItems = true;\n const formElement = UtilitySearch.CreateElement({ isSearchDomain });\n const button = CreateSearchFormButton({\n expandElement: formElement,\n });\n\n container.appendChild(button);\n container.appendChild(formElement);\n }\n\n container.classList.add(ELEMENT_UTILITY_MENU);\n\n if (!hasItems) return null;\n\n return container;\n};\n\nconst CreateNavigationUtility = (props: TypeUtilityRequirements) =>\n (() => {\n {\n const { isLockFull, isAlertOff } = props;\n const declaration = document.createElement('div');\n const container = document.createElement('div');\n const lock = document.createElement('div');\n const wrapper = document.createElement('div');\n const logoColumn = createLogoColumn();\n\n const secondaryCta = elementStyles.action.secondary.normal;\n\n let styles = STYLES_NAVIGATION_UTILITY + jssEntryToCSS(secondaryCta);\n\n const setLayout = () => {\n const menuItems = CreateMenuItems({ ...props });\n const mobileMenu = document.createElement('div');\n const mobileMenuButton = CreateMobileMenuButton({\n expandElement: mobileMenu,\n });\n\n mobileMenu.setAttribute('id', `${ELEMENT_UTILITY_MOBILE_MENU}`);\n mobileMenu.classList.add(ELEMENT_UTILITY_MOBILE_MENU);\n mobileMenu.setAttribute('aria-hidden', (!isDesktop()).toString());\n\n if (menuItems) {\n mobileMenu.appendChild(menuItems);\n wrapper.appendChild(mobileMenuButton);\n wrapper.appendChild(mobileMenu);\n container.setAttribute(WITH_ITEMS, 'true');\n } else {\n container.setAttribute(WITH_ITEMS, 'false');\n }\n };\n\n const resizeEvent = () => {\n const isDesktop = window.innerWidth >= DESKTOP;\n\n const form = container.querySelector(`.${UtilitySearch.Elements.form}`);\n const menu = container.querySelector(`.${ELEMENT_UTILITY_MOBILE_MENU}`);\n\n if (!form || !menu) return;\n\n if (isDesktop) {\n menu.setAttribute('aria-hidden', 'false');\n form.setAttribute('aria-hidden', 'true');\n form.setAttribute('layout', 'desktop');\n } else {\n menu.setAttribute('aria-hidden', 'true');\n form.setAttribute('aria-hidden', 'false');\n form.setAttribute('layout', 'mobile');\n }\n };\n\n const load = async () => {\n if (!isAlertOff) {\n const alert = await createNavAlert(props);\n\n if (alert) {\n container.insertBefore(alert?.element, container.firstChild);\n }\n }\n\n setLayout();\n resizeEvent();\n };\n\n const showAlert = async () => {\n const isCurrentAlert = container.querySelector(\n `.${ALERT_CONSTANTS.ELEMENTS.CONTAINER}`,\n );\n\n if (isCurrentAlert) return;\n\n const alert = await createNavAlert(props);\n\n if (alert) {\n container.insertBefore(alert?.element, container.firstChild);\n }\n };\n\n const hideAlert = () => {\n const alert = container.querySelector(\n `.${ALERT_CONSTANTS.ELEMENTS.CONTAINER}`,\n );\n\n if (alert) {\n alert.remove();\n }\n };\n\n wrapper.appendChild(logoColumn);\n wrapper.classList.add(ELEMENT_UTILITY_WRAPPER);\n\n lock.appendChild(wrapper);\n lock.classList.add(ELEMENT_UTILITY_LOCK);\n\n container.appendChild(lock);\n container.classList.add(ELEMENT_UTILITY_CONTAINTER);\n if (isLockFull) container.setAttribute(ATTRIBUTE_LOCK, LOCK_FULL);\n\n declaration.appendChild(container);\n declaration.classList.add(ELEMENT_UTILITY_DECLARATION);\n\n load();\n window.addEventListener('resize', resizeEvent);\n\n return {\n element: declaration,\n styles,\n events: {\n showAlert,\n hideAlert,\n },\n };\n }\n })();\n\nexport default CreateNavigationUtility;\n"],"names":["jssToCSS","layout","token","STYLES_NAV_ALERT","UtilitySearch","handleKeyboardNavigation","iconSearch","iconChevronDown","elementStyles","styles","jssEntryToCSS","isDesktop","alert","createNavAlert","ALERT_CONSTANTS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../source/composite/navigation/utility/index.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport * as elementStyles from '@universityofmaryland/web-styles-library/element';\nimport * as layout from '@universityofmaryland/web-styles-library/layout';\nimport {\n jssToCSS,\n jssEntryToCSS,\n} from '@universityofmaryland/web-utilities-library/styles';\nimport { handleKeyboardNavigation } from '@universityofmaryland/web-utilities-library/events';\nimport { search as iconSearch } from '@universityofmaryland/web-icons-library/search';\nimport { chevron_down as iconChevronDown } from '@universityofmaryland/web-icons-library/controls';\nimport {\n createNavAlert,\n STYLES_NAV_ALERT,\n ALERT_CONSTANTS,\n TypeAlertProps,\n} from './alert';\nimport UtilitySearch from './search';\n\ntype TypeMenuItemsRequirements = {\n alertUrl?: string | null;\n giftUrl?: string;\n isAdmissionsFeed: boolean;\n isAlertOff?: boolean;\n isEventsFeed: boolean;\n isGiftsFeed: boolean;\n isLockFull?: boolean;\n isNewsFeed: boolean;\n isSchoolsFeed: boolean;\n isSearch: boolean;\n isSearchDomain?: boolean;\n};\n\ntype TypeUtilityRequirements = TypeMenuItemsRequirements & TypeAlertProps;\n\nconst flagIcon = `<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"29\" height=\"28\" viewBox=\"0 0 29 28\"><title>Flag</title><path d=\"M5 4c0 .72-.39 1.36-1 1.72V25.5c0 .266-.234.5-.5.5h-1c-.266 0-.5-.234-.5-.5V5.72c-.61-.36-1-1-1-1.72 0-1.11.89-2 2-2s2 .89 2 2zm23 1v11.922c0 .578-.36.797-.812 1.03-1.766.954-3.72 1.814-5.766 1.814-2.875 0-4.25-2.188-7.656-2.188-2.484 0-5.094 1.125-7.25 2.28-.172.095-.328.142-.516.142-.547 0-1-.453-1-1V7.406c0-.375.187-.64.484-.86.375-.25.828-.468 1.234-.67 1.97-1 4.36-1.876 6.578-1.876 2.453 0 4.375.812 6.547 1.828.438.22.89.297 1.375.297C23.67 6.125 26.312 4 26.998 4c.548 0 1 .453 1 1z\"></path></svg>`;\nconst homeIcon = `<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"28\" viewBox=\"0 0 26 28\"><title>School</title><path d=\"M22 15.5V23c0 .547-.453 1-1 1h-6v-6h-4v6H5c-.547 0-1-.453-1-1v-7.5c0-.03.016-.063.016-.094L13 8l8.984 7.406c.016.03.016.063.016.094zm3.484-1.078l-.97 1.156c-.077.094-.202.156-.327.172h-.047c-.125 0-.234-.03-.328-.11L13 6.626 2.185 15.64c-.11.08-.234.126-.375.11-.124-.016-.25-.078-.327-.172l-.97-1.156c-.17-.203-.14-.53.064-.703L11.81 4.36c.657-.547 1.72-.547 2.376 0L18 7.547V4.5c0-.28.218-.5.5-.5h3c.28 0 .5.22.5.5v6.375l3.42 2.844c.204.17.235.5.064.702z\"></path></svg>`;\nconst starIcon = `<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"28\" viewBox=\"0 0 26 28\"><title>Star</title><path d=\"M26 10.11c0 .28-.203.546-.406.75l-5.672 5.53 1.344 7.812c.016.11.016.203.016.313 0 .406-.187.78-.64.78-.22 0-.44-.077-.626-.186L13 21.42 5.984 25.11c-.203.108-.406.186-.625.186-.454 0-.657-.375-.657-.78 0-.11.016-.204.03-.314L6.08 16.39.39 10.86c-.187-.204-.39-.47-.39-.75 0-.47.483-.657.874-.72l7.844-1.14 3.516-7.11c.14-.297.406-.64.766-.64s.625.343.766.64l3.516 7.11 7.844 1.14c.375.063.875.25.875.72z\"></path></svg>`;\nconst calendarIcon = `<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"28\" viewBox=\"0 0 26 28\"><title>Calendar</title><path d=\"M2 26h22V10H2v16zM8 7V2.5c0-.28-.22-.5-.5-.5h-1c-.28 0-.5.22-.5.5V7c0 .28.22.5.5.5h1c.28 0 .5-.22.5-.5zm12 0V2.5c0-.28-.22-.5-.5-.5h-1c-.28 0-.5.22-.5.5V7c0 .28.22.5.5.5h1c.28 0 .5-.22.5-.5zm6-1v20c0 1.094-.906 2-2 2H2c-1.094 0-2-.906-2-2V6c0-1.094.906-2 2-2h2V2.5C4 1.125 5.125 0 6.5 0h1C8.875 0 10 1.125 10 2.5V4h6V2.5C16 1.125 17.125 0 18.5 0h1C20.875 0 22 1.125 22 2.5V4h2c1.094 0 2 .906 2 2z\"></path></svg>`;\nconst mIcon = `<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"28\" viewBox=\"0 0 35 28\"><title>Gift</title><path d=\"M16 1.4C7.937 1.4 1.4 7.937 1.4 16S7.937 30.6 16 30.6c8.063 0 14.6-6.537 14.6-14.6S24.063 1.4 16 1.4zm3.38 22.66v-2.55h2L21 13l-4.68 8.36h-.38L11.11 13l-.27 8.55h2v2.55H6.08v-2.55H8l.45-11.5H6.42V7.5h4.54l5.16 9.19 5-9.27h4.51v2.55h-2.04l.61 11.49h2v2.55z\"></path></svg>`;\n\nconst TABLET = 768;\nconst DESKTOP = 1024;\nconst ANIMATION_OUT_SPEED = 400;\nconst ANIMATION_IN_SPEED = 800;\n\nconst ATTRIBUTE_LOCK = 'lock';\nconst WITH_ITEMS = 'data-items';\nconst LOCK_FULL = 'full';\n\nconst ELEMENT_NAME = 'umd-element-utility-header';\n\nconst IS_LOCK_FULL = `[${ATTRIBUTE_LOCK}=${LOCK_FULL}]`;\nconst IS_HAS_ITEMS = `[${WITH_ITEMS}=\"true\"]`;\nconst IS_WITHOUT_ITEMS = `[${WITH_ITEMS}=\"false\"]`;\n\nconst ELEMENT_UTILITY_DECLARATION = 'element-utility-declaration';\nconst ELEMENT_UTILITY_CONTAINTER = 'element-utility-container';\nconst ELEMENT_UTILITY_LOCK = 'umd-element-nav-utility-lock';\nconst ELEMENT_UTILITY_WRAPPER = 'umd-element-nav-utility-wrapper';\nconst ELEMENT_UTILITY_LOGO = 'umd-element-nav-utility-logo';\nconst ELEMENT_UTILITY_LOGO_COLUMN = 'umd-element-nav-utility-logo-column';\nconst ELEMENT_UTILITY_MENU = 'umd-element-nav-utility-menu';\nconst ELEMENT_UTILITY_MOBILE_MENU = 'umd-element-nav-utility-mobile-menu';\nconst ELEMENT_UTILITY_MOBILE_BUTTON = 'umd-element-nav-utility-mobile-button';\nconst ELEMENT_UTILITY_SEARCH_BUTTON = 'umd-element-nav-utility-search-button';\n\nconst OVERWRITE_LOCK_FULL = `.${ELEMENT_UTILITY_CONTAINTER}${IS_LOCK_FULL} .${ELEMENT_UTILITY_LOCK}`;\n\nconst OVERWRITE_CONTAINER_WITH_ITEMS = `.${ELEMENT_UTILITY_CONTAINTER}${IS_HAS_ITEMS}`;\nconst OVERWRITE_CONTAINER_WITHOUT_ITEMS = `.${ELEMENT_UTILITY_CONTAINTER}${IS_WITHOUT_ITEMS}`;\nconst OVERWRIE_WRAPPER_WITH_ITEMS = `${OVERWRITE_CONTAINER_WITH_ITEMS} .${ELEMENT_UTILITY_WRAPPER}`;\nconst OVERWRIE_WRAPPER_WITHOUT_ITEMS = `${OVERWRITE_CONTAINER_WITHOUT_ITEMS} .${ELEMENT_UTILITY_WRAPPER}`;\n\nconst isDesktop = () => window.innerWidth >= DESKTOP;\n\nconst TOP_TWENTY_TEXT = `A Top 20 Public Research University`;\n\n// prettier-ignore\nconst LockStyles = `\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_UTILITY_LOCK}`]: layout.space.horizontal.larger,\n },\n })}\n\n ${jssToCSS({\n styleObj: {\n [`${OVERWRITE_LOCK_FULL}`]: layout.space.horizontal.full,\n },\n })}\n`;\n\n// prettier-ignore\nconst WrapperStyles = `\n .${ELEMENT_UTILITY_WRAPPER} {\n display: flex;\n align-items: center;\n justify-content: space-between;\n position: relative;\n min-height: 44px;\n }\n\n .${ELEMENT_UTILITY_WRAPPER} > a {\n color: ${token.color.white};\n text-transform: uppercase;\n }\n\n .${ELEMENT_UTILITY_WRAPPER} > a:hover,\n .${ELEMENT_UTILITY_WRAPPER} > a:focus {\n text-decoration: underline;\n }\n\n ${OVERWRIE_WRAPPER_WITHOUT_ITEMS} {\n display: flex;\n justify-content: center;\n justify-self: center;\n }\n`;\n\n// prettier-ignore\nconst MenuStyles = `\n .${ELEMENT_UTILITY_MENU} {\n display: flex;\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MENU} {\n flex-direction: column;\n }\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MENU} {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n }\n\n .${ELEMENT_UTILITY_MENU} a {\n color: ${token.color.white};\n text-decoration: none;\n text-transform: uppercase;\n }\n\n .${ELEMENT_UTILITY_MENU} > * {\n display: flex;\n align-items: center;\n gap: 4px;\n height: 100%;\n padding: ${token.spacing.min} ${token.spacing.sm};\n font-weight: 700;\n font-size: 13px;\n transition: background ${ANIMATION_IN_SPEED}ms;\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MENU} > * {\n justify-content: space-between;\n }\n }\n\n .${ELEMENT_UTILITY_MENU} > *[aria-expanded=\"true\"] {\n background-color: ${token.color.redDark};\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_CONTAINTER} .${ELEMENT_UTILITY_MENU} > * {\n border-top: 1px solid ${token.color.gray.lighter};\n color: ${token.color.red};\n order: 2;\n transition: background ${ANIMATION_OUT_SPEED}ms, color ${ANIMATION_OUT_SPEED}ms;\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MENU} > *:first-child {\n border-top: none;\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MENU} > a:hover,\n .${ELEMENT_UTILITY_MENU} > a:focus {\n background-color: ${token.color.red};\n color: ${token.color.white};\n transition: background ${ANIMATION_IN_SPEED}ms, color ${ANIMATION_IN_SPEED}ms;\n }\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MENU} > *:hover,\n .${ELEMENT_UTILITY_MENU} > *:focus {\n background-color: ${token.color.redDark};\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MENU} > a:hover svg,\n .${ELEMENT_UTILITY_MENU} > a:focus svg {\n fill: ${token.color.white};\n }\n }\n\n .${ELEMENT_UTILITY_SEARCH_BUTTON} svg {\n height: 22px;\n width: inherit;\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_SEARCH_BUTTON} {\n display: none;\n }\n }\n\n .${ELEMENT_UTILITY_MENU} svg {\n max-width: 15px;\n transition: fill ${ANIMATION_OUT_SPEED}ms;\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MENU} svg {\n fill: ${token.color.red};\n transition: fill ${ANIMATION_IN_SPEED}ms;\n }\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MENU} svg {\n fill: ${token.color.white};\n }\n }\n`;\n\n// prettier-ignore\nconst MobileMenuStyles = `\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU} {\n position: absolute;\n left: -${token.spacing['2xl']};\n right: -${token.spacing['2xl']};\n top: 44px;\n box-shadow: 0 5px 5px 1px rgba(0, 0, 0, .2);\n height: 0;\n overflow: hidden;\n transition: height ${ANIMATION_OUT_SPEED}ms;\n display: flex;\n flex-direction: column;\n background-color: ${token.color.white};\n }\n }\n\n @container (max-width: ${TABLET - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU} {\n left: -${token.spacing.md};\n right: -${token.spacing.md};\n }\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU} {\n display: flex;\n height: inherit !important;\n margin-left: auto;\n position: relative;\n margin-right: -${token.spacing.md};\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU}[aria-hidden=\"true\"] {\n transition: height ${ANIMATION_OUT_SPEED}ms;\n display: none;\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU}[aria-hidden=\"false\"] {\n transition: height ${ANIMATION_IN_SPEED}ms;\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU} > button {\n display: none;\n }\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU} > button {\n transition: background ${ANIMATION_OUT_SPEED}ms;\n }\n }\n`\n\n// prettier-ignore\nconst MobileButtonStyles = `\n .${ELEMENT_UTILITY_MOBILE_BUTTON} {\n margin-left: auto;\n height: 100%;\n padding: ${token.spacing.xs} ${token.spacing.md};\n margin-right: -${token.spacing.md};\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n @media (min-width: ${TABLET}px) {\n margin-right: -${token.spacing['2xl']};\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MOBILE_BUTTON} {\n display: none;\n }\n }\n\n .${ELEMENT_UTILITY_MOBILE_BUTTON}:hover,\n .${ELEMENT_UTILITY_MOBILE_BUTTON}:focus {\n background-color: ${token.color.redDark};\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_BUTTON} svg {\n fill: ${token.color.white};\n width: 18px;\n height: 18px;\n }\n }\n`;\n\n// prettier-ignore\nconst LogoStyles = `\n .${ELEMENT_UTILITY_LOGO_COLUMN} {\n display: flex;\n opacity: 0;\n transition: opacity .3s ease-in;\n padding: 10px 0;\n }\n\n @media (max-width: ${TABLET - 1}px) {\n .${ELEMENT_UTILITY_LOGO_COLUMN} {\n flex-direction: column;\n gap: ${token.spacing.min};\n text-align: center;\n }\n }\n\n @media (min-width: ${TABLET}px) {\n .${ELEMENT_UTILITY_LOGO_COLUMN} {\n align-items: center;\n gap: ${token.spacing.xs};\n }\n }\n\n .${ELEMENT_UTILITY_LOGO_COLUMN} * {\n color: ${token.color.white};\n\n }\n\n .${ELEMENT_UTILITY_LOGO_COLUMN} > p {\n display: block;\n font-size: 11px;\n }\n\n @media (max-width: ${TABLET - 1}px) {\n ${OVERWRIE_WRAPPER_WITH_ITEMS} .${ELEMENT_UTILITY_LOGO_COLUMN} > p {\n display: none;\n }\n }\n\n @media (min-width: ${TABLET}px) {\n .${ELEMENT_UTILITY_LOGO_COLUMN} > p {\n position: relative;\n font-size: 13px;\n }\n\n .${ELEMENT_UTILITY_LOGO_COLUMN} > p:before {\n content: '';\n position: absolute;\n left: -7px;\n height: 100%;\n width: 1px;\n background-color: ${token.color.white};\n }\n }\n\n .${ELEMENT_UTILITY_LOGO} {\n font-family: Crimson Text, Georgia, serif;\n letter-spacing: 1px;\n font-size: 14px;\n text-transform: uppercase;\n }\n`;\n\nlet STYLES_NAVIGATION_UTILITY = `\n .${ELEMENT_UTILITY_DECLARATION} {\n container: ${ELEMENT_NAME} / inline-size;\n }\n\n .${ELEMENT_UTILITY_CONTAINTER} {\n display: block;\n background-color: ${token.color.red};\n position: relative;\n z-index: 999;\n }\n\n ${LockStyles}\n ${WrapperStyles}\n ${LogoStyles}\n ${MenuStyles}\n ${MobileButtonStyles}\n ${MobileMenuStyles}\n ${STYLES_NAV_ALERT}\n ${UtilitySearch.Styles}\n`;\n\nconst CreateSearchFormButton = ({\n expandElement,\n}: {\n expandElement: HTMLDivElement | HTMLFormElement;\n}) => {\n const button = document.createElement('button');\n const elements = Array.from(expandElement.querySelectorAll('div'));\n let focusCallback = () => {};\n\n const eventClose = () => {\n expandElement.style.height = `0`;\n\n setTimeout(() => {\n expandElement.style.display = 'none';\n expandElement.setAttribute('aria-hidden', 'true');\n button.setAttribute('aria-expanded', 'false');\n button.focus();\n\n if (focusCallback) {\n focusCallback();\n focusCallback = () => {};\n }\n }, ANIMATION_OUT_SPEED + 100);\n };\n\n const eventOpen = () => {\n const focusElement = expandElement.querySelector(\n 'input[type=\"text\"]',\n ) as HTMLInputElement;\n\n expandElement.style.display = 'block';\n\n setTimeout(() => {\n const size = elements.reduce((accumulator, currentValue) => {\n return accumulator + currentValue.offsetHeight;\n }, 0);\n\n expandElement.setAttribute('aria-hidden', 'false');\n expandElement.style.height = `${size}px`;\n button.setAttribute('aria-expanded', 'true');\n if (focusElement) focusElement.focus();\n }, 100);\n\n focusCallback = handleKeyboardNavigation({\n element: expandElement,\n action: () => eventClose(),\n });\n };\n\n button.setAttribute('aria-label', 'enable the search form');\n button.setAttribute('type', 'button');\n button.innerHTML = `${iconSearch}`;\n button.setAttribute('aria-controls', UtilitySearch.Elements.form);\n button.classList.add(ELEMENT_UTILITY_SEARCH_BUTTON);\n button.setAttribute('aria-expanded', 'false');\n\n button.addEventListener('click', () => {\n const isExpanded = button.getAttribute('aria-expanded') === 'true';\n\n if (isExpanded) {\n eventClose();\n } else {\n eventOpen();\n }\n });\n\n return button;\n};\n\nconst CreateMobileMenuButton = ({\n expandElement,\n}: {\n expandElement: HTMLDivElement;\n}) => {\n const button = document.createElement('button');\n let focusCallback = () => {};\n\n const eventClose = () => {\n expandElement.style.height = `0`;\n\n setTimeout(() => {\n expandElement.style.display = 'none';\n expandElement.setAttribute('aria-hidden', 'true');\n button.setAttribute('aria-expanded', 'false');\n button.focus();\n\n if (focusCallback) {\n focusCallback();\n focusCallback = () => {};\n }\n }, ANIMATION_OUT_SPEED + 100);\n };\n\n const eventOpen = () => {\n const wrapper = expandElement.querySelector(\n `.${ELEMENT_UTILITY_MENU}`,\n ) as HTMLElement;\n const focusElement = expandElement.querySelector('a') as HTMLAnchorElement;\n\n expandElement.style.display = 'block';\n\n setTimeout(() => {\n expandElement.setAttribute('aria-hidden', 'false');\n expandElement.style.height = `${wrapper.offsetHeight}px`;\n button.setAttribute('aria-expanded', 'true');\n if (focusElement) focusElement.focus();\n }, 100);\n\n focusCallback = handleKeyboardNavigation({\n element: expandElement,\n action: () => eventClose(),\n });\n };\n\n button.innerHTML = `${iconChevronDown}`;\n button.setAttribute('type', 'button');\n button.setAttribute('aria-label', 'toggle mobile menu');\n button.setAttribute('aria-controls', `${ELEMENT_UTILITY_MOBILE_MENU}`);\n button.classList.add(ELEMENT_UTILITY_MOBILE_BUTTON);\n\n button.addEventListener('click', () => {\n const isExpanded = button.getAttribute('aria-expanded') === 'true';\n\n if (isExpanded) {\n eventClose();\n } else {\n eventOpen();\n }\n });\n\n return button;\n};\n\nconst createLogoElement = () => {\n const logo = document.createElement('a');\n\n logo.innerHTML = 'University of Maryland';\n logo.setAttribute('href', 'https://umd.edu');\n logo.setAttribute('target', '_blank');\n logo.setAttribute('rel', 'noopener noreferrer');\n logo.classList.add(ELEMENT_UTILITY_LOGO);\n\n return logo;\n};\n\nconst createLogoColumn = () => {\n const container = document.createElement('div');\n const text = document.createElement('p');\n const logo = createLogoElement();\n\n text.innerHTML = TOP_TWENTY_TEXT;\n\n container.appendChild(logo);\n container.appendChild(text);\n container.classList.add(ELEMENT_UTILITY_LOGO_COLUMN);\n\n setTimeout(() => {\n container.style.opacity = '1';\n }, 400);\n\n return container;\n};\n\nconst CreateMenuItems = ({\n isAdmissionsFeed,\n isEventsFeed,\n isGiftsFeed,\n isNewsFeed,\n isSchoolsFeed,\n isSearch,\n giftUrl,\n isSearchDomain,\n}: TypeMenuItemsRequirements) => {\n const container = document.createElement('div');\n\n const isValidUrl = (url: string) => {\n try {\n new URL(url);\n } catch (e) {\n return false;\n }\n return true;\n };\n\n const makeLinkElement = ({\n name,\n icon,\n url,\n }: {\n name: string;\n icon: string;\n url: string;\n }) => {\n const tag = document.createElement('a');\n\n tag.setAttribute('href', url);\n tag.setAttribute('target', '_blank');\n tag.setAttribute('rel', 'noopener noreferrer');\n tag.innerHTML = `${icon} <span>${name}</span>`;\n\n return tag;\n };\n\n let hasItems = false;\n\n if (isAdmissionsFeed) {\n hasItems = true;\n\n container.appendChild(\n makeLinkElement({\n name: 'Admissions',\n url: 'https://umd.edu/admissions',\n icon: flagIcon,\n }),\n );\n }\n\n if (isSchoolsFeed) {\n hasItems = true;\n\n container.appendChild(\n makeLinkElement({\n name: 'Colleges & Schools',\n url: 'https://umd.edu/colleges-and-schools',\n icon: homeIcon,\n }),\n );\n }\n\n if (isNewsFeed) {\n hasItems = true;\n\n container.appendChild(\n makeLinkElement({\n name: 'News',\n url: 'https://today.umd.edu/',\n icon: starIcon,\n }),\n );\n }\n\n if (isEventsFeed) {\n hasItems = true;\n\n container.appendChild(\n makeLinkElement({\n name: 'Events',\n url: 'https://calendar.umd.edu',\n icon: calendarIcon,\n }),\n );\n }\n\n if (isGiftsFeed) {\n hasItems = true;\n const getURL = () => {\n const defaultURL = 'https://giving.umd.edu/giving';\n\n if (!giftUrl) return defaultURL;\n\n const validURL = giftUrl ? isValidUrl(giftUrl) : null;\n return validURL ? giftUrl : defaultURL;\n };\n\n container.appendChild(\n makeLinkElement({\n name: 'Make a Gift',\n url: getURL(),\n icon: mIcon,\n }),\n );\n }\n\n if (isSearch || isSearchDomain) {\n hasItems = true;\n const formElement = UtilitySearch.CreateElement({ isSearchDomain });\n const button = CreateSearchFormButton({\n expandElement: formElement,\n });\n\n container.appendChild(button);\n container.appendChild(formElement);\n }\n\n container.classList.add(ELEMENT_UTILITY_MENU);\n\n if (!hasItems) return null;\n\n return container;\n};\n\nconst CreateNavigationUtility = (props: TypeUtilityRequirements) =>\n (() => {\n {\n const { isLockFull, isAlertOff } = props;\n const declaration = document.createElement('div');\n const container = document.createElement('div');\n const lock = document.createElement('div');\n const wrapper = document.createElement('div');\n const logoColumn = createLogoColumn();\n\n const secondaryCta = elementStyles.action.secondary.normal;\n\n let styles = STYLES_NAVIGATION_UTILITY + jssEntryToCSS(secondaryCta);\n\n const setLayout = () => {\n const menuItems = CreateMenuItems({ ...props });\n const mobileMenu = document.createElement('div');\n const mobileMenuButton = CreateMobileMenuButton({\n expandElement: mobileMenu,\n });\n\n mobileMenu.setAttribute('id', `${ELEMENT_UTILITY_MOBILE_MENU}`);\n mobileMenu.classList.add(ELEMENT_UTILITY_MOBILE_MENU);\n mobileMenu.setAttribute('aria-hidden', (!isDesktop()).toString());\n\n if (menuItems) {\n mobileMenu.appendChild(menuItems);\n wrapper.appendChild(mobileMenuButton);\n wrapper.appendChild(mobileMenu);\n container.setAttribute(WITH_ITEMS, 'true');\n } else {\n container.setAttribute(WITH_ITEMS, 'false');\n }\n };\n\n const resizeEvent = () => {\n const isDesktop = window.innerWidth >= DESKTOP;\n\n const form = container.querySelector(`.${UtilitySearch.Elements.form}`);\n const menu = container.querySelector(`.${ELEMENT_UTILITY_MOBILE_MENU}`);\n\n if (!form || !menu) return;\n\n if (isDesktop) {\n menu.setAttribute('aria-hidden', 'false');\n form.setAttribute('aria-hidden', 'true');\n form.setAttribute('layout', 'desktop');\n } else {\n menu.setAttribute('aria-hidden', 'true');\n form.setAttribute('aria-hidden', 'false');\n form.setAttribute('layout', 'mobile');\n }\n };\n\n const load = async () => {\n if (!isAlertOff) {\n const alert = await createNavAlert(props);\n\n if (alert) {\n container.insertBefore(alert?.element, container.firstChild);\n }\n }\n\n setLayout();\n resizeEvent();\n };\n\n const showAlert = async () => {\n const isCurrentAlert = container.querySelector(\n `.${ALERT_CONSTANTS.ELEMENTS.CONTAINER}`,\n );\n\n if (isCurrentAlert) return;\n\n const alert = await createNavAlert(props);\n\n if (alert) {\n container.insertBefore(alert?.element, container.firstChild);\n }\n };\n\n const hideAlert = () => {\n const alert = container.querySelector(\n `.${ALERT_CONSTANTS.ELEMENTS.CONTAINER}`,\n );\n\n if (alert) {\n alert.remove();\n }\n };\n\n wrapper.appendChild(logoColumn);\n wrapper.classList.add(ELEMENT_UTILITY_WRAPPER);\n\n lock.appendChild(wrapper);\n lock.classList.add(ELEMENT_UTILITY_LOCK);\n\n container.appendChild(lock);\n container.classList.add(ELEMENT_UTILITY_CONTAINTER);\n if (isLockFull) container.setAttribute(ATTRIBUTE_LOCK, LOCK_FULL);\n\n declaration.appendChild(container);\n declaration.classList.add(ELEMENT_UTILITY_DECLARATION);\n\n load();\n window.addEventListener('resize', resizeEvent);\n\n return {\n element: declaration,\n styles,\n events: {\n showAlert,\n hideAlert,\n },\n };\n }\n })();\n\nexport default CreateNavigationUtility;\n"],"names":["jssToCSS","layout","token","STYLES_NAV_ALERT","UtilitySearch","handleKeyboardNavigation","iconSearch","iconChevronDown","elementStyles","styles","jssEntryToCSS","isDesktop","alert","createNavAlert","ALERT_CONSTANTS"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../source/composite/navigation/utility/index.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport * as elementStyles from '@universityofmaryland/web-styles-library/element';\nimport * as layout from '@universityofmaryland/web-styles-library/layout';\nimport {\n jssToCSS,\n jssEntryToCSS,\n} from '@universityofmaryland/web-utilities-library/styles';\nimport { handleKeyboardNavigation } from '@universityofmaryland/web-utilities-library/events';\nimport { search as iconSearch } from '@universityofmaryland/web-icons-library/search';\nimport { chevron_down as iconChevronDown } from '@universityofmaryland/web-icons-library/controls';\nimport {\n createNavAlert,\n STYLES_NAV_ALERT,\n ALERT_CONSTANTS,\n TypeAlertProps,\n} from './alert';\nimport UtilitySearch from './search';\n\ntype TypeMenuItemsRequirements = {\n alertUrl?: string | null;\n giftUrl?: string;\n isAdmissionsFeed: boolean;\n isAlertOff?: boolean;\n isEventsFeed: boolean;\n isGiftsFeed: boolean;\n isLockFull?: boolean;\n isNewsFeed: boolean;\n isSchoolsFeed: boolean;\n isSearch: boolean;\n isSearchDomain?: boolean;\n};\n\ntype TypeUtilityRequirements = TypeMenuItemsRequirements & TypeAlertProps;\n\nconst flagIcon = `<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"29\" height=\"28\" viewBox=\"0 0 29 28\"><title>Flag</title><path d=\"M5 4c0 .72-.39 1.36-1 1.72V25.5c0 .266-.234.5-.5.5h-1c-.266 0-.5-.234-.5-.5V5.72c-.61-.36-1-1-1-1.72 0-1.11.89-2 2-2s2 .89 2 2zm23 1v11.922c0 .578-.36.797-.812 1.03-1.766.954-3.72 1.814-5.766 1.814-2.875 0-4.25-2.188-7.656-2.188-2.484 0-5.094 1.125-7.25 2.28-.172.095-.328.142-.516.142-.547 0-1-.453-1-1V7.406c0-.375.187-.64.484-.86.375-.25.828-.468 1.234-.67 1.97-1 4.36-1.876 6.578-1.876 2.453 0 4.375.812 6.547 1.828.438.22.89.297 1.375.297C23.67 6.125 26.312 4 26.998 4c.548 0 1 .453 1 1z\"></path></svg>`;\nconst homeIcon = `<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"28\" viewBox=\"0 0 26 28\"><title>School</title><path d=\"M22 15.5V23c0 .547-.453 1-1 1h-6v-6h-4v6H5c-.547 0-1-.453-1-1v-7.5c0-.03.016-.063.016-.094L13 8l8.984 7.406c.016.03.016.063.016.094zm3.484-1.078l-.97 1.156c-.077.094-.202.156-.327.172h-.047c-.125 0-.234-.03-.328-.11L13 6.626 2.185 15.64c-.11.08-.234.126-.375.11-.124-.016-.25-.078-.327-.172l-.97-1.156c-.17-.203-.14-.53.064-.703L11.81 4.36c.657-.547 1.72-.547 2.376 0L18 7.547V4.5c0-.28.218-.5.5-.5h3c.28 0 .5.22.5.5v6.375l3.42 2.844c.204.17.235.5.064.702z\"></path></svg>`;\nconst starIcon = `<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"28\" viewBox=\"0 0 26 28\"><title>Star</title><path d=\"M26 10.11c0 .28-.203.546-.406.75l-5.672 5.53 1.344 7.812c.016.11.016.203.016.313 0 .406-.187.78-.64.78-.22 0-.44-.077-.626-.186L13 21.42 5.984 25.11c-.203.108-.406.186-.625.186-.454 0-.657-.375-.657-.78 0-.11.016-.204.03-.314L6.08 16.39.39 10.86c-.187-.204-.39-.47-.39-.75 0-.47.483-.657.874-.72l7.844-1.14 3.516-7.11c.14-.297.406-.64.766-.64s.625.343.766.64l3.516 7.11 7.844 1.14c.375.063.875.25.875.72z\"></path></svg>`;\nconst calendarIcon = `<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"28\" viewBox=\"0 0 26 28\"><title>Calendar</title><path d=\"M2 26h22V10H2v16zM8 7V2.5c0-.28-.22-.5-.5-.5h-1c-.28 0-.5.22-.5.5V7c0 .28.22.5.5.5h1c.28 0 .5-.22.5-.5zm12 0V2.5c0-.28-.22-.5-.5-.5h-1c-.28 0-.5.22-.5.5V7c0 .28.22.5.5.5h1c.28 0 .5-.22.5-.5zm6-1v20c0 1.094-.906 2-2 2H2c-1.094 0-2-.906-2-2V6c0-1.094.906-2 2-2h2V2.5C4 1.125 5.125 0 6.5 0h1C8.875 0 10 1.125 10 2.5V4h6V2.5C16 1.125 17.125 0 18.5 0h1C20.875 0 22 1.125 22 2.5V4h2c1.094 0 2 .906 2 2z\"></path></svg>`;\nconst mIcon = `<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"28\" viewBox=\"0 0 35 28\"><title>Gift</title><path d=\"M16 1.4C7.937 1.4 1.4 7.937 1.4 16S7.937 30.6 16 30.6c8.063 0 14.6-6.537 14.6-14.6S24.063 1.4 16 1.4zm3.38 22.66v-2.55h2L21 13l-4.68 8.36h-.38L11.11 13l-.27 8.55h2v2.55H6.08v-2.55H8l.45-11.5H6.42V7.5h4.54l5.16 9.19 5-9.27h4.51v2.55h-2.04l.61 11.49h2v2.55z\"></path></svg>`;\n\nconst TABLET = 768;\nconst DESKTOP = 1024;\nconst ANIMATION_OUT_SPEED = 400;\nconst ANIMATION_IN_SPEED = 800;\n\nconst ATTRIBUTE_LOCK = 'lock';\nconst WITH_ITEMS = 'data-items';\nconst LOCK_FULL = 'full';\n\nconst ELEMENT_NAME = 'umd-element-utility-header';\n\nconst IS_LOCK_FULL = `[${ATTRIBUTE_LOCK}=${LOCK_FULL}]`;\nconst IS_HAS_ITEMS = `[${WITH_ITEMS}=\"true\"]`;\nconst IS_WITHOUT_ITEMS = `[${WITH_ITEMS}=\"false\"]`;\n\nconst ELEMENT_UTILITY_DECLARATION = 'element-utility-declaration';\nconst ELEMENT_UTILITY_CONTAINTER = 'element-utility-container';\nconst ELEMENT_UTILITY_LOCK = 'umd-element-nav-utility-lock';\nconst ELEMENT_UTILITY_WRAPPER = 'umd-element-nav-utility-wrapper';\nconst ELEMENT_UTILITY_LOGO = 'umd-element-nav-utility-logo';\nconst ELEMENT_UTILITY_LOGO_COLUMN = 'umd-element-nav-utility-logo-column';\nconst ELEMENT_UTILITY_MENU = 'umd-element-nav-utility-menu';\nconst ELEMENT_UTILITY_MOBILE_MENU = 'umd-element-nav-utility-mobile-menu';\nconst ELEMENT_UTILITY_MOBILE_BUTTON = 'umd-element-nav-utility-mobile-button';\nconst ELEMENT_UTILITY_SEARCH_BUTTON = 'umd-element-nav-utility-search-button';\n\nconst OVERWRITE_LOCK_FULL = `.${ELEMENT_UTILITY_CONTAINTER}${IS_LOCK_FULL} .${ELEMENT_UTILITY_LOCK}`;\n\nconst OVERWRITE_CONTAINER_WITH_ITEMS = `.${ELEMENT_UTILITY_CONTAINTER}${IS_HAS_ITEMS}`;\nconst OVERWRITE_CONTAINER_WITHOUT_ITEMS = `.${ELEMENT_UTILITY_CONTAINTER}${IS_WITHOUT_ITEMS}`;\nconst OVERWRIE_WRAPPER_WITH_ITEMS = `${OVERWRITE_CONTAINER_WITH_ITEMS} .${ELEMENT_UTILITY_WRAPPER}`;\nconst OVERWRIE_WRAPPER_WITHOUT_ITEMS = `${OVERWRITE_CONTAINER_WITHOUT_ITEMS} .${ELEMENT_UTILITY_WRAPPER}`;\n\nconst isDesktop = () => window.innerWidth >= DESKTOP;\n\nconst TOP_TWENTY_TEXT = `A Top 20 Public Research University`;\n\n// prettier-ignore\nconst LockStyles = `\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_UTILITY_LOCK}`]: layout.space.horizontal.larger,\n },\n })}\n\n ${jssToCSS({\n styleObj: {\n [`${OVERWRITE_LOCK_FULL}`]: layout.space.horizontal.full,\n },\n })}\n`;\n\n// prettier-ignore\nconst WrapperStyles = `\n .${ELEMENT_UTILITY_WRAPPER} {\n display: flex;\n align-items: center;\n justify-content: space-between;\n position: relative;\n min-height: 44px;\n }\n\n .${ELEMENT_UTILITY_WRAPPER} > a {\n color: ${token.color.white};\n text-transform: uppercase;\n }\n\n .${ELEMENT_UTILITY_WRAPPER} > a:hover,\n .${ELEMENT_UTILITY_WRAPPER} > a:focus {\n text-decoration: underline;\n }\n\n ${OVERWRIE_WRAPPER_WITHOUT_ITEMS} {\n display: flex;\n justify-content: center;\n justify-self: center;\n }\n`;\n\n// prettier-ignore\nconst MenuStyles = `\n .${ELEMENT_UTILITY_MENU} {\n display: flex;\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MENU} {\n flex-direction: column;\n }\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MENU} {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n }\n\n .${ELEMENT_UTILITY_MENU} a {\n color: ${token.color.white};\n text-decoration: none;\n text-transform: uppercase;\n }\n\n .${ELEMENT_UTILITY_MENU} > * {\n display: flex;\n align-items: center;\n gap: 4px;\n height: 100%;\n padding: ${token.spacing.min} ${token.spacing.sm};\n font-weight: 700;\n font-size: 13px;\n transition: background ${ANIMATION_IN_SPEED}ms;\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MENU} > * {\n justify-content: space-between;\n }\n }\n\n .${ELEMENT_UTILITY_MENU} > *[aria-expanded=\"true\"] {\n background-color: ${token.color.redDark};\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_CONTAINTER} .${ELEMENT_UTILITY_MENU} > * {\n border-top: 1px solid ${token.color.gray.lighter};\n color: ${token.color.red};\n order: 2;\n transition: background ${ANIMATION_OUT_SPEED}ms, color ${ANIMATION_OUT_SPEED}ms;\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MENU} > *:first-child {\n border-top: none;\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MENU} > a:hover,\n .${ELEMENT_UTILITY_MENU} > a:focus {\n background-color: ${token.color.red};\n color: ${token.color.white};\n transition: background ${ANIMATION_IN_SPEED}ms, color ${ANIMATION_IN_SPEED}ms;\n }\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MENU} > *:hover,\n .${ELEMENT_UTILITY_MENU} > *:focus {\n background-color: ${token.color.redDark};\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MENU} > a:hover svg,\n .${ELEMENT_UTILITY_MENU} > a:focus svg {\n fill: ${token.color.white};\n }\n }\n\n .${ELEMENT_UTILITY_SEARCH_BUTTON} svg {\n height: 22px;\n width: inherit;\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_SEARCH_BUTTON} {\n display: none;\n }\n }\n\n .${ELEMENT_UTILITY_MENU} svg {\n max-width: 15px;\n transition: fill ${ANIMATION_OUT_SPEED}ms;\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MENU} svg {\n fill: ${token.color.red};\n transition: fill ${ANIMATION_IN_SPEED}ms;\n }\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MENU} svg {\n fill: ${token.color.white};\n }\n }\n`;\n\n// prettier-ignore\nconst MobileMenuStyles = `\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU} {\n position: absolute;\n left: -${token.spacing['2xl']};\n right: -${token.spacing['2xl']};\n top: 44px;\n box-shadow: 0 5px 5px 1px rgba(0, 0, 0, .2);\n height: 0;\n overflow: hidden;\n transition: height ${ANIMATION_OUT_SPEED}ms;\n display: flex;\n flex-direction: column;\n background-color: ${token.color.white};\n }\n }\n\n @container (max-width: ${TABLET - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU} {\n left: -${token.spacing.md};\n right: -${token.spacing.md};\n }\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU} {\n display: flex;\n height: inherit !important;\n margin-left: auto;\n position: relative;\n margin-right: -${token.spacing.md};\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU}[aria-hidden=\"true\"] {\n transition: height ${ANIMATION_OUT_SPEED}ms;\n display: none;\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU}[aria-hidden=\"false\"] {\n transition: height ${ANIMATION_IN_SPEED}ms;\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU} > button {\n display: none;\n }\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU} > button {\n transition: background ${ANIMATION_OUT_SPEED}ms;\n }\n }\n`\n\n// prettier-ignore\nconst MobileButtonStyles = `\n .${ELEMENT_UTILITY_MOBILE_BUTTON} {\n margin-left: auto;\n height: 100%;\n padding: ${token.spacing.xs} ${token.spacing.md};\n margin-right: -${token.spacing.md};\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n @media (min-width: ${TABLET}px) {\n margin-right: -${token.spacing['2xl']};\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MOBILE_BUTTON} {\n display: none;\n }\n }\n\n .${ELEMENT_UTILITY_MOBILE_BUTTON}:hover,\n .${ELEMENT_UTILITY_MOBILE_BUTTON}:focus {\n background-color: ${token.color.redDark};\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_BUTTON} svg {\n fill: ${token.color.white};\n width: 18px;\n height: 18px;\n }\n }\n`;\n\n// prettier-ignore\nconst LogoStyles = `\n .${ELEMENT_UTILITY_LOGO_COLUMN} {\n display: flex;\n opacity: 0;\n transition: opacity .3s ease-in;\n padding: 10px 0;\n }\n\n @media (max-width: ${TABLET - 1}px) {\n .${ELEMENT_UTILITY_LOGO_COLUMN} {\n flex-direction: column;\n gap: ${token.spacing.min};\n text-align: center;\n }\n }\n\n @media (min-width: ${TABLET}px) {\n .${ELEMENT_UTILITY_LOGO_COLUMN} {\n align-items: center;\n gap: ${token.spacing.xs};\n }\n }\n\n .${ELEMENT_UTILITY_LOGO_COLUMN} * {\n color: ${token.color.white};\n\n }\n\n .${ELEMENT_UTILITY_LOGO_COLUMN} > p {\n display: block;\n font-size: 11px;\n }\n\n @media (max-width: ${TABLET - 1}px) {\n ${OVERWRIE_WRAPPER_WITH_ITEMS} .${ELEMENT_UTILITY_LOGO_COLUMN} > p {\n display: none;\n }\n }\n\n @media (min-width: ${TABLET}px) {\n .${ELEMENT_UTILITY_LOGO_COLUMN} > p {\n position: relative;\n font-size: 13px;\n }\n\n .${ELEMENT_UTILITY_LOGO_COLUMN} > p:before {\n content: '';\n position: absolute;\n left: -4px;\n height: 100%;\n width: 1px;\n background-color: ${token.color.white};\n }\n }\n\n .${ELEMENT_UTILITY_LOGO} {\n font-family: Crimson Text, Georgia, serif;\n letter-spacing: 1px;\n font-size: 14px;\n text-transform: uppercase;\n }\n`;\n\nlet STYLES_NAVIGATION_UTILITY = `\n .${ELEMENT_UTILITY_DECLARATION} {\n container: ${ELEMENT_NAME} / inline-size;\n }\n\n .${ELEMENT_UTILITY_CONTAINTER} {\n display: block;\n background-color: ${token.color.red};\n position: relative;\n z-index: 999;\n }\n\n ${LockStyles}\n ${WrapperStyles}\n ${LogoStyles}\n ${MenuStyles}\n ${MobileButtonStyles}\n ${MobileMenuStyles}\n ${STYLES_NAV_ALERT}\n ${UtilitySearch.Styles}\n`;\n\nconst CreateSearchFormButton = ({\n expandElement,\n}: {\n expandElement: HTMLDivElement | HTMLFormElement;\n}) => {\n const button = document.createElement('button');\n const elements = Array.from(expandElement.querySelectorAll('div'));\n let focusCallback = () => {};\n\n const eventClose = () => {\n expandElement.style.height = `0`;\n\n setTimeout(() => {\n expandElement.style.display = 'none';\n expandElement.setAttribute('aria-hidden', 'true');\n button.setAttribute('aria-expanded', 'false');\n button.focus();\n\n if (focusCallback) {\n focusCallback();\n focusCallback = () => {};\n }\n }, ANIMATION_OUT_SPEED + 100);\n };\n\n const eventOpen = () => {\n const focusElement = expandElement.querySelector(\n 'input[type=\"text\"]',\n ) as HTMLInputElement;\n\n expandElement.style.display = 'block';\n\n setTimeout(() => {\n const size = elements.reduce((accumulator, currentValue) => {\n return accumulator + currentValue.offsetHeight;\n }, 0);\n\n expandElement.setAttribute('aria-hidden', 'false');\n expandElement.style.height = `${size}px`;\n button.setAttribute('aria-expanded', 'true');\n if (focusElement) focusElement.focus();\n }, 100);\n\n focusCallback = handleKeyboardNavigation({\n element: expandElement,\n action: () => eventClose(),\n });\n };\n\n button.setAttribute('aria-label', 'enable the search form');\n button.setAttribute('type', 'button');\n button.innerHTML = `${iconSearch}`;\n button.setAttribute('aria-controls', UtilitySearch.Elements.form);\n button.classList.add(ELEMENT_UTILITY_SEARCH_BUTTON);\n button.setAttribute('aria-expanded', 'false');\n\n button.addEventListener('click', () => {\n const isExpanded = button.getAttribute('aria-expanded') === 'true';\n\n if (isExpanded) {\n eventClose();\n } else {\n eventOpen();\n }\n });\n\n return button;\n};\n\nconst CreateMobileMenuButton = ({\n expandElement,\n}: {\n expandElement: HTMLDivElement;\n}) => {\n const button = document.createElement('button');\n let focusCallback = () => {};\n\n const eventClose = () => {\n expandElement.style.height = `0`;\n\n setTimeout(() => {\n expandElement.style.display = 'none';\n expandElement.setAttribute('aria-hidden', 'true');\n button.setAttribute('aria-expanded', 'false');\n button.focus();\n\n if (focusCallback) {\n focusCallback();\n focusCallback = () => {};\n }\n }, ANIMATION_OUT_SPEED + 100);\n };\n\n const eventOpen = () => {\n const wrapper = expandElement.querySelector(\n `.${ELEMENT_UTILITY_MENU}`,\n ) as HTMLElement;\n const focusElement = expandElement.querySelector('a') as HTMLAnchorElement;\n\n expandElement.style.display = 'block';\n\n setTimeout(() => {\n expandElement.setAttribute('aria-hidden', 'false');\n expandElement.style.height = `${wrapper.offsetHeight}px`;\n button.setAttribute('aria-expanded', 'true');\n if (focusElement) focusElement.focus();\n }, 100);\n\n focusCallback = handleKeyboardNavigation({\n element: expandElement,\n action: () => eventClose(),\n });\n };\n\n button.innerHTML = `${iconChevronDown}`;\n button.setAttribute('type', 'button');\n button.setAttribute('aria-label', 'toggle mobile menu');\n button.setAttribute('aria-controls', `${ELEMENT_UTILITY_MOBILE_MENU}`);\n button.classList.add(ELEMENT_UTILITY_MOBILE_BUTTON);\n\n button.addEventListener('click', () => {\n const isExpanded = button.getAttribute('aria-expanded') === 'true';\n\n if (isExpanded) {\n eventClose();\n } else {\n eventOpen();\n }\n });\n\n return button;\n};\n\nconst createLogoElement = () => {\n const logo = document.createElement('a');\n\n logo.innerHTML = 'University of Maryland';\n logo.setAttribute('href', 'https://umd.edu');\n logo.setAttribute('target', '_blank');\n logo.setAttribute('rel', 'noopener noreferrer');\n logo.classList.add(ELEMENT_UTILITY_LOGO);\n\n return logo;\n};\n\nconst createLogoColumn = () => {\n const container = document.createElement('div');\n const text = document.createElement('p');\n const logo = createLogoElement();\n\n text.innerHTML = TOP_TWENTY_TEXT;\n\n container.appendChild(logo);\n container.appendChild(text);\n container.classList.add(ELEMENT_UTILITY_LOGO_COLUMN);\n\n setTimeout(() => {\n container.style.opacity = '1';\n }, 400);\n\n return container;\n};\n\nconst CreateMenuItems = ({\n isAdmissionsFeed,\n isEventsFeed,\n isGiftsFeed,\n isNewsFeed,\n isSchoolsFeed,\n isSearch,\n giftUrl,\n isSearchDomain,\n}: TypeMenuItemsRequirements) => {\n const container = document.createElement('div');\n\n const isValidUrl = (url: string) => {\n try {\n new URL(url);\n } catch (e) {\n return false;\n }\n return true;\n };\n\n const makeLinkElement = ({\n name,\n icon,\n url,\n }: {\n name: string;\n icon: string;\n url: string;\n }) => {\n const tag = document.createElement('a');\n\n tag.setAttribute('href', url);\n tag.setAttribute('target', '_blank');\n tag.setAttribute('rel', 'noopener noreferrer');\n tag.innerHTML = `${icon} <span>${name}</span>`;\n\n return tag;\n };\n\n let hasItems = false;\n\n if (isAdmissionsFeed) {\n hasItems = true;\n\n container.appendChild(\n makeLinkElement({\n name: 'Admissions',\n url: 'https://umd.edu/admissions',\n icon: flagIcon,\n }),\n );\n }\n\n if (isSchoolsFeed) {\n hasItems = true;\n\n container.appendChild(\n makeLinkElement({\n name: 'Colleges & Schools',\n url: 'https://umd.edu/colleges-and-schools',\n icon: homeIcon,\n }),\n );\n }\n\n if (isNewsFeed) {\n hasItems = true;\n\n container.appendChild(\n makeLinkElement({\n name: 'News',\n url: 'https://today.umd.edu/',\n icon: starIcon,\n }),\n );\n }\n\n if (isEventsFeed) {\n hasItems = true;\n\n container.appendChild(\n makeLinkElement({\n name: 'Events',\n url: 'https://calendar.umd.edu',\n icon: calendarIcon,\n }),\n );\n }\n\n if (isGiftsFeed) {\n hasItems = true;\n const getURL = () => {\n const defaultURL = 'https://giving.umd.edu/giving';\n\n if (!giftUrl) return defaultURL;\n\n const validURL = giftUrl ? isValidUrl(giftUrl) : null;\n return validURL ? giftUrl : defaultURL;\n };\n\n container.appendChild(\n makeLinkElement({\n name: 'Make a Gift',\n url: getURL(),\n icon: mIcon,\n }),\n );\n }\n\n if (isSearch || isSearchDomain) {\n hasItems = true;\n const formElement = UtilitySearch.CreateElement({ isSearchDomain });\n const button = CreateSearchFormButton({\n expandElement: formElement,\n });\n\n container.appendChild(button);\n container.appendChild(formElement);\n }\n\n container.classList.add(ELEMENT_UTILITY_MENU);\n\n if (!hasItems) return null;\n\n return container;\n};\n\nconst CreateNavigationUtility = (props: TypeUtilityRequirements) =>\n (() => {\n {\n const { isLockFull, isAlertOff } = props;\n const declaration = document.createElement('div');\n const container = document.createElement('div');\n const lock = document.createElement('div');\n const wrapper = document.createElement('div');\n const logoColumn = createLogoColumn();\n\n const secondaryCta = elementStyles.action.secondary.normal;\n\n let styles = STYLES_NAVIGATION_UTILITY + jssEntryToCSS(secondaryCta);\n\n const setLayout = () => {\n const menuItems = CreateMenuItems({ ...props });\n const mobileMenu = document.createElement('div');\n const mobileMenuButton = CreateMobileMenuButton({\n expandElement: mobileMenu,\n });\n\n mobileMenu.setAttribute('id', `${ELEMENT_UTILITY_MOBILE_MENU}`);\n mobileMenu.classList.add(ELEMENT_UTILITY_MOBILE_MENU);\n mobileMenu.setAttribute('aria-hidden', (!isDesktop()).toString());\n\n if (menuItems) {\n mobileMenu.appendChild(menuItems);\n wrapper.appendChild(mobileMenuButton);\n wrapper.appendChild(mobileMenu);\n container.setAttribute(WITH_ITEMS, 'true');\n } else {\n container.setAttribute(WITH_ITEMS, 'false');\n }\n };\n\n const resizeEvent = () => {\n const isDesktop = window.innerWidth >= DESKTOP;\n\n const form = container.querySelector(`.${UtilitySearch.Elements.form}`);\n const menu = container.querySelector(`.${ELEMENT_UTILITY_MOBILE_MENU}`);\n\n if (!form || !menu) return;\n\n if (isDesktop) {\n menu.setAttribute('aria-hidden', 'false');\n form.setAttribute('aria-hidden', 'true');\n form.setAttribute('layout', 'desktop');\n } else {\n menu.setAttribute('aria-hidden', 'true');\n form.setAttribute('aria-hidden', 'false');\n form.setAttribute('layout', 'mobile');\n }\n };\n\n const load = async () => {\n if (!isAlertOff) {\n const alert = await createNavAlert(props);\n\n if (alert) {\n container.insertBefore(alert?.element, container.firstChild);\n }\n }\n\n setLayout();\n resizeEvent();\n };\n\n const showAlert = async () => {\n const isCurrentAlert = container.querySelector(\n `.${ALERT_CONSTANTS.ELEMENTS.CONTAINER}`,\n );\n\n if (isCurrentAlert) return;\n\n const alert = await createNavAlert(props);\n\n if (alert) {\n container.insertBefore(alert?.element, container.firstChild);\n }\n };\n\n const hideAlert = () => {\n const alert = container.querySelector(\n `.${ALERT_CONSTANTS.ELEMENTS.CONTAINER}`,\n );\n\n if (alert) {\n alert.remove();\n }\n };\n\n wrapper.appendChild(logoColumn);\n wrapper.classList.add(ELEMENT_UTILITY_WRAPPER);\n\n lock.appendChild(wrapper);\n lock.classList.add(ELEMENT_UTILITY_LOCK);\n\n container.appendChild(lock);\n container.classList.add(ELEMENT_UTILITY_CONTAINTER);\n if (isLockFull) container.setAttribute(ATTRIBUTE_LOCK, LOCK_FULL);\n\n declaration.appendChild(container);\n declaration.classList.add(ELEMENT_UTILITY_DECLARATION);\n\n load();\n window.addEventListener('resize', resizeEvent);\n\n return {\n element: declaration,\n styles,\n events: {\n showAlert,\n hideAlert,\n },\n };\n }\n })();\n\nexport default CreateNavigationUtility;\n"],"names":["iconSearch","iconChevronDown","isDesktop"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../source/composite/navigation/utility/index.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport * as elementStyles from '@universityofmaryland/web-styles-library/element';\nimport * as layout from '@universityofmaryland/web-styles-library/layout';\nimport {\n jssToCSS,\n jssEntryToCSS,\n} from '@universityofmaryland/web-utilities-library/styles';\nimport { handleKeyboardNavigation } from '@universityofmaryland/web-utilities-library/events';\nimport { search as iconSearch } from '@universityofmaryland/web-icons-library/search';\nimport { chevron_down as iconChevronDown } from '@universityofmaryland/web-icons-library/controls';\nimport {\n createNavAlert,\n STYLES_NAV_ALERT,\n ALERT_CONSTANTS,\n TypeAlertProps,\n} from './alert';\nimport UtilitySearch from './search';\n\ntype TypeMenuItemsRequirements = {\n alertUrl?: string | null;\n giftUrl?: string;\n isAdmissionsFeed: boolean;\n isAlertOff?: boolean;\n isEventsFeed: boolean;\n isGiftsFeed: boolean;\n isLockFull?: boolean;\n isNewsFeed: boolean;\n isSchoolsFeed: boolean;\n isSearch: boolean;\n isSearchDomain?: boolean;\n};\n\ntype TypeUtilityRequirements = TypeMenuItemsRequirements & TypeAlertProps;\n\nconst flagIcon = `<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"29\" height=\"28\" viewBox=\"0 0 29 28\"><title>Flag</title><path d=\"M5 4c0 .72-.39 1.36-1 1.72V25.5c0 .266-.234.5-.5.5h-1c-.266 0-.5-.234-.5-.5V5.72c-.61-.36-1-1-1-1.72 0-1.11.89-2 2-2s2 .89 2 2zm23 1v11.922c0 .578-.36.797-.812 1.03-1.766.954-3.72 1.814-5.766 1.814-2.875 0-4.25-2.188-7.656-2.188-2.484 0-5.094 1.125-7.25 2.28-.172.095-.328.142-.516.142-.547 0-1-.453-1-1V7.406c0-.375.187-.64.484-.86.375-.25.828-.468 1.234-.67 1.97-1 4.36-1.876 6.578-1.876 2.453 0 4.375.812 6.547 1.828.438.22.89.297 1.375.297C23.67 6.125 26.312 4 26.998 4c.548 0 1 .453 1 1z\"></path></svg>`;\nconst homeIcon = `<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"28\" viewBox=\"0 0 26 28\"><title>School</title><path d=\"M22 15.5V23c0 .547-.453 1-1 1h-6v-6h-4v6H5c-.547 0-1-.453-1-1v-7.5c0-.03.016-.063.016-.094L13 8l8.984 7.406c.016.03.016.063.016.094zm3.484-1.078l-.97 1.156c-.077.094-.202.156-.327.172h-.047c-.125 0-.234-.03-.328-.11L13 6.626 2.185 15.64c-.11.08-.234.126-.375.11-.124-.016-.25-.078-.327-.172l-.97-1.156c-.17-.203-.14-.53.064-.703L11.81 4.36c.657-.547 1.72-.547 2.376 0L18 7.547V4.5c0-.28.218-.5.5-.5h3c.28 0 .5.22.5.5v6.375l3.42 2.844c.204.17.235.5.064.702z\"></path></svg>`;\nconst starIcon = `<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"28\" viewBox=\"0 0 26 28\"><title>Star</title><path d=\"M26 10.11c0 .28-.203.546-.406.75l-5.672 5.53 1.344 7.812c.016.11.016.203.016.313 0 .406-.187.78-.64.78-.22 0-.44-.077-.626-.186L13 21.42 5.984 25.11c-.203.108-.406.186-.625.186-.454 0-.657-.375-.657-.78 0-.11.016-.204.03-.314L6.08 16.39.39 10.86c-.187-.204-.39-.47-.39-.75 0-.47.483-.657.874-.72l7.844-1.14 3.516-7.11c.14-.297.406-.64.766-.64s.625.343.766.64l3.516 7.11 7.844 1.14c.375.063.875.25.875.72z\"></path></svg>`;\nconst calendarIcon = `<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"28\" viewBox=\"0 0 26 28\"><title>Calendar</title><path d=\"M2 26h22V10H2v16zM8 7V2.5c0-.28-.22-.5-.5-.5h-1c-.28 0-.5.22-.5.5V7c0 .28.22.5.5.5h1c.28 0 .5-.22.5-.5zm12 0V2.5c0-.28-.22-.5-.5-.5h-1c-.28 0-.5.22-.5.5V7c0 .28.22.5.5.5h1c.28 0 .5-.22.5-.5zm6-1v20c0 1.094-.906 2-2 2H2c-1.094 0-2-.906-2-2V6c0-1.094.906-2 2-2h2V2.5C4 1.125 5.125 0 6.5 0h1C8.875 0 10 1.125 10 2.5V4h6V2.5C16 1.125 17.125 0 18.5 0h1C20.875 0 22 1.125 22 2.5V4h2c1.094 0 2 .906 2 2z\"></path></svg>`;\nconst mIcon = `<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"28\" viewBox=\"0 0 35 28\"><title>Gift</title><path d=\"M16 1.4C7.937 1.4 1.4 7.937 1.4 16S7.937 30.6 16 30.6c8.063 0 14.6-6.537 14.6-14.6S24.063 1.4 16 1.4zm3.38 22.66v-2.55h2L21 13l-4.68 8.36h-.38L11.11 13l-.27 8.55h2v2.55H6.08v-2.55H8l.45-11.5H6.42V7.5h4.54l5.16 9.19 5-9.27h4.51v2.55h-2.04l.61 11.49h2v2.55z\"></path></svg>`;\n\nconst TABLET = 768;\nconst DESKTOP = 1024;\nconst ANIMATION_OUT_SPEED = 400;\nconst ANIMATION_IN_SPEED = 800;\n\nconst ATTRIBUTE_LOCK = 'lock';\nconst WITH_ITEMS = 'data-items';\nconst LOCK_FULL = 'full';\n\nconst ELEMENT_NAME = 'umd-element-utility-header';\n\nconst IS_LOCK_FULL = `[${ATTRIBUTE_LOCK}=${LOCK_FULL}]`;\nconst IS_HAS_ITEMS = `[${WITH_ITEMS}=\"true\"]`;\nconst IS_WITHOUT_ITEMS = `[${WITH_ITEMS}=\"false\"]`;\n\nconst ELEMENT_UTILITY_DECLARATION = 'element-utility-declaration';\nconst ELEMENT_UTILITY_CONTAINTER = 'element-utility-container';\nconst ELEMENT_UTILITY_LOCK = 'umd-element-nav-utility-lock';\nconst ELEMENT_UTILITY_WRAPPER = 'umd-element-nav-utility-wrapper';\nconst ELEMENT_UTILITY_LOGO = 'umd-element-nav-utility-logo';\nconst ELEMENT_UTILITY_LOGO_COLUMN = 'umd-element-nav-utility-logo-column';\nconst ELEMENT_UTILITY_MENU = 'umd-element-nav-utility-menu';\nconst ELEMENT_UTILITY_MOBILE_MENU = 'umd-element-nav-utility-mobile-menu';\nconst ELEMENT_UTILITY_MOBILE_BUTTON = 'umd-element-nav-utility-mobile-button';\nconst ELEMENT_UTILITY_SEARCH_BUTTON = 'umd-element-nav-utility-search-button';\n\nconst OVERWRITE_LOCK_FULL = `.${ELEMENT_UTILITY_CONTAINTER}${IS_LOCK_FULL} .${ELEMENT_UTILITY_LOCK}`;\n\nconst OVERWRITE_CONTAINER_WITH_ITEMS = `.${ELEMENT_UTILITY_CONTAINTER}${IS_HAS_ITEMS}`;\nconst OVERWRITE_CONTAINER_WITHOUT_ITEMS = `.${ELEMENT_UTILITY_CONTAINTER}${IS_WITHOUT_ITEMS}`;\nconst OVERWRIE_WRAPPER_WITH_ITEMS = `${OVERWRITE_CONTAINER_WITH_ITEMS} .${ELEMENT_UTILITY_WRAPPER}`;\nconst OVERWRIE_WRAPPER_WITHOUT_ITEMS = `${OVERWRITE_CONTAINER_WITHOUT_ITEMS} .${ELEMENT_UTILITY_WRAPPER}`;\n\nconst isDesktop = () => window.innerWidth >= DESKTOP;\n\nconst TOP_TWENTY_TEXT = `A Top 20 Public Research University`;\n\n// prettier-ignore\nconst LockStyles = `\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_UTILITY_LOCK}`]: layout.space.horizontal.larger,\n },\n })}\n\n ${jssToCSS({\n styleObj: {\n [`${OVERWRITE_LOCK_FULL}`]: layout.space.horizontal.full,\n },\n })}\n`;\n\n// prettier-ignore\nconst WrapperStyles = `\n .${ELEMENT_UTILITY_WRAPPER} {\n display: flex;\n align-items: center;\n justify-content: space-between;\n position: relative;\n min-height: 44px;\n }\n\n .${ELEMENT_UTILITY_WRAPPER} > a {\n color: ${token.color.white};\n text-transform: uppercase;\n }\n\n .${ELEMENT_UTILITY_WRAPPER} > a:hover,\n .${ELEMENT_UTILITY_WRAPPER} > a:focus {\n text-decoration: underline;\n }\n\n ${OVERWRIE_WRAPPER_WITHOUT_ITEMS} {\n display: flex;\n justify-content: center;\n justify-self: center;\n }\n`;\n\n// prettier-ignore\nconst MenuStyles = `\n .${ELEMENT_UTILITY_MENU} {\n display: flex;\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MENU} {\n flex-direction: column;\n }\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MENU} {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n }\n\n .${ELEMENT_UTILITY_MENU} a {\n color: ${token.color.white};\n text-decoration: none;\n text-transform: uppercase;\n }\n\n .${ELEMENT_UTILITY_MENU} > * {\n display: flex;\n align-items: center;\n gap: 4px;\n height: 100%;\n padding: ${token.spacing.min} ${token.spacing.sm};\n font-weight: 700;\n font-size: 13px;\n transition: background ${ANIMATION_IN_SPEED}ms;\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MENU} > * {\n justify-content: space-between;\n }\n }\n\n .${ELEMENT_UTILITY_MENU} > *[aria-expanded=\"true\"] {\n background-color: ${token.color.redDark};\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_CONTAINTER} .${ELEMENT_UTILITY_MENU} > * {\n border-top: 1px solid ${token.color.gray.lighter};\n color: ${token.color.red};\n order: 2;\n transition: background ${ANIMATION_OUT_SPEED}ms, color ${ANIMATION_OUT_SPEED}ms;\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MENU} > *:first-child {\n border-top: none;\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MENU} > a:hover,\n .${ELEMENT_UTILITY_MENU} > a:focus {\n background-color: ${token.color.red};\n color: ${token.color.white};\n transition: background ${ANIMATION_IN_SPEED}ms, color ${ANIMATION_IN_SPEED}ms;\n }\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MENU} > *:hover,\n .${ELEMENT_UTILITY_MENU} > *:focus {\n background-color: ${token.color.redDark};\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MENU} > a:hover svg,\n .${ELEMENT_UTILITY_MENU} > a:focus svg {\n fill: ${token.color.white};\n }\n }\n\n .${ELEMENT_UTILITY_SEARCH_BUTTON} svg {\n height: 22px;\n width: inherit;\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_SEARCH_BUTTON} {\n display: none;\n }\n }\n\n .${ELEMENT_UTILITY_MENU} svg {\n max-width: 15px;\n transition: fill ${ANIMATION_OUT_SPEED}ms;\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MENU} svg {\n fill: ${token.color.red};\n transition: fill ${ANIMATION_IN_SPEED}ms;\n }\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MENU} svg {\n fill: ${token.color.white};\n }\n }\n`;\n\n// prettier-ignore\nconst MobileMenuStyles = `\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU} {\n position: absolute;\n left: -${token.spacing['2xl']};\n right: -${token.spacing['2xl']};\n top: 44px;\n box-shadow: 0 5px 5px 1px rgba(0, 0, 0, .2);\n height: 0;\n overflow: hidden;\n transition: height ${ANIMATION_OUT_SPEED}ms;\n display: flex;\n flex-direction: column;\n background-color: ${token.color.white};\n }\n }\n\n @container (max-width: ${TABLET - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU} {\n left: -${token.spacing.md};\n right: -${token.spacing.md};\n }\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU} {\n display: flex;\n height: inherit !important;\n margin-left: auto;\n position: relative;\n margin-right: -${token.spacing.md};\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU}[aria-hidden=\"true\"] {\n transition: height ${ANIMATION_OUT_SPEED}ms;\n display: none;\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU}[aria-hidden=\"false\"] {\n transition: height ${ANIMATION_IN_SPEED}ms;\n }\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU} > button {\n display: none;\n }\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MOBILE_MENU} > button {\n transition: background ${ANIMATION_OUT_SPEED}ms;\n }\n }\n`\n\n// prettier-ignore\nconst MobileButtonStyles = `\n .${ELEMENT_UTILITY_MOBILE_BUTTON} {\n margin-left: auto;\n height: 100%;\n padding: ${token.spacing.xs} ${token.spacing.md};\n margin-right: -${token.spacing.md};\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n @media (min-width: ${TABLET}px) {\n margin-right: -${token.spacing['2xl']};\n }\n\n @container (min-width: ${DESKTOP}px) {\n .${ELEMENT_UTILITY_MOBILE_BUTTON} {\n display: none;\n }\n }\n\n .${ELEMENT_UTILITY_MOBILE_BUTTON}:hover,\n .${ELEMENT_UTILITY_MOBILE_BUTTON}:focus {\n background-color: ${token.color.redDark};\n }\n\n @container (max-width: ${DESKTOP - 1}px) {\n .${ELEMENT_UTILITY_MOBILE_BUTTON} svg {\n fill: ${token.color.white};\n width: 18px;\n height: 18px;\n }\n }\n`;\n\n// prettier-ignore\nconst LogoStyles = `\n .${ELEMENT_UTILITY_LOGO_COLUMN} {\n display: flex;\n opacity: 0;\n transition: opacity .3s ease-in;\n padding: 10px 0;\n }\n\n @media (max-width: ${TABLET - 1}px) {\n .${ELEMENT_UTILITY_LOGO_COLUMN} {\n flex-direction: column;\n gap: ${token.spacing.min};\n text-align: center;\n }\n }\n\n @media (min-width: ${TABLET}px) {\n .${ELEMENT_UTILITY_LOGO_COLUMN} {\n align-items: center;\n gap: ${token.spacing.xs};\n }\n }\n\n .${ELEMENT_UTILITY_LOGO_COLUMN} * {\n color: ${token.color.white};\n\n }\n\n .${ELEMENT_UTILITY_LOGO_COLUMN} > p {\n display: block;\n font-size: 11px;\n }\n\n @media (max-width: ${TABLET - 1}px) {\n ${OVERWRIE_WRAPPER_WITH_ITEMS} .${ELEMENT_UTILITY_LOGO_COLUMN} > p {\n display: none;\n }\n }\n\n @media (min-width: ${TABLET}px) {\n .${ELEMENT_UTILITY_LOGO_COLUMN} > p {\n position: relative;\n font-size: 13px;\n }\n\n .${ELEMENT_UTILITY_LOGO_COLUMN} > p:before {\n content: '';\n position: absolute;\n left: -7px;\n height: 100%;\n width: 1px;\n background-color: ${token.color.white};\n }\n }\n\n .${ELEMENT_UTILITY_LOGO} {\n font-family: Crimson Text, Georgia, serif;\n letter-spacing: 1px;\n font-size: 14px;\n text-transform: uppercase;\n }\n`;\n\nlet STYLES_NAVIGATION_UTILITY = `\n .${ELEMENT_UTILITY_DECLARATION} {\n container: ${ELEMENT_NAME} / inline-size;\n }\n\n .${ELEMENT_UTILITY_CONTAINTER} {\n display: block;\n background-color: ${token.color.red};\n position: relative;\n z-index: 999;\n }\n\n ${LockStyles}\n ${WrapperStyles}\n ${LogoStyles}\n ${MenuStyles}\n ${MobileButtonStyles}\n ${MobileMenuStyles}\n ${STYLES_NAV_ALERT}\n ${UtilitySearch.Styles}\n`;\n\nconst CreateSearchFormButton = ({\n expandElement,\n}: {\n expandElement: HTMLDivElement | HTMLFormElement;\n}) => {\n const button = document.createElement('button');\n const elements = Array.from(expandElement.querySelectorAll('div'));\n let focusCallback = () => {};\n\n const eventClose = () => {\n expandElement.style.height = `0`;\n\n setTimeout(() => {\n expandElement.style.display = 'none';\n expandElement.setAttribute('aria-hidden', 'true');\n button.setAttribute('aria-expanded', 'false');\n button.focus();\n\n if (focusCallback) {\n focusCallback();\n focusCallback = () => {};\n }\n }, ANIMATION_OUT_SPEED + 100);\n };\n\n const eventOpen = () => {\n const focusElement = expandElement.querySelector(\n 'input[type=\"text\"]',\n ) as HTMLInputElement;\n\n expandElement.style.display = 'block';\n\n setTimeout(() => {\n const size = elements.reduce((accumulator, currentValue) => {\n return accumulator + currentValue.offsetHeight;\n }, 0);\n\n expandElement.setAttribute('aria-hidden', 'false');\n expandElement.style.height = `${size}px`;\n button.setAttribute('aria-expanded', 'true');\n if (focusElement) focusElement.focus();\n }, 100);\n\n focusCallback = handleKeyboardNavigation({\n element: expandElement,\n action: () => eventClose(),\n });\n };\n\n button.setAttribute('aria-label', 'enable the search form');\n button.setAttribute('type', 'button');\n button.innerHTML = `${iconSearch}`;\n button.setAttribute('aria-controls', UtilitySearch.Elements.form);\n button.classList.add(ELEMENT_UTILITY_SEARCH_BUTTON);\n button.setAttribute('aria-expanded', 'false');\n\n button.addEventListener('click', () => {\n const isExpanded = button.getAttribute('aria-expanded') === 'true';\n\n if (isExpanded) {\n eventClose();\n } else {\n eventOpen();\n }\n });\n\n return button;\n};\n\nconst CreateMobileMenuButton = ({\n expandElement,\n}: {\n expandElement: HTMLDivElement;\n}) => {\n const button = document.createElement('button');\n let focusCallback = () => {};\n\n const eventClose = () => {\n expandElement.style.height = `0`;\n\n setTimeout(() => {\n expandElement.style.display = 'none';\n expandElement.setAttribute('aria-hidden', 'true');\n button.setAttribute('aria-expanded', 'false');\n button.focus();\n\n if (focusCallback) {\n focusCallback();\n focusCallback = () => {};\n }\n }, ANIMATION_OUT_SPEED + 100);\n };\n\n const eventOpen = () => {\n const wrapper = expandElement.querySelector(\n `.${ELEMENT_UTILITY_MENU}`,\n ) as HTMLElement;\n const focusElement = expandElement.querySelector('a') as HTMLAnchorElement;\n\n expandElement.style.display = 'block';\n\n setTimeout(() => {\n expandElement.setAttribute('aria-hidden', 'false');\n expandElement.style.height = `${wrapper.offsetHeight}px`;\n button.setAttribute('aria-expanded', 'true');\n if (focusElement) focusElement.focus();\n }, 100);\n\n focusCallback = handleKeyboardNavigation({\n element: expandElement,\n action: () => eventClose(),\n });\n };\n\n button.innerHTML = `${iconChevronDown}`;\n button.setAttribute('type', 'button');\n button.setAttribute('aria-label', 'toggle mobile menu');\n button.setAttribute('aria-controls', `${ELEMENT_UTILITY_MOBILE_MENU}`);\n button.classList.add(ELEMENT_UTILITY_MOBILE_BUTTON);\n\n button.addEventListener('click', () => {\n const isExpanded = button.getAttribute('aria-expanded') === 'true';\n\n if (isExpanded) {\n eventClose();\n } else {\n eventOpen();\n }\n });\n\n return button;\n};\n\nconst createLogoElement = () => {\n const logo = document.createElement('a');\n\n logo.innerHTML = 'University of Maryland';\n logo.setAttribute('href', 'https://umd.edu');\n logo.setAttribute('target', '_blank');\n logo.setAttribute('rel', 'noopener noreferrer');\n logo.classList.add(ELEMENT_UTILITY_LOGO);\n\n return logo;\n};\n\nconst createLogoColumn = () => {\n const container = document.createElement('div');\n const text = document.createElement('p');\n const logo = createLogoElement();\n\n text.innerHTML = TOP_TWENTY_TEXT;\n\n container.appendChild(logo);\n container.appendChild(text);\n container.classList.add(ELEMENT_UTILITY_LOGO_COLUMN);\n\n setTimeout(() => {\n container.style.opacity = '1';\n }, 400);\n\n return container;\n};\n\nconst CreateMenuItems = ({\n isAdmissionsFeed,\n isEventsFeed,\n isGiftsFeed,\n isNewsFeed,\n isSchoolsFeed,\n isSearch,\n giftUrl,\n isSearchDomain,\n}: TypeMenuItemsRequirements) => {\n const container = document.createElement('div');\n\n const isValidUrl = (url: string) => {\n try {\n new URL(url);\n } catch (e) {\n return false;\n }\n return true;\n };\n\n const makeLinkElement = ({\n name,\n icon,\n url,\n }: {\n name: string;\n icon: string;\n url: string;\n }) => {\n const tag = document.createElement('a');\n\n tag.setAttribute('href', url);\n tag.setAttribute('target', '_blank');\n tag.setAttribute('rel', 'noopener noreferrer');\n tag.innerHTML = `${icon} <span>${name}</span>`;\n\n return tag;\n };\n\n let hasItems = false;\n\n if (isAdmissionsFeed) {\n hasItems = true;\n\n container.appendChild(\n makeLinkElement({\n name: 'Admissions',\n url: 'https://umd.edu/admissions',\n icon: flagIcon,\n }),\n );\n }\n\n if (isSchoolsFeed) {\n hasItems = true;\n\n container.appendChild(\n makeLinkElement({\n name: 'Colleges & Schools',\n url: 'https://umd.edu/colleges-and-schools',\n icon: homeIcon,\n }),\n );\n }\n\n if (isNewsFeed) {\n hasItems = true;\n\n container.appendChild(\n makeLinkElement({\n name: 'News',\n url: 'https://today.umd.edu/',\n icon: starIcon,\n }),\n );\n }\n\n if (isEventsFeed) {\n hasItems = true;\n\n container.appendChild(\n makeLinkElement({\n name: 'Events',\n url: 'https://calendar.umd.edu',\n icon: calendarIcon,\n }),\n );\n }\n\n if (isGiftsFeed) {\n hasItems = true;\n const getURL = () => {\n const defaultURL = 'https://giving.umd.edu/giving';\n\n if (!giftUrl) return defaultURL;\n\n const validURL = giftUrl ? isValidUrl(giftUrl) : null;\n return validURL ? giftUrl : defaultURL;\n };\n\n container.appendChild(\n makeLinkElement({\n name: 'Make a Gift',\n url: getURL(),\n icon: mIcon,\n }),\n );\n }\n\n if (isSearch || isSearchDomain) {\n hasItems = true;\n const formElement = UtilitySearch.CreateElement({ isSearchDomain });\n const button = CreateSearchFormButton({\n expandElement: formElement,\n });\n\n container.appendChild(button);\n container.appendChild(formElement);\n }\n\n container.classList.add(ELEMENT_UTILITY_MENU);\n\n if (!hasItems) return null;\n\n return container;\n};\n\nconst CreateNavigationUtility = (props: TypeUtilityRequirements) =>\n (() => {\n {\n const { isLockFull, isAlertOff } = props;\n const declaration = document.createElement('div');\n const container = document.createElement('div');\n const lock = document.createElement('div');\n const wrapper = document.createElement('div');\n const logoColumn = createLogoColumn();\n\n const secondaryCta = elementStyles.action.secondary.normal;\n\n let styles = STYLES_NAVIGATION_UTILITY + jssEntryToCSS(secondaryCta);\n\n const setLayout = () => {\n const menuItems = CreateMenuItems({ ...props });\n const mobileMenu = document.createElement('div');\n const mobileMenuButton = CreateMobileMenuButton({\n expandElement: mobileMenu,\n });\n\n mobileMenu.setAttribute('id', `${ELEMENT_UTILITY_MOBILE_MENU}`);\n mobileMenu.classList.add(ELEMENT_UTILITY_MOBILE_MENU);\n mobileMenu.setAttribute('aria-hidden', (!isDesktop()).toString());\n\n if (menuItems) {\n mobileMenu.appendChild(menuItems);\n wrapper.appendChild(mobileMenuButton);\n wrapper.appendChild(mobileMenu);\n container.setAttribute(WITH_ITEMS, 'true');\n } else {\n container.setAttribute(WITH_ITEMS, 'false');\n }\n };\n\n const resizeEvent = () => {\n const isDesktop = window.innerWidth >= DESKTOP;\n\n const form = container.querySelector(`.${UtilitySearch.Elements.form}`);\n const menu = container.querySelector(`.${ELEMENT_UTILITY_MOBILE_MENU}`);\n\n if (!form || !menu) return;\n\n if (isDesktop) {\n menu.setAttribute('aria-hidden', 'false');\n form.setAttribute('aria-hidden', 'true');\n form.setAttribute('layout', 'desktop');\n } else {\n menu.setAttribute('aria-hidden', 'true');\n form.setAttribute('aria-hidden', 'false');\n form.setAttribute('layout', 'mobile');\n }\n };\n\n const load = async () => {\n if (!isAlertOff) {\n const alert = await createNavAlert(props);\n\n if (alert) {\n container.insertBefore(alert?.element, container.firstChild);\n }\n }\n\n setLayout();\n resizeEvent();\n };\n\n const showAlert = async () => {\n const isCurrentAlert = container.querySelector(\n `.${ALERT_CONSTANTS.ELEMENTS.CONTAINER}`,\n );\n\n if (isCurrentAlert) return;\n\n const alert = await createNavAlert(props);\n\n if (alert) {\n container.insertBefore(alert?.element, container.firstChild);\n }\n };\n\n const hideAlert = () => {\n const alert = container.querySelector(\n `.${ALERT_CONSTANTS.ELEMENTS.CONTAINER}`,\n );\n\n if (alert) {\n alert.remove();\n }\n };\n\n wrapper.appendChild(logoColumn);\n wrapper.classList.add(ELEMENT_UTILITY_WRAPPER);\n\n lock.appendChild(wrapper);\n lock.classList.add(ELEMENT_UTILITY_LOCK);\n\n container.appendChild(lock);\n container.classList.add(ELEMENT_UTILITY_CONTAINTER);\n if (isLockFull) container.setAttribute(ATTRIBUTE_LOCK, LOCK_FULL);\n\n declaration.appendChild(container);\n declaration.classList.add(ELEMENT_UTILITY_DECLARATION);\n\n load();\n window.addEventListener('resize', resizeEvent);\n\n return {\n element: declaration,\n styles,\n events: {\n showAlert,\n hideAlert,\n },\n };\n }\n })();\n\nexport default CreateNavigationUtility;\n"],"names":["iconSearch","iconChevronDown","isDesktop"],"mappings":"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"}
|