@universityofmaryland/web-elements-library 1.5.7 → 1.5.8
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 +1 -1
- package/dist/composite/layout/section-intro/small.d.ts.map +1 -1
- package/dist/composite/layout/section-intro/small.js +17 -17
- package/dist/composite/layout/section-intro/small.js.map +1 -1
- package/dist/composite/layout/section-intro/small.mjs +17 -17
- package/dist/composite/layout/section-intro/small.mjs.map +1 -1
- package/dist/composite/navigation/utility/index.d.ts.map +1 -1
- package/dist/composite/navigation/utility/index.js +4 -1
- package/dist/composite/navigation/utility/index.js.map +1 -1
- package/dist/composite/navigation/utility/index.mjs +5 -2
- package/dist/composite/navigation/utility/index.mjs.map +1 -1
- package/package.json +1 -1
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":"small.d.ts","sourceRoot":"","sources":["../../../../source/composite/layout/section-intro/small.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"small.d.ts","sourceRoot":"","sources":["../../../../source/composite/layout/section-intro/small.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;yBA4Pe,OAAO,iBAAiB;;;;;;;;;AAAxC,wBAkBE"}
|
|
@@ -64,17 +64,26 @@ const createHeadline = (props) => {
|
|
|
64
64
|
}).build();
|
|
65
65
|
};
|
|
66
66
|
const createText = (props) => {
|
|
67
|
-
const { text, isThemeDark } = props;
|
|
67
|
+
const { text, headline, isThemeDark } = props;
|
|
68
|
+
const simpleRichTextOptions = {
|
|
69
|
+
size: "large",
|
|
70
|
+
theme: theme.theme.fontColor(isThemeDark)
|
|
71
|
+
};
|
|
68
72
|
if (!text) return null;
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
size: "large",
|
|
72
|
-
theme: theme.theme.fontColor(isThemeDark)
|
|
73
|
-
})
|
|
74
|
-
).withStyles({
|
|
73
|
+
if (!headline) simpleRichTextOptions.size = "largest";
|
|
74
|
+
return new webBuilderLibrary.ElementBuilder(text).styled(Styles__namespace.element.text.rich.composeSimple(simpleRichTextOptions)).withStyles({
|
|
75
75
|
element: {
|
|
76
76
|
[`* + &`]: {
|
|
77
77
|
marginTop: token__namespace.spacing.sm
|
|
78
|
+
},
|
|
79
|
+
[`&, & > *`]: {
|
|
80
|
+
...!headline && {
|
|
81
|
+
...typography__namespace.sans.transformations.largerBold,
|
|
82
|
+
color: token__namespace.color.black,
|
|
83
|
+
...isThemeDark && {
|
|
84
|
+
color: token__namespace.color.white
|
|
85
|
+
}
|
|
86
|
+
}
|
|
78
87
|
}
|
|
79
88
|
}
|
|
80
89
|
}).build();
|
|
@@ -95,22 +104,13 @@ const createActions = (props) => {
|
|
|
95
104
|
const createTextContainer = (props) => {
|
|
96
105
|
const { headline, text, actions, includesAnimation, isThemeDark } = props;
|
|
97
106
|
const headlineElement = createHeadline({ headline, isThemeDark });
|
|
98
|
-
const textElement = createText({ text, isThemeDark });
|
|
107
|
+
const textElement = createText({ text, headline, isThemeDark });
|
|
99
108
|
const actionsElement = createActions({ actions });
|
|
100
109
|
const container = new webBuilderLibrary.ElementBuilder().withClassName("intro-default-container-text").withStyles({
|
|
101
110
|
element: {
|
|
102
111
|
...includesAnimation && {
|
|
103
112
|
opacity: 0
|
|
104
113
|
},
|
|
105
|
-
["& > *, p"]: {
|
|
106
|
-
...!headline && {
|
|
107
|
-
...typography__namespace.sans.transformations.largerBold,
|
|
108
|
-
color: token__namespace.color.black,
|
|
109
|
-
...isThemeDark && {
|
|
110
|
-
color: token__namespace.color.white
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
},
|
|
114
114
|
[".intro-default-animated &"]: {
|
|
115
115
|
transform: "translateY(100px)",
|
|
116
116
|
animation: "intro-fade-in 1s forwards",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"small.js","sources":["../../../../source/composite/layout/section-intro/small.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as token from '@universityofmaryland/web-token-library';\nimport * as typography from '@universityofmaryland/web-styles-library/typography';\nimport * as Styles from '@universityofmaryland/web-styles-library';\nimport { theme } from '@universityofmaryland/web-utilities-library/theme';\nimport { type ElementModel } from '../../../_types';\n\nexport interface SectionIntroProps {\n headline?: HTMLElement | null;\n actions?: HTMLElement | null;\n text?: HTMLElement | null;\n hasSeparator?: boolean;\n isThemeDark?: boolean;\n includesAnimation?: boolean;\n}\n\nconst ANIMATION_CONFIGS = {\n line: `\n @keyframes intro-line {\n from {\n height: 0;\n transform: translateY(${token.spacing.lg});\n }\n to {\n height: ${token.spacing['4xl']};\n transform: translateY(0);\n }\n }\n `,\n fadeIn: `\n @keyframes intro-fade-in {\n from {\n opacity: 0;\n transform: translateY(100px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n `,\n};\n\nconst createHeadline = (\n props: Pick<SectionIntroProps, 'headline' | 'isThemeDark'>,\n): ElementModel<HTMLElement> | null => {\n const { headline, isThemeDark } = props;\n if (!headline) return null;\n\n return new ElementBuilder(headline)\n .styled(\n Styles.typography.sans.compose('largest', {\n theme: theme.fontColor(isThemeDark),\n }),\n )\n .withStyles({\n element: {\n fontWeight: 800,\n textTransform: 'uppercase',\n },\n })\n .build();\n};\n\nconst createText = (\n props: Pick<SectionIntroProps, 'text' | 'isThemeDark'>,\n): ElementModel<HTMLElement> | null => {\n const { text, isThemeDark } = props;\n if (!text) return null;\n\n return new ElementBuilder(text)\n .styled(\n Styles.element.text.rich.composeSimple({\n size: 'large',\n theme: theme.fontColor(isThemeDark),\n }),\n )\n .withStyles({\n element: {\n [`* + &`]: {\n marginTop: token.spacing.sm,\n },\n },\n })\n .build();\n};\n\nconst createActions = (\n props: Pick<SectionIntroProps, 'actions'>,\n): ElementModel<HTMLElement> | null => {\n const { actions } = props;\n if (!actions) return null;\n\n return new ElementBuilder(actions)\n .styled(Styles.layout.grid.inline.tabletRows)\n .withStyles({\n element: {\n justifyContent: 'center',\n alignItems: 'center',\n\n [`* + &`]: {\n marginTop: token.spacing.md,\n },\n },\n })\n .build();\n};\n\nconst createTextContainer = (\n props: Pick<\n SectionIntroProps,\n 'headline' | 'text' | 'actions' | 'isThemeDark' | 'includesAnimation'\n >,\n): ElementModel<HTMLElement> => {\n const { headline, text, actions, includesAnimation, isThemeDark } = props;\n\n const headlineElement = createHeadline({ headline, isThemeDark });\n const textElement = createText({ text, isThemeDark });\n const actionsElement = createActions({ actions });\n\n const container = new ElementBuilder()\n .withClassName('intro-default-container-text')\n .withStyles({\n element: {\n ...(includesAnimation && {\n opacity: 0,\n }),\n\n ['& > *, p']: {\n ...(!headline && {\n ...typography.sans.transformations.largerBold,\n color: token.color.black,\n\n ...(isThemeDark && {\n color: token.color.white,\n }),\n }),\n },\n\n ['.intro-default-animated &']: {\n transform: 'translateY(100px)',\n animation: 'intro-fade-in 1s forwards',\n animationDelay: '0.2s',\n },\n\n [`&:before`]: {\n ...(includesAnimation && {\n height: 0,\n transform: `translateY(${token.spacing.lg})`,\n }),\n },\n },\n });\n\n if (headlineElement) {\n container.withChild(headlineElement);\n }\n\n if (textElement) {\n container.withChild(textElement);\n }\n\n if (actionsElement) {\n container.withChild(actionsElement);\n }\n\n return container.build();\n};\n\nconst createWrapper = (\n props: Pick<\n SectionIntroProps,\n 'headline' | 'text' | 'actions' | 'isThemeDark'\n >,\n): ElementModel<HTMLElement> => {\n const textContainerElement = createTextContainer(props);\n\n return new ElementBuilder()\n .withClassName('intro-default-container-wrapper')\n .withChild(textContainerElement)\n .withStyles({\n element: {\n textAlign: 'center',\n },\n })\n .build();\n};\n\nconst createContainer = (\n props: Pick<\n SectionIntroProps,\n | 'isThemeDark'\n | 'hasSeparator'\n | 'headline'\n | 'text'\n | 'actions'\n | 'includesAnimation'\n >,\n): ElementModel<HTMLElement> => {\n const { isThemeDark, hasSeparator, includesAnimation } = props;\n\n const wrapperElement = createWrapper(props);\n\n return new ElementBuilder()\n .withClassName('intro-default-container')\n .withChild(wrapperElement)\n .withStyles({\n element: {\n maxWidth: token.spacing.maxWidth.small,\n margin: '0 auto',\n\n ...(hasSeparator && {\n paddingTop: token.spacing['6xl'],\n position: 'relative',\n }),\n\n [`&:before`]: {\n ...(hasSeparator && {\n content: '\"\"',\n backgroundColor: token.color.red,\n position: 'absolute',\n height: token.spacing['4xl'],\n width: '2px',\n left: 'calc(50% - 1px)',\n top: 0,\n }),\n },\n\n ['&.intro-default-animated:before']: {\n ...(includesAnimation && {\n animation: 'intro-line 1.2s forwards',\n }),\n },\n },\n })\n .build();\n};\n\nconst setupAnimation = (\n props: Pick<SectionIntroProps, 'includesAnimation'> & {\n container: HTMLElement;\n },\n) => {\n const { includesAnimation, container } = props;\n if (!includesAnimation) return;\n\n const animation: IntersectionObserverCallback = (entries, observer) => {\n entries.map((entry) => {\n const target = entry.target as HTMLElement;\n\n if (entry.isIntersecting) {\n target.classList.add('intro-default-animated');\n observer.unobserve(target);\n }\n });\n };\n\n const observer = new IntersectionObserver(animation, {\n root: null,\n rootMargin: '0px',\n threshold: [0.35],\n });\n\n observer.observe(container);\n};\n\nexport default (props: SectionIntroProps) => {\n const containerElement = createContainer(props);\n\n const loadAnimation = () =>\n setupAnimation({\n includesAnimation: props.includesAnimation,\n container: containerElement.element,\n });\n\n if (props.includesAnimation) {\n containerElement.styles += ANIMATION_CONFIGS.line;\n containerElement.styles += ANIMATION_CONFIGS.fadeIn;\n }\n\n return {\n ...containerElement,\n events: { loadAnimation },\n };\n};\n"],"names":["token","ElementBuilder","Styles","theme","typography","observer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"small.js","sources":["../../../../source/composite/layout/section-intro/small.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as token from '@universityofmaryland/web-token-library';\nimport * as typography from '@universityofmaryland/web-styles-library/typography';\nimport * as Styles from '@universityofmaryland/web-styles-library';\nimport { theme } from '@universityofmaryland/web-utilities-library/theme';\nimport { type ElementModel } from '../../../_types';\nimport { SimpleRichTextOptions } from '../../../../../styles/dist/element/text/rich';\n\nexport interface SectionIntroProps {\n headline?: HTMLElement | null;\n actions?: HTMLElement | null;\n text?: HTMLElement | null;\n hasSeparator?: boolean;\n isThemeDark?: boolean;\n includesAnimation?: boolean;\n}\n\nconst ANIMATION_CONFIGS = {\n line: `\n @keyframes intro-line {\n from {\n height: 0;\n transform: translateY(${token.spacing.lg});\n }\n to {\n height: ${token.spacing['4xl']};\n transform: translateY(0);\n }\n }\n `,\n fadeIn: `\n @keyframes intro-fade-in {\n from {\n opacity: 0;\n transform: translateY(100px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n `,\n};\n\nconst createHeadline = (\n props: Pick<SectionIntroProps, 'headline' | 'isThemeDark'>,\n): ElementModel<HTMLElement> | null => {\n const { headline, isThemeDark } = props;\n if (!headline) return null;\n\n return new ElementBuilder(headline)\n .styled(\n Styles.typography.sans.compose('largest', {\n theme: theme.fontColor(isThemeDark),\n }),\n )\n .withStyles({\n element: {\n fontWeight: 800,\n textTransform: 'uppercase',\n },\n })\n .build();\n};\n\nconst createText = (\n props: Pick<SectionIntroProps, 'text' | 'isThemeDark' | 'headline'>,\n): ElementModel<HTMLElement> | null => {\n const { text, headline, isThemeDark } = props;\n const simpleRichTextOptions: SimpleRichTextOptions = {\n size: 'large',\n theme: theme.fontColor(isThemeDark),\n };\n if (!text) return null;\n if (!headline) simpleRichTextOptions.size = 'largest';\n\n return new ElementBuilder(text)\n .styled(Styles.element.text.rich.composeSimple(simpleRichTextOptions))\n .withStyles({\n element: {\n [`* + &`]: {\n marginTop: token.spacing.sm,\n },\n\n [`&, & > *`]: {\n ...(!headline && {\n ...typography.sans.transformations.largerBold,\n color: token.color.black,\n\n ...(isThemeDark && {\n color: token.color.white,\n }),\n }),\n },\n },\n })\n .build();\n};\n\nconst createActions = (\n props: Pick<SectionIntroProps, 'actions'>,\n): ElementModel<HTMLElement> | null => {\n const { actions } = props;\n if (!actions) return null;\n\n return new ElementBuilder(actions)\n .styled(Styles.layout.grid.inline.tabletRows)\n .withStyles({\n element: {\n justifyContent: 'center',\n alignItems: 'center',\n\n [`* + &`]: {\n marginTop: token.spacing.md,\n },\n },\n })\n .build();\n};\n\nconst createTextContainer = (\n props: Pick<\n SectionIntroProps,\n 'headline' | 'text' | 'actions' | 'isThemeDark' | 'includesAnimation'\n >,\n): ElementModel<HTMLElement> => {\n const { headline, text, actions, includesAnimation, isThemeDark } = props;\n\n const headlineElement = createHeadline({ headline, isThemeDark });\n const textElement = createText({ text, headline, isThemeDark });\n const actionsElement = createActions({ actions });\n\n const container = new ElementBuilder()\n .withClassName('intro-default-container-text')\n .withStyles({\n element: {\n ...(includesAnimation && {\n opacity: 0,\n }),\n\n ['.intro-default-animated &']: {\n transform: 'translateY(100px)',\n animation: 'intro-fade-in 1s forwards',\n animationDelay: '0.2s',\n },\n\n [`&:before`]: {\n ...(includesAnimation && {\n height: 0,\n transform: `translateY(${token.spacing.lg})`,\n }),\n },\n },\n });\n\n if (headlineElement) {\n container.withChild(headlineElement);\n }\n\n if (textElement) {\n container.withChild(textElement);\n }\n\n if (actionsElement) {\n container.withChild(actionsElement);\n }\n\n return container.build();\n};\n\nconst createWrapper = (\n props: Pick<\n SectionIntroProps,\n 'headline' | 'text' | 'actions' | 'isThemeDark'\n >,\n): ElementModel<HTMLElement> => {\n const textContainerElement = createTextContainer(props);\n\n return new ElementBuilder()\n .withClassName('intro-default-container-wrapper')\n .withChild(textContainerElement)\n .withStyles({\n element: {\n textAlign: 'center',\n },\n })\n .build();\n};\n\nconst createContainer = (\n props: Pick<\n SectionIntroProps,\n | 'isThemeDark'\n | 'hasSeparator'\n | 'headline'\n | 'text'\n | 'actions'\n | 'includesAnimation'\n >,\n): ElementModel<HTMLElement> => {\n const { isThemeDark, hasSeparator, includesAnimation } = props;\n\n const wrapperElement = createWrapper(props);\n\n return new ElementBuilder()\n .withClassName('intro-default-container')\n .withChild(wrapperElement)\n .withStyles({\n element: {\n maxWidth: token.spacing.maxWidth.small,\n margin: '0 auto',\n\n ...(hasSeparator && {\n paddingTop: token.spacing['6xl'],\n position: 'relative',\n }),\n\n [`&:before`]: {\n ...(hasSeparator && {\n content: '\"\"',\n backgroundColor: token.color.red,\n position: 'absolute',\n height: token.spacing['4xl'],\n width: '2px',\n left: 'calc(50% - 1px)',\n top: 0,\n }),\n },\n\n ['&.intro-default-animated:before']: {\n ...(includesAnimation && {\n animation: 'intro-line 1.2s forwards',\n }),\n },\n },\n })\n .build();\n};\n\nconst setupAnimation = (\n props: Pick<SectionIntroProps, 'includesAnimation'> & {\n container: HTMLElement;\n },\n) => {\n const { includesAnimation, container } = props;\n if (!includesAnimation) return;\n\n const animation: IntersectionObserverCallback = (entries, observer) => {\n entries.map((entry) => {\n const target = entry.target as HTMLElement;\n\n if (entry.isIntersecting) {\n target.classList.add('intro-default-animated');\n observer.unobserve(target);\n }\n });\n };\n\n const observer = new IntersectionObserver(animation, {\n root: null,\n rootMargin: '0px',\n threshold: [0.35],\n });\n\n observer.observe(container);\n};\n\nexport default (props: SectionIntroProps) => {\n const containerElement = createContainer(props);\n\n const loadAnimation = () =>\n setupAnimation({\n includesAnimation: props.includesAnimation,\n container: containerElement.element,\n });\n\n if (props.includesAnimation) {\n containerElement.styles += ANIMATION_CONFIGS.line;\n containerElement.styles += ANIMATION_CONFIGS.fadeIn;\n }\n\n return {\n ...containerElement,\n events: { loadAnimation },\n };\n};\n"],"names":["token","ElementBuilder","Styles","theme","typography","observer"],"mappings":"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"}
|
|
@@ -44,17 +44,26 @@ const createHeadline = (props) => {
|
|
|
44
44
|
}).build();
|
|
45
45
|
};
|
|
46
46
|
const createText = (props) => {
|
|
47
|
-
const { text, isThemeDark } = props;
|
|
47
|
+
const { text, headline, isThemeDark } = props;
|
|
48
|
+
const simpleRichTextOptions = {
|
|
49
|
+
size: "large",
|
|
50
|
+
theme: theme.fontColor(isThemeDark)
|
|
51
|
+
};
|
|
48
52
|
if (!text) return null;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
size: "large",
|
|
52
|
-
theme: theme.fontColor(isThemeDark)
|
|
53
|
-
})
|
|
54
|
-
).withStyles({
|
|
53
|
+
if (!headline) simpleRichTextOptions.size = "largest";
|
|
54
|
+
return new ElementBuilder(text).styled(Styles.element.text.rich.composeSimple(simpleRichTextOptions)).withStyles({
|
|
55
55
|
element: {
|
|
56
56
|
[`* + &`]: {
|
|
57
57
|
marginTop: token.spacing.sm
|
|
58
|
+
},
|
|
59
|
+
[`&, & > *`]: {
|
|
60
|
+
...!headline && {
|
|
61
|
+
...typography.sans.transformations.largerBold,
|
|
62
|
+
color: token.color.black,
|
|
63
|
+
...isThemeDark && {
|
|
64
|
+
color: token.color.white
|
|
65
|
+
}
|
|
66
|
+
}
|
|
58
67
|
}
|
|
59
68
|
}
|
|
60
69
|
}).build();
|
|
@@ -75,22 +84,13 @@ const createActions = (props) => {
|
|
|
75
84
|
const createTextContainer = (props) => {
|
|
76
85
|
const { headline, text, actions, includesAnimation, isThemeDark } = props;
|
|
77
86
|
const headlineElement = createHeadline({ headline, isThemeDark });
|
|
78
|
-
const textElement = createText({ text, isThemeDark });
|
|
87
|
+
const textElement = createText({ text, headline, isThemeDark });
|
|
79
88
|
const actionsElement = createActions({ actions });
|
|
80
89
|
const container = new ElementBuilder().withClassName("intro-default-container-text").withStyles({
|
|
81
90
|
element: {
|
|
82
91
|
...includesAnimation && {
|
|
83
92
|
opacity: 0
|
|
84
93
|
},
|
|
85
|
-
["& > *, p"]: {
|
|
86
|
-
...!headline && {
|
|
87
|
-
...typography.sans.transformations.largerBold,
|
|
88
|
-
color: token.color.black,
|
|
89
|
-
...isThemeDark && {
|
|
90
|
-
color: token.color.white
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
94
|
[".intro-default-animated &"]: {
|
|
95
95
|
transform: "translateY(100px)",
|
|
96
96
|
animation: "intro-fade-in 1s forwards",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"small.mjs","sources":["../../../../source/composite/layout/section-intro/small.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as token from '@universityofmaryland/web-token-library';\nimport * as typography from '@universityofmaryland/web-styles-library/typography';\nimport * as Styles from '@universityofmaryland/web-styles-library';\nimport { theme } from '@universityofmaryland/web-utilities-library/theme';\nimport { type ElementModel } from '../../../_types';\n\nexport interface SectionIntroProps {\n headline?: HTMLElement | null;\n actions?: HTMLElement | null;\n text?: HTMLElement | null;\n hasSeparator?: boolean;\n isThemeDark?: boolean;\n includesAnimation?: boolean;\n}\n\nconst ANIMATION_CONFIGS = {\n line: `\n @keyframes intro-line {\n from {\n height: 0;\n transform: translateY(${token.spacing.lg});\n }\n to {\n height: ${token.spacing['4xl']};\n transform: translateY(0);\n }\n }\n `,\n fadeIn: `\n @keyframes intro-fade-in {\n from {\n opacity: 0;\n transform: translateY(100px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n `,\n};\n\nconst createHeadline = (\n props: Pick<SectionIntroProps, 'headline' | 'isThemeDark'>,\n): ElementModel<HTMLElement> | null => {\n const { headline, isThemeDark } = props;\n if (!headline) return null;\n\n return new ElementBuilder(headline)\n .styled(\n Styles.typography.sans.compose('largest', {\n theme: theme.fontColor(isThemeDark),\n }),\n )\n .withStyles({\n element: {\n fontWeight: 800,\n textTransform: 'uppercase',\n },\n })\n .build();\n};\n\nconst createText = (\n props: Pick<SectionIntroProps, 'text' | 'isThemeDark'>,\n): ElementModel<HTMLElement> | null => {\n const { text, isThemeDark } = props;\n if (!text) return null;\n\n return new ElementBuilder(text)\n .styled(\n Styles.element.text.rich.composeSimple({\n size: 'large',\n theme: theme.fontColor(isThemeDark),\n }),\n )\n .withStyles({\n element: {\n [`* + &`]: {\n marginTop: token.spacing.sm,\n },\n },\n })\n .build();\n};\n\nconst createActions = (\n props: Pick<SectionIntroProps, 'actions'>,\n): ElementModel<HTMLElement> | null => {\n const { actions } = props;\n if (!actions) return null;\n\n return new ElementBuilder(actions)\n .styled(Styles.layout.grid.inline.tabletRows)\n .withStyles({\n element: {\n justifyContent: 'center',\n alignItems: 'center',\n\n [`* + &`]: {\n marginTop: token.spacing.md,\n },\n },\n })\n .build();\n};\n\nconst createTextContainer = (\n props: Pick<\n SectionIntroProps,\n 'headline' | 'text' | 'actions' | 'isThemeDark' | 'includesAnimation'\n >,\n): ElementModel<HTMLElement> => {\n const { headline, text, actions, includesAnimation, isThemeDark } = props;\n\n const headlineElement = createHeadline({ headline, isThemeDark });\n const textElement = createText({ text, isThemeDark });\n const actionsElement = createActions({ actions });\n\n const container = new ElementBuilder()\n .withClassName('intro-default-container-text')\n .withStyles({\n element: {\n ...(includesAnimation && {\n opacity: 0,\n }),\n\n ['& > *, p']: {\n ...(!headline && {\n ...typography.sans.transformations.largerBold,\n color: token.color.black,\n\n ...(isThemeDark && {\n color: token.color.white,\n }),\n }),\n },\n\n ['.intro-default-animated &']: {\n transform: 'translateY(100px)',\n animation: 'intro-fade-in 1s forwards',\n animationDelay: '0.2s',\n },\n\n [`&:before`]: {\n ...(includesAnimation && {\n height: 0,\n transform: `translateY(${token.spacing.lg})`,\n }),\n },\n },\n });\n\n if (headlineElement) {\n container.withChild(headlineElement);\n }\n\n if (textElement) {\n container.withChild(textElement);\n }\n\n if (actionsElement) {\n container.withChild(actionsElement);\n }\n\n return container.build();\n};\n\nconst createWrapper = (\n props: Pick<\n SectionIntroProps,\n 'headline' | 'text' | 'actions' | 'isThemeDark'\n >,\n): ElementModel<HTMLElement> => {\n const textContainerElement = createTextContainer(props);\n\n return new ElementBuilder()\n .withClassName('intro-default-container-wrapper')\n .withChild(textContainerElement)\n .withStyles({\n element: {\n textAlign: 'center',\n },\n })\n .build();\n};\n\nconst createContainer = (\n props: Pick<\n SectionIntroProps,\n | 'isThemeDark'\n | 'hasSeparator'\n | 'headline'\n | 'text'\n | 'actions'\n | 'includesAnimation'\n >,\n): ElementModel<HTMLElement> => {\n const { isThemeDark, hasSeparator, includesAnimation } = props;\n\n const wrapperElement = createWrapper(props);\n\n return new ElementBuilder()\n .withClassName('intro-default-container')\n .withChild(wrapperElement)\n .withStyles({\n element: {\n maxWidth: token.spacing.maxWidth.small,\n margin: '0 auto',\n\n ...(hasSeparator && {\n paddingTop: token.spacing['6xl'],\n position: 'relative',\n }),\n\n [`&:before`]: {\n ...(hasSeparator && {\n content: '\"\"',\n backgroundColor: token.color.red,\n position: 'absolute',\n height: token.spacing['4xl'],\n width: '2px',\n left: 'calc(50% - 1px)',\n top: 0,\n }),\n },\n\n ['&.intro-default-animated:before']: {\n ...(includesAnimation && {\n animation: 'intro-line 1.2s forwards',\n }),\n },\n },\n })\n .build();\n};\n\nconst setupAnimation = (\n props: Pick<SectionIntroProps, 'includesAnimation'> & {\n container: HTMLElement;\n },\n) => {\n const { includesAnimation, container } = props;\n if (!includesAnimation) return;\n\n const animation: IntersectionObserverCallback = (entries, observer) => {\n entries.map((entry) => {\n const target = entry.target as HTMLElement;\n\n if (entry.isIntersecting) {\n target.classList.add('intro-default-animated');\n observer.unobserve(target);\n }\n });\n };\n\n const observer = new IntersectionObserver(animation, {\n root: null,\n rootMargin: '0px',\n threshold: [0.35],\n });\n\n observer.observe(container);\n};\n\nexport default (props: SectionIntroProps) => {\n const containerElement = createContainer(props);\n\n const loadAnimation = () =>\n setupAnimation({\n includesAnimation: props.includesAnimation,\n container: containerElement.element,\n });\n\n if (props.includesAnimation) {\n containerElement.styles += ANIMATION_CONFIGS.line;\n containerElement.styles += ANIMATION_CONFIGS.fadeIn;\n }\n\n return {\n ...containerElement,\n events: { loadAnimation },\n };\n};\n"],"names":["observer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"small.mjs","sources":["../../../../source/composite/layout/section-intro/small.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as token from '@universityofmaryland/web-token-library';\nimport * as typography from '@universityofmaryland/web-styles-library/typography';\nimport * as Styles from '@universityofmaryland/web-styles-library';\nimport { theme } from '@universityofmaryland/web-utilities-library/theme';\nimport { type ElementModel } from '../../../_types';\nimport { SimpleRichTextOptions } from '../../../../../styles/dist/element/text/rich';\n\nexport interface SectionIntroProps {\n headline?: HTMLElement | null;\n actions?: HTMLElement | null;\n text?: HTMLElement | null;\n hasSeparator?: boolean;\n isThemeDark?: boolean;\n includesAnimation?: boolean;\n}\n\nconst ANIMATION_CONFIGS = {\n line: `\n @keyframes intro-line {\n from {\n height: 0;\n transform: translateY(${token.spacing.lg});\n }\n to {\n height: ${token.spacing['4xl']};\n transform: translateY(0);\n }\n }\n `,\n fadeIn: `\n @keyframes intro-fade-in {\n from {\n opacity: 0;\n transform: translateY(100px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n `,\n};\n\nconst createHeadline = (\n props: Pick<SectionIntroProps, 'headline' | 'isThemeDark'>,\n): ElementModel<HTMLElement> | null => {\n const { headline, isThemeDark } = props;\n if (!headline) return null;\n\n return new ElementBuilder(headline)\n .styled(\n Styles.typography.sans.compose('largest', {\n theme: theme.fontColor(isThemeDark),\n }),\n )\n .withStyles({\n element: {\n fontWeight: 800,\n textTransform: 'uppercase',\n },\n })\n .build();\n};\n\nconst createText = (\n props: Pick<SectionIntroProps, 'text' | 'isThemeDark' | 'headline'>,\n): ElementModel<HTMLElement> | null => {\n const { text, headline, isThemeDark } = props;\n const simpleRichTextOptions: SimpleRichTextOptions = {\n size: 'large',\n theme: theme.fontColor(isThemeDark),\n };\n if (!text) return null;\n if (!headline) simpleRichTextOptions.size = 'largest';\n\n return new ElementBuilder(text)\n .styled(Styles.element.text.rich.composeSimple(simpleRichTextOptions))\n .withStyles({\n element: {\n [`* + &`]: {\n marginTop: token.spacing.sm,\n },\n\n [`&, & > *`]: {\n ...(!headline && {\n ...typography.sans.transformations.largerBold,\n color: token.color.black,\n\n ...(isThemeDark && {\n color: token.color.white,\n }),\n }),\n },\n },\n })\n .build();\n};\n\nconst createActions = (\n props: Pick<SectionIntroProps, 'actions'>,\n): ElementModel<HTMLElement> | null => {\n const { actions } = props;\n if (!actions) return null;\n\n return new ElementBuilder(actions)\n .styled(Styles.layout.grid.inline.tabletRows)\n .withStyles({\n element: {\n justifyContent: 'center',\n alignItems: 'center',\n\n [`* + &`]: {\n marginTop: token.spacing.md,\n },\n },\n })\n .build();\n};\n\nconst createTextContainer = (\n props: Pick<\n SectionIntroProps,\n 'headline' | 'text' | 'actions' | 'isThemeDark' | 'includesAnimation'\n >,\n): ElementModel<HTMLElement> => {\n const { headline, text, actions, includesAnimation, isThemeDark } = props;\n\n const headlineElement = createHeadline({ headline, isThemeDark });\n const textElement = createText({ text, headline, isThemeDark });\n const actionsElement = createActions({ actions });\n\n const container = new ElementBuilder()\n .withClassName('intro-default-container-text')\n .withStyles({\n element: {\n ...(includesAnimation && {\n opacity: 0,\n }),\n\n ['.intro-default-animated &']: {\n transform: 'translateY(100px)',\n animation: 'intro-fade-in 1s forwards',\n animationDelay: '0.2s',\n },\n\n [`&:before`]: {\n ...(includesAnimation && {\n height: 0,\n transform: `translateY(${token.spacing.lg})`,\n }),\n },\n },\n });\n\n if (headlineElement) {\n container.withChild(headlineElement);\n }\n\n if (textElement) {\n container.withChild(textElement);\n }\n\n if (actionsElement) {\n container.withChild(actionsElement);\n }\n\n return container.build();\n};\n\nconst createWrapper = (\n props: Pick<\n SectionIntroProps,\n 'headline' | 'text' | 'actions' | 'isThemeDark'\n >,\n): ElementModel<HTMLElement> => {\n const textContainerElement = createTextContainer(props);\n\n return new ElementBuilder()\n .withClassName('intro-default-container-wrapper')\n .withChild(textContainerElement)\n .withStyles({\n element: {\n textAlign: 'center',\n },\n })\n .build();\n};\n\nconst createContainer = (\n props: Pick<\n SectionIntroProps,\n | 'isThemeDark'\n | 'hasSeparator'\n | 'headline'\n | 'text'\n | 'actions'\n | 'includesAnimation'\n >,\n): ElementModel<HTMLElement> => {\n const { isThemeDark, hasSeparator, includesAnimation } = props;\n\n const wrapperElement = createWrapper(props);\n\n return new ElementBuilder()\n .withClassName('intro-default-container')\n .withChild(wrapperElement)\n .withStyles({\n element: {\n maxWidth: token.spacing.maxWidth.small,\n margin: '0 auto',\n\n ...(hasSeparator && {\n paddingTop: token.spacing['6xl'],\n position: 'relative',\n }),\n\n [`&:before`]: {\n ...(hasSeparator && {\n content: '\"\"',\n backgroundColor: token.color.red,\n position: 'absolute',\n height: token.spacing['4xl'],\n width: '2px',\n left: 'calc(50% - 1px)',\n top: 0,\n }),\n },\n\n ['&.intro-default-animated:before']: {\n ...(includesAnimation && {\n animation: 'intro-line 1.2s forwards',\n }),\n },\n },\n })\n .build();\n};\n\nconst setupAnimation = (\n props: Pick<SectionIntroProps, 'includesAnimation'> & {\n container: HTMLElement;\n },\n) => {\n const { includesAnimation, container } = props;\n if (!includesAnimation) return;\n\n const animation: IntersectionObserverCallback = (entries, observer) => {\n entries.map((entry) => {\n const target = entry.target as HTMLElement;\n\n if (entry.isIntersecting) {\n target.classList.add('intro-default-animated');\n observer.unobserve(target);\n }\n });\n };\n\n const observer = new IntersectionObserver(animation, {\n root: null,\n rootMargin: '0px',\n threshold: [0.35],\n });\n\n observer.observe(container);\n};\n\nexport default (props: SectionIntroProps) => {\n const containerElement = createContainer(props);\n\n const loadAnimation = () =>\n setupAnimation({\n includesAnimation: props.includesAnimation,\n container: containerElement.element,\n });\n\n if (props.includesAnimation) {\n containerElement.styles += ANIMATION_CONFIGS.line;\n containerElement.styles += ANIMATION_CONFIGS.fadeIn;\n }\n\n return {\n ...containerElement,\n events: { loadAnimation },\n };\n};\n"],"names":["observer"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../source/composite/navigation/utility/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAIL,cAAc,EACf,MAAM,SAAS,CAAC;AAGjB,KAAK,yBAAyB,GAAG;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,KAAK,uBAAuB,GAAG,yBAAyB,GAAG,cAAc,CAAC;AAqqB1E,QAAA,MAAM,uBAAuB,GAAI,OAAO,uBAAuB;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../source/composite/navigation/utility/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAIL,cAAc,EACf,MAAM,SAAS,CAAC;AAGjB,KAAK,yBAAyB,GAAG;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,KAAK,uBAAuB,GAAG,yBAAyB,GAAG,cAAc,CAAC;AAqqB1E,QAAA,MAAM,uBAAuB,GAAI,OAAO,uBAAuB;;;;;;;CAuHzD,CAAC;AAEP,eAAe,uBAAuB,CAAC"}
|
|
@@ -627,7 +627,10 @@ const CreateNavigationUtility = (props) => (() => {
|
|
|
627
627
|
const lock = document.createElement("div");
|
|
628
628
|
const wrapper = document.createElement("div");
|
|
629
629
|
const logoColumn = createLogoColumn();
|
|
630
|
-
const secondaryCta =
|
|
630
|
+
const secondaryCta = {
|
|
631
|
+
...elementStyles__namespace.action.secondary.normal,
|
|
632
|
+
className: `${alert.ALERT_CONSTANTS.ELEMENTS.CTA}`
|
|
633
|
+
};
|
|
631
634
|
let styles$1 = STYLES_NAVIGATION_UTILITY + styles.jssEntryToCSS(secondaryCta);
|
|
632
635
|
const setLayout = () => {
|
|
633
636
|
const menuItems = CreateMenuItems({ ...props });
|
|
@@ -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: -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
|
+
{"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 = {\n ...elementStyles.action.secondary.normal,\n className: `${ALERT_CONSTANTS.ELEMENTS.CTA}`,\n };\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","ALERT_CONSTANTS","styles","jssEntryToCSS","isDesktop","alert","createNavAlert"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAM,WAAW;AACjB,MAAM,WAAW;AACjB,MAAM,WAAW;AACjB,MAAM,eAAe;AACrB,MAAM,QAAQ;AAEd,MAAM,SAAS;AACf,MAAM,UAAU;AAChB,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAE3B,MAAM,iBAAiB;AACvB,MAAM,aAAa;AACnB,MAAM,YAAY;AAElB,MAAM,eAAe;AAErB,MAAM,eAAe,IAAI,cAAc,IAAI,SAAS;AACpD,MAAM,eAAe,IAAI,UAAU;AACnC,MAAM,mBAAmB,IAAI,UAAU;AAEvC,MAAM,8BAA8B;AACpC,MAAM,6BAA6B;AACnC,MAAM,uBAAuB;AAC7B,MAAM,0BAA0B;AAChC,MAAM,uBAAuB;AAC7B,MAAM,8BAA8B;AACpC,MAAM,uBAAuB;AAC7B,MAAM,8BAA8B;AACpC,MAAM,gCAAgC;AACtC,MAAM,gCAAgC;AAEtC,MAAM,sBAAsB,IAAI,0BAA0B,GAAG,YAAY,KAAK,oBAAoB;AAElG,MAAM,iCAAiC,IAAI,0BAA0B,GAAG,YAAY;AACpF,MAAM,oCAAoC,IAAI,0BAA0B,GAAG,gBAAgB;AAC3F,MAAM,8BAA8B,GAAG,8BAA8B,KAAK,uBAAuB;AACjG,MAAM,iCAAiC,GAAG,iCAAiC,KAAK,uBAAuB;AAEvG,MAAM,YAAY,MAAM,OAAO,cAAc;AAE7C,MAAM,kBAAkB;AAGxB,MAAM,aAAa;AAAA,IACfA,gBAAS;AAAA,EACT,UAAU;AAAA,IACR,CAAC,IAAI,oBAAoB,EAAE,GAAGC,kBAAO,MAAM,WAAW;AAAA,EAAA;AAE1D,CAAC,CAAC;AAAA;AAAA,IAEAD,gBAAS;AAAA,EACT,UAAU;AAAA,IACR,CAAC,GAAG,mBAAmB,EAAE,GAAGC,kBAAO,MAAM,WAAW;AAAA,EAAA;AAExD,CAAC,CAAC;AAAA;AAIJ,MAAM,gBAAgB;AAAA,KACjB,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAQvB,uBAAuB;AAAA,aACfC,iBAAM,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA,KAIzB,uBAAuB;AAAA,KACvB,uBAAuB;AAAA;AAAA;AAAA;AAAA,IAIxB,8BAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAQlC,MAAM,aAAa;AAAA,KACd,oBAAoB;AAAA;AAAA;AAAA;AAAA,2BAIE,UAAU,CAAC;AAAA,OAC/B,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA,2BAKA,OAAO;AAAA,OAC3B,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAOtB,oBAAoB;AAAA,aACZA,iBAAM,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,KAKzB,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA,eAKVA,iBAAM,QAAQ,GAAG,IAAIA,iBAAM,QAAQ,EAAE;AAAA;AAAA;AAAA,6BAGvB,kBAAkB;AAAA;AAAA;AAAA,2BAGpB,OAAO;AAAA,MAC5B,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA,KAKrB,oBAAoB;AAAA,wBACDA,iBAAM,MAAM,OAAO;AAAA;AAAA;AAAA,2BAGhB,UAAU,CAAC;AAAA,OAC/B,0BAA0B,KAAK,oBAAoB;AAAA,8BAC5BA,iBAAM,MAAM,KAAK,OAAO;AAAA,eACvCA,iBAAM,MAAM,GAAG;AAAA;AAAA,+BAEC,mBAAmB,aAAa,mBAAmB;AAAA;AAAA;AAAA;AAAA,2BAIvD,UAAU,CAAC;AAAA,OAC/B,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA,2BAKA,UAAU,CAAC;AAAA,OAC/B,oBAAoB;AAAA,OACpB,oBAAoB;AAAA,0BACDA,iBAAM,MAAM,GAAG;AAAA,eAC1BA,iBAAM,MAAM,KAAK;AAAA,+BACD,kBAAkB,aAAa,kBAAkB;AAAA;AAAA;AAAA;AAAA,2BAIrD,OAAO;AAAA,OAC3B,oBAAoB;AAAA,OACpB,oBAAoB;AAAA,0BACDA,iBAAM,MAAM,OAAO;AAAA;AAAA;AAAA;AAAA,2BAIlB,UAAU,CAAC;AAAA,OAC/B,oBAAoB;AAAA,OACpB,oBAAoB;AAAA,cACbA,iBAAM,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA,KAI1B,6BAA6B;AAAA;AAAA;AAAA;AAAA;AAAA,2BAKP,UAAU,CAAC;AAAA,OAC/B,6BAA6B;AAAA;AAAA;AAAA;AAAA;AAAA,KAK/B,oBAAoB;AAAA;AAAA,uBAEF,mBAAmB;AAAA;AAAA;AAAA,2BAGf,UAAU,CAAC;AAAA,OAC/B,oBAAoB;AAAA,cACbA,iBAAM,MAAM,GAAG;AAAA,yBACJ,kBAAkB;AAAA;AAAA;AAAA;AAAA,2BAIhB,OAAO;AAAA,OAC3B,oBAAoB;AAAA,cACbA,iBAAM,MAAM,KAAK;AAAA;AAAA;AAAA;AAM/B,MAAM,mBAAmB;AAAA,2BACE,UAAU,CAAC;AAAA,OAC/B,2BAA2B;AAAA;AAAA,eAEnBA,iBAAM,QAAQ,KAAK,CAAC;AAAA,gBACnBA,iBAAM,QAAQ,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,2BAKT,mBAAmB;AAAA;AAAA;AAAA,0BAGpBA,iBAAM,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA,2BAIhB,SAAS,CAAC;AAAA,OAC9B,2BAA2B;AAAA,eACnBA,iBAAM,QAAQ,EAAE;AAAA,gBACfA,iBAAM,QAAQ,EAAE;AAAA;AAAA;AAAA;AAAA,2BAIL,OAAO;AAAA,OAC3B,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA,uBAKXA,iBAAM,QAAQ,EAAE;AAAA;AAAA;AAAA;AAAA,2BAIZ,UAAU,CAAC;AAAA,OAC/B,2BAA2B;AAAA,2BACP,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA,2BAKnB,UAAU,CAAC;AAAA,OAC/B,2BAA2B;AAAA,2BACP,kBAAkB;AAAA;AAAA;AAAA;AAAA,2BAIlB,UAAU,CAAC;AAAA,OAC/B,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA,2BAKP,OAAO;AAAA,OAC3B,2BAA2B;AAAA,+BACH,mBAAmB;AAAA;AAAA;AAAA;AAMlD,MAAM,qBAAqB;AAAA,KACtB,6BAA6B;AAAA;AAAA;AAAA,eAGnBA,iBAAM,QAAQ,EAAE,IAAIA,iBAAM,QAAQ,EAAE;AAAA,qBAC9BA,iBAAM,QAAQ,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAOd,MAAM;AAAA,qBACRA,iBAAM,QAAQ,KAAK,CAAC;AAAA;AAAA;AAAA,2BAGd,OAAO;AAAA,OAC3B,6BAA6B;AAAA;AAAA;AAAA;AAAA;AAAA,KAK/B,6BAA6B;AAAA,KAC7B,6BAA6B;AAAA,wBACVA,iBAAM,MAAM,OAAO;AAAA;AAAA;AAAA,2BAGhB,UAAU,CAAC;AAAA,OAC/B,6BAA6B;AAAA,cACtBA,iBAAM,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ/B,MAAM,aAAa;AAAA,KACd,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAOT,SAAS,CAAC;AAAA,OAC1B,2BAA2B;AAAA;AAAA,aAErBA,iBAAM,QAAQ,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA,uBAKP,MAAM;AAAA,OACtB,2BAA2B;AAAA;AAAA,aAErBA,iBAAM,QAAQ,EAAE;AAAA;AAAA;AAAA;AAAA,KAIxB,2BAA2B;AAAA,aACnBA,iBAAM,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA,KAIzB,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA,uBAKT,SAAS,CAAC;AAAA,MAC3B,2BAA2B,KAAK,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA,uBAK1C,MAAM;AAAA,OACtB,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA,OAK3B,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAMRA,iBAAM,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA,KAItC,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQzB,IAAI,4BAA4B;AAAA,KAC3B,2BAA2B;AAAA,iBACf,YAAY;AAAA;AAAA;AAAA,KAGxB,0BAA0B;AAAA;AAAA,wBAEPA,iBAAM,MAAM,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA,IAKnC,UAAU;AAAA,IACV,aAAa;AAAA,IACb,UAAU;AAAA,IACV,UAAU;AAAA,IACV,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,IAChBC,MAAAA,gBAAgB;AAAA,IAChBC,OAAc,MAAM;AAAA;AAGxB,MAAM,yBAAyB,CAAC;AAAA,EAC9B;AACF,MAEM;AACJ,QAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,QAAM,WAAW,MAAM,KAAK,cAAc,iBAAiB,KAAK,CAAC;AACjE,MAAI,gBAAgB,MAAM;AAAA,EAAC;AAE3B,QAAM,aAAa,MAAM;AACvB,kBAAc,MAAM,SAAS;AAE7B,eAAW,MAAM;AACf,oBAAc,MAAM,UAAU;AAC9B,oBAAc,aAAa,eAAe,MAAM;AAChD,aAAO,aAAa,iBAAiB,OAAO;AAC5C,aAAO,MAAA;AAEP,UAAI,eAAe;AACjB,sBAAA;AACA,wBAAgB,MAAM;AAAA,QAAC;AAAA,MACzB;AAAA,IACF,GAAG,sBAAsB,GAAG;AAAA,EAC9B;AAEA,QAAM,YAAY,MAAM;AACtB,UAAM,eAAe,cAAc;AAAA,MACjC;AAAA,IAAA;AAGF,kBAAc,MAAM,UAAU;AAE9B,eAAW,MAAM;AACf,YAAM,OAAO,SAAS,OAAO,CAAC,aAAa,iBAAiB;AAC1D,eAAO,cAAc,aAAa;AAAA,MACpC,GAAG,CAAC;AAEJ,oBAAc,aAAa,eAAe,OAAO;AACjD,oBAAc,MAAM,SAAS,GAAG,IAAI;AACpC,aAAO,aAAa,iBAAiB,MAAM;AAC3C,UAAI,2BAA2B,MAAA;AAAA,IACjC,GAAG,GAAG;AAEN,oBAAgBC,OAAAA,yBAAyB;AAAA,MACvC,SAAS;AAAA,MACT,QAAQ,MAAM,WAAA;AAAA,IAAW,CAC1B;AAAA,EACH;AAEA,SAAO,aAAa,cAAc,wBAAwB;AAC1D,SAAO,aAAa,QAAQ,QAAQ;AACpC,SAAO,YAAY,GAAGC,SAAAA,MAAU;AAChC,SAAO,aAAa,iBAAiBF,OAAc,SAAS,IAAI;AAChE,SAAO,UAAU,IAAI,6BAA6B;AAClD,SAAO,aAAa,iBAAiB,OAAO;AAE5C,SAAO,iBAAiB,SAAS,MAAM;AACrC,UAAM,aAAa,OAAO,aAAa,eAAe,MAAM;AAE5D,QAAI,YAAY;AACd,iBAAA;AAAA,IACF,OAAO;AACL,gBAAA;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEA,MAAM,yBAAyB,CAAC;AAAA,EAC9B;AACF,MAEM;AACJ,QAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,MAAI,gBAAgB,MAAM;AAAA,EAAC;AAE3B,QAAM,aAAa,MAAM;AACvB,kBAAc,MAAM,SAAS;AAE7B,eAAW,MAAM;AACf,oBAAc,MAAM,UAAU;AAC9B,oBAAc,aAAa,eAAe,MAAM;AAChD,aAAO,aAAa,iBAAiB,OAAO;AAC5C,aAAO,MAAA;AAEP,UAAI,eAAe;AACjB,sBAAA;AACA,wBAAgB,MAAM;AAAA,QAAC;AAAA,MACzB;AAAA,IACF,GAAG,sBAAsB,GAAG;AAAA,EAC9B;AAEA,QAAM,YAAY,MAAM;AACtB,UAAM,UAAU,cAAc;AAAA,MAC5B,IAAI,oBAAoB;AAAA,IAAA;AAE1B,UAAM,eAAe,cAAc,cAAc,GAAG;AAEpD,kBAAc,MAAM,UAAU;AAE9B,eAAW,MAAM;AACf,oBAAc,aAAa,eAAe,OAAO;AACjD,oBAAc,MAAM,SAAS,GAAG,QAAQ,YAAY;AACpD,aAAO,aAAa,iBAAiB,MAAM;AAC3C,UAAI,2BAA2B,MAAA;AAAA,IACjC,GAAG,GAAG;AAEN,oBAAgBC,OAAAA,yBAAyB;AAAA,MACvC,SAAS;AAAA,MACT,QAAQ,MAAM,WAAA;AAAA,IAAW,CAC1B;AAAA,EACH;AAEA,SAAO,YAAY,GAAGE,SAAAA,YAAe;AACrC,SAAO,aAAa,QAAQ,QAAQ;AACpC,SAAO,aAAa,cAAc,oBAAoB;AACtD,SAAO,aAAa,iBAAiB,GAAG,2BAA2B,EAAE;AACrE,SAAO,UAAU,IAAI,6BAA6B;AAElD,SAAO,iBAAiB,SAAS,MAAM;AACrC,UAAM,aAAa,OAAO,aAAa,eAAe,MAAM;AAE5D,QAAI,YAAY;AACd,iBAAA;AAAA,IACF,OAAO;AACL,gBAAA;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEA,MAAM,oBAAoB,MAAM;AAC9B,QAAM,OAAO,SAAS,cAAc,GAAG;AAEvC,OAAK,YAAY;AACjB,OAAK,aAAa,QAAQ,iBAAiB;AAC3C,OAAK,aAAa,UAAU,QAAQ;AACpC,OAAK,aAAa,OAAO,qBAAqB;AAC9C,OAAK,UAAU,IAAI,oBAAoB;AAEvC,SAAO;AACT;AAEA,MAAM,mBAAmB,MAAM;AAC7B,QAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,QAAM,OAAO,SAAS,cAAc,GAAG;AACvC,QAAM,OAAO,kBAAA;AAEb,OAAK,YAAY;AAEjB,YAAU,YAAY,IAAI;AAC1B,YAAU,YAAY,IAAI;AAC1B,YAAU,UAAU,IAAI,2BAA2B;AAEnD,aAAW,MAAM;AACf,cAAU,MAAM,UAAU;AAAA,EAC5B,GAAG,GAAG;AAEN,SAAO;AACT;AAEA,MAAM,kBAAkB,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAiC;AAC/B,QAAM,YAAY,SAAS,cAAc,KAAK;AAE9C,QAAM,aAAa,CAAC,QAAgB;AAClC,QAAI;AACF,UAAI,IAAI,GAAG;AAAA,IACb,SAAS,GAAG;AACV,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAEA,QAAM,kBAAkB,CAAC;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,EAAA,MAKI;AACJ,UAAM,MAAM,SAAS,cAAc,GAAG;AAEtC,QAAI,aAAa,QAAQ,GAAG;AAC5B,QAAI,aAAa,UAAU,QAAQ;AACnC,QAAI,aAAa,OAAO,qBAAqB;AAC7C,QAAI,YAAY,GAAG,IAAI,UAAU,IAAI;AAErC,WAAO;AAAA,EACT;AAEA,MAAI,WAAW;AAEf,MAAI,kBAAkB;AACpB,eAAW;AAEX,cAAU;AAAA,MACR,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,MAAA,CACP;AAAA,IAAA;AAAA,EAEL;AAEA,MAAI,eAAe;AACjB,eAAW;AAEX,cAAU;AAAA,MACR,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,MAAA,CACP;AAAA,IAAA;AAAA,EAEL;AAEA,MAAI,YAAY;AACd,eAAW;AAEX,cAAU;AAAA,MACR,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,MAAA,CACP;AAAA,IAAA;AAAA,EAEL;AAEA,MAAI,cAAc;AAChB,eAAW;AAEX,cAAU;AAAA,MACR,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,MAAA,CACP;AAAA,IAAA;AAAA,EAEL;AAEA,MAAI,aAAa;AACf,eAAW;AACX,UAAM,SAAS,MAAM;AACnB,YAAM,aAAa;AAEnB,UAAI,CAAC,QAAS,QAAO;AAErB,YAAM,WAAW,UAAU,WAAW,OAAO,IAAI;AACjD,aAAO,WAAW,UAAU;AAAA,IAC9B;AAEA,cAAU;AAAA,MACR,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,KAAK,OAAA;AAAA,QACL,MAAM;AAAA,MAAA,CACP;AAAA,IAAA;AAAA,EAEL;AAEA,MAAI,YAAY,gBAAgB;AAC9B,eAAW;AACX,UAAM,cAAcH,OAAc,cAAc,EAAE,gBAAgB;AAClE,UAAM,SAAS,uBAAuB;AAAA,MACpC,eAAe;AAAA,IAAA,CAChB;AAED,cAAU,YAAY,MAAM;AAC5B,cAAU,YAAY,WAAW;AAAA,EACnC;AAEA,YAAU,UAAU,IAAI,oBAAoB;AAE5C,MAAI,CAAC,SAAU,QAAO;AAEtB,SAAO;AACT;AAEA,MAAM,0BAA0B,CAAC,WAC9B,MAAM;AACL;AACE,UAAM,EAAE,YAAY,WAAA,IAAe;AACnC,UAAM,cAAc,SAAS,cAAc,KAAK;AAChD,UAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,UAAM,OAAO,SAAS,cAAc,KAAK;AACzC,UAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,UAAM,aAAa,iBAAA;AAEnB,UAAM,eAAe;AAAA,MACnB,GAAGI,yBAAc,OAAO,UAAU;AAAA,MAClC,WAAW,GAAGC,sBAAgB,SAAS,GAAG;AAAA,IAAA;AAG5C,QAAIC,WAAS,4BAA4BC,OAAAA,cAAc,YAAY;AAEnE,UAAM,YAAY,MAAM;AACtB,YAAM,YAAY,gBAAgB,EAAE,GAAG,OAAO;AAC9C,YAAM,aAAa,SAAS,cAAc,KAAK;AAC/C,YAAM,mBAAmB,uBAAuB;AAAA,QAC9C,eAAe;AAAA,MAAA,CAChB;AAED,iBAAW,aAAa,MAAM,GAAG,2BAA2B,EAAE;AAC9D,iBAAW,UAAU,IAAI,2BAA2B;AACpD,iBAAW,aAAa,gBAAgB,CAAC,UAAA,GAAa,UAAU;AAEhE,UAAI,WAAW;AACb,mBAAW,YAAY,SAAS;AAChC,gBAAQ,YAAY,gBAAgB;AACpC,gBAAQ,YAAY,UAAU;AAC9B,kBAAU,aAAa,YAAY,MAAM;AAAA,MAC3C,OAAO;AACL,kBAAU,aAAa,YAAY,OAAO;AAAA,MAC5C;AAAA,IACF;AAEA,UAAM,cAAc,MAAM;AACxB,YAAMC,aAAY,OAAO,cAAc;AAEvC,YAAM,OAAO,UAAU,cAAc,IAAIR,OAAc,SAAS,IAAI,EAAE;AACtE,YAAM,OAAO,UAAU,cAAc,IAAI,2BAA2B,EAAE;AAEtE,UAAI,CAAC,QAAQ,CAAC,KAAM;AAEpB,UAAIQ,YAAW;AACb,aAAK,aAAa,eAAe,OAAO;AACxC,aAAK,aAAa,eAAe,MAAM;AACvC,aAAK,aAAa,UAAU,SAAS;AAAA,MACvC,OAAO;AACL,aAAK,aAAa,eAAe,MAAM;AACvC,aAAK,aAAa,eAAe,OAAO;AACxC,aAAK,aAAa,UAAU,QAAQ;AAAA,MACtC;AAAA,IACF;AAEA,UAAM,OAAO,YAAY;AACvB,UAAI,CAAC,YAAY;AACf,cAAMC,UAAQ,MAAMC,MAAAA,eAAe,KAAK;AAExC,YAAID,SAAO;AACT,oBAAU,aAAaA,SAAO,SAAS,UAAU,UAAU;AAAA,QAC7D;AAAA,MACF;AAEA,gBAAA;AACA,kBAAA;AAAA,IACF;AAEA,UAAM,YAAY,YAAY;AAC5B,YAAM,iBAAiB,UAAU;AAAA,QAC/B,IAAIJ,MAAAA,gBAAgB,SAAS,SAAS;AAAA,MAAA;AAGxC,UAAI,eAAgB;AAEpB,YAAMI,UAAQ,MAAMC,MAAAA,eAAe,KAAK;AAExC,UAAID,SAAO;AACT,kBAAU,aAAaA,SAAO,SAAS,UAAU,UAAU;AAAA,MAC7D;AAAA,IACF;AAEA,UAAM,YAAY,MAAM;AACtB,YAAMA,UAAQ,UAAU;AAAA,QACtB,IAAIJ,MAAAA,gBAAgB,SAAS,SAAS;AAAA,MAAA;AAGxC,UAAII,SAAO;AACTA,gBAAM,OAAA;AAAA,MACR;AAAA,IACF;AAEA,YAAQ,YAAY,UAAU;AAC9B,YAAQ,UAAU,IAAI,uBAAuB;AAE7C,SAAK,YAAY,OAAO;AACxB,SAAK,UAAU,IAAI,oBAAoB;AAEvC,cAAU,YAAY,IAAI;AAC1B,cAAU,UAAU,IAAI,0BAA0B;AAClD,QAAI,WAAY,WAAU,aAAa,gBAAgB,SAAS;AAEhE,gBAAY,YAAY,SAAS;AACjC,gBAAY,UAAU,IAAI,2BAA2B;AAErD,SAAA;AACA,WAAO,iBAAiB,UAAU,WAAW;AAE7C,WAAO;AAAA,MACL,SAAS;AAAA,MAAA,QACTH;AAAAA,MACA,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,EAEJ;AACF,GAAA;;"}
|
|
@@ -5,7 +5,7 @@ import { jssToCSS, jssEntryToCSS } from "@universityofmaryland/web-utilities-lib
|
|
|
5
5
|
import { handleKeyboardNavigation } from "@universityofmaryland/web-utilities-library/events";
|
|
6
6
|
import { search } from "@universityofmaryland/web-icons-library/search";
|
|
7
7
|
import { chevron_down } from "@universityofmaryland/web-icons-library/controls";
|
|
8
|
-
import { STYLES_NAV_ALERT,
|
|
8
|
+
import { STYLES_NAV_ALERT, ALERT_CONSTANTS, createNavAlert } from "./alert.mjs";
|
|
9
9
|
import UtilitySearch from "./search.mjs";
|
|
10
10
|
const 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>`;
|
|
11
11
|
const 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>`;
|
|
@@ -607,7 +607,10 @@ const CreateNavigationUtility = (props) => (() => {
|
|
|
607
607
|
const lock = document.createElement("div");
|
|
608
608
|
const wrapper = document.createElement("div");
|
|
609
609
|
const logoColumn = createLogoColumn();
|
|
610
|
-
const secondaryCta =
|
|
610
|
+
const secondaryCta = {
|
|
611
|
+
...elementStyles.action.secondary.normal,
|
|
612
|
+
className: `${ALERT_CONSTANTS.ELEMENTS.CTA}`
|
|
613
|
+
};
|
|
611
614
|
let styles = STYLES_NAVIGATION_UTILITY + jssEntryToCSS(secondaryCta);
|
|
612
615
|
const setLayout = () => {
|
|
613
616
|
const menuItems = CreateMenuItems({ ...props });
|
|
@@ -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: -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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"}
|
|
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 = {\n ...elementStyles.action.secondary.normal,\n className: `${ALERT_CONSTANTS.ELEMENTS.CTA}`,\n };\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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"}
|