UNPKG

@uiowa/uiowa-header

Version:

An Angular library for uiowa website header, including an IOWA branding bar and a website nav bar.

195 lines (187 loc) 51.4 kB
import * as i0 from '@angular/core'; import { output, inject, ElementRef, Directive, Injectable, input, computed, ChangeDetectionStrategy, Component, signal } from '@angular/core'; import { RouterLink, RouterLinkActive } from '@angular/router'; class ClickOutside { clickOutside = output(); _elf = inject(ElementRef); onClick(event) { const target = event.target; if (target) { const clickedInside = this._elf.nativeElement.contains(target); if (!clickedInside) { this.clickOutside.emit(event); } } } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.4", ngImport: i0, type: ClickOutside, deps: [], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.4", type: ClickOutside, isStandalone: true, selector: "[clickOutside]", outputs: { clickOutside: "clickOutside" }, host: { listeners: { "document:click": "onClick($event)" } }, ngImport: i0 }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.4", ngImport: i0, type: ClickOutside, decorators: [{ type: Directive, args: [{ selector: '[clickOutside]', host: { '(document:click)': 'onClick($event)', }, }] }], propDecorators: { clickOutside: [{ type: i0.Output, args: ["clickOutside"] }] } }); class LoginService { returnUri = ''; constructor() { } login() { let url = `account/login?returnUri=${encodeURIComponent(this.returnUri)}`; if (document.documentMode) { const base = document.getElementsByTagName('base')[0].href; url = base + url; } try { window.location.replace(url); } catch { window.location.href = url; } } logout() { let url = `account/logout`; if (document.documentMode) { const base = document.getElementsByTagName('base')[0].href; url = base + url; } try { window.location.replace(url); } catch { window.location.href = url; } } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.4", ngImport: i0, type: LoginService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.4", ngImport: i0, type: LoginService, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.4", ngImport: i0, type: LoginService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [] }); class HeaderUser { userName = ''; originalUserName; } class InternalRoute { text; route; subMenus; constructor(text, route, subMenus) { this.text = text; this.route = route; this.subMenus = subMenus; } } class ExternalLink { text; url; target; constructor(text, url, target = '_blank') { this.text = text; this.url = url; this.target = target; } } class BannerLinks { link1; link2; constructor(link1, link2) { this.link1 = link1; this.link2 = link2; } } class UiowaFooter { year = new Date().getFullYear(); emailLinkText = input('Business Services IT', ...(ngDevMode ? [{ debugName: "emailLinkText" }] : [])); emailAddress = input('changhui-xu@uiowa.edu', ...(ngDevMode ? [{ debugName: "emailAddress" }] : [])); emailSubject = input('Questions about the uiowa-header', ...(ngDevMode ? [{ debugName: "emailSubject" }] : [])); emailHref = computed(() => `mailto:${this.emailAddress()}?subject=${this.emailSubject().replace(' ', '%20')}`, ...(ngDevMode ? [{ debugName: "emailHref" }] : [])); static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.4", ngImport: i0, type: UiowaFooter, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.4", type: UiowaFooter, isStandalone: true, selector: "footer[uiowa-footer]", inputs: { emailLinkText: { classPropertyName: "emailLinkText", publicName: "emailLinkText", isSignal: true, isRequired: false, transformFunction: null }, emailAddress: { classPropertyName: "emailAddress", publicName: "emailAddress", isSignal: true, isRequired: false, transformFunction: null }, emailSubject: { classPropertyName: "emailSubject", publicName: "emailSubject", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"copyright\">\r\n <div class=\"content me-2\">\r\n <span class=\"me-2\">Copyright &copy; {{ year }}</span>\r\n <a href=\"https://uiowa.edu\" title=\"University of Iowa\" target=\"_blank\"> University of Iowa </a>\r\n </div>\r\n <div class=\"spacer\"></div>\r\n <div class=\"content\">\r\n <svg\r\n aria-hidden=\"true\"\r\n role=\"icon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n style=\"height: 0.8rem; width: 1rem; margin-top: 2px\"\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z\"\r\n ></path>\r\n </svg>\r\n <span style=\"margin: 0 0.25rem\">E-mail any questions to</span>\r\n <a href=\"{{ emailHref() }}\">{{ emailLinkText() }}</a>\r\n </div>\r\n</div>\r\n", styles: [".copyright{background-color:#000;font-size:.8rem;color:#ffcd00;text-align:center!important;padding:.25rem 0;width:100%!important;display:flex;justify-content:center;flex-wrap:wrap;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\"}.copyright .content{display:inline-flex!important;align-items:center;white-space:nowrap}.copyright .me-2{margin-right:.5rem!important}.copyright a{color:#ffcd00;text-decoration:underline}.copyright .spacer{display:none!important}@media(min-width:576px){.copyright .spacer{display:inline-flex!important;margin:0 1.5rem!important}}@media(min-width:768px){.copyright .spacer{margin-right:3rem!important;margin-left:3rem!important}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.4", ngImport: i0, type: UiowaFooter, decorators: [{ type: Component, args: [{ selector: 'footer[uiowa-footer]', imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"copyright\">\r\n <div class=\"content me-2\">\r\n <span class=\"me-2\">Copyright &copy; {{ year }}</span>\r\n <a href=\"https://uiowa.edu\" title=\"University of Iowa\" target=\"_blank\"> University of Iowa </a>\r\n </div>\r\n <div class=\"spacer\"></div>\r\n <div class=\"content\">\r\n <svg\r\n aria-hidden=\"true\"\r\n role=\"icon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n style=\"height: 0.8rem; width: 1rem; margin-top: 2px\"\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z\"\r\n ></path>\r\n </svg>\r\n <span style=\"margin: 0 0.25rem\">E-mail any questions to</span>\r\n <a href=\"{{ emailHref() }}\">{{ emailLinkText() }}</a>\r\n </div>\r\n</div>\r\n", styles: [".copyright{background-color:#000;font-size:.8rem;color:#ffcd00;text-align:center!important;padding:.25rem 0;width:100%!important;display:flex;justify-content:center;flex-wrap:wrap;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\"}.copyright .content{display:inline-flex!important;align-items:center;white-space:nowrap}.copyright .me-2{margin-right:.5rem!important}.copyright a{color:#ffcd00;text-decoration:underline}.copyright .spacer{display:none!important}@media(min-width:576px){.copyright .spacer{display:inline-flex!important;margin:0 1.5rem!important}}@media(min-width:768px){.copyright .spacer{margin-right:3rem!important;margin-left:3rem!important}}\n"] }] }], propDecorators: { emailLinkText: [{ type: i0.Input, args: [{ isSignal: true, alias: "emailLinkText", required: false }] }], emailAddress: [{ type: i0.Input, args: [{ isSignal: true, alias: "emailAddress", required: false }] }], emailSubject: [{ type: i0.Input, args: [{ isSignal: true, alias: "emailSubject", required: false }] }] } }); class NavService { _showNavBar = signal(false, ...(ngDevMode ? [{ debugName: "_showNavBar" }] : [])); showNavBar = this._showNavBar.asReadonly(); trigger = () => this._showNavBar.update((b) => !b); hide = () => this._showNavBar.set(false); static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.4", ngImport: i0, type: NavService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.4", ngImport: i0, type: NavService, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.4", ngImport: i0, type: NavService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }] }); class UsernameDropdown { user = input(...(ngDevMode ? [undefined, { debugName: "user" }] : [])); stopImpersonation = output(); showMenu = false; loginService = inject(LoginService); logout() { this.loginService.logout(); } login() { this.loginService.login(); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.4", ngImport: i0, type: UsernameDropdown, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.4", type: UsernameDropdown, isStandalone: true, selector: "uiowa-username-dropdown", inputs: { user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { stopImpersonation: "stopImpersonation" }, ngImport: i0, template: "@if(user()?.userName; as userName){\r\n<button\r\n aria-label=\"Click to show menu\"\r\n class=\"iowa-user-button has-dropdown\"\r\n id=\"username-dropdown\"\r\n (click)=\"showMenu = !showMenu\"\r\n (clickOutside)=\"showMenu = false\"\r\n [attr.aria-expanded]=\"showMenu\"\r\n>\r\n <svg\r\n aria-hidden=\"true\"\r\n role=\"icon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 448 512\"\r\n style=\"height: 0.8rem; width: 1rem; vertical-align: baseline\"\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"\r\n ></path>\r\n </svg>\r\n <span class=\"iowa-user-name ml-1\">\r\n {{ userName }}\r\n @if(user()?.originalUserName; as originalUserName){\r\n <span class=\"iowa-original-username\"> ({{ originalUserName }}) </span>\r\n }\r\n </span>\r\n</button>\r\n<div\r\n aria-labelledby=\"username-dropdown\"\r\n role=\"menuitem\"\r\n class=\"iowa-username-dropdown iowa-user-dropdown-menu-right\"\r\n [class.show]=\"showMenu\"\r\n>\r\n @if(user()?.originalUserName){\r\n <button\r\n type=\"button\"\r\n class=\"iowa-username-dropdown-button\"\r\n (click)=\"stopImpersonation.emit(); showMenu = false\"\r\n >\r\n <svg\r\n aria-hidden=\"true\"\r\n role=\"icon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n style=\"height: 1rem; width: 1rem\"\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z\"\r\n ></path>\r\n </svg>\r\n <span class=\"ml-1\">Stop Impersonation</span>\r\n </button>\r\n <div class=\"dropdown-divider\"></div>\r\n }\r\n <button type=\"button\" class=\"iowa-username-dropdown-button\" (click)=\"logout()\">\r\n <svg\r\n aria-hidden=\"true\"\r\n role=\"icon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n style=\"height: 1rem; width: 1rem\"\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z\"\r\n ></path>\r\n </svg>\r\n <span class=\"ml-1\">Logout</span>\r\n </button>\r\n</div>\r\n}@else {\r\n<button\r\n aria-label=\"Click to login\"\r\n class=\"iowa-user-button\"\r\n id=\"username-dropdown\"\r\n (click)=\"login()\"\r\n>\r\n <svg\r\n aria-hidden=\"true\"\r\n role=\"icon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 448 512\"\r\n style=\"height: 0.8rem; width: 1rem; vertical-align: baseline\"\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"\r\n ></path>\r\n </svg>\r\n <span class=\"ml-1\">Login</span>\r\n</button>\r\n}\r\n", styles: [":host{display:flex;font-family:sans-serif;position:relative}.iowa-user-button{color:#ffcd00;padding:0!important;white-space:nowrap;background-color:transparent;border:none}@media(min-width:855px){.iowa-user-button{color:#151515}}.iowa-user-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:inline-block;vertical-align:bottom}.iowa-original-username{color:#ff4759;font-weight:700}@media(min-width:855px){.iowa-original-username{color:#ab0000}}.iowa-user-dropdown-menu-right{position:absolute;float:none;right:0;top:100%;z-index:1000;display:none;margin:.125rem 0 0;font-size:1rem;line-height:1.5;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem;box-shadow:0 4px 8px #0003}.iowa-user-button.has-dropdown:after{margin:0 0 2px 4px;display:inline-block;content:\"\";border-style:solid;border-width:0 2px 2px 0;padding:3px;transform:rotate(45deg);-webkit-transform:rotate(45deg)}.iowa-user-dropdown-menu-right.show{display:block!important}.iowa-username-dropdown{min-width:7rem;padding:.5rem 1rem}.iowa-username-dropdown-button{color:#0064d0;background-color:transparent;white-space:nowrap;display:flex;align-items:center;padding:0;margin:0;border:none;cursor:pointer;font-size:1rem;line-height:1.5}.iowa-username-dropdown .dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.ml-1{margin-left:.25rem}\n"], dependencies: [{ kind: "directive", type: ClickOutside, selector: "[clickOutside]", outputs: ["clickOutside"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.4", ngImport: i0, type: UsernameDropdown, decorators: [{ type: Component, args: [{ selector: 'uiowa-username-dropdown', imports: [ClickOutside], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if(user()?.userName; as userName){\r\n<button\r\n aria-label=\"Click to show menu\"\r\n class=\"iowa-user-button has-dropdown\"\r\n id=\"username-dropdown\"\r\n (click)=\"showMenu = !showMenu\"\r\n (clickOutside)=\"showMenu = false\"\r\n [attr.aria-expanded]=\"showMenu\"\r\n>\r\n <svg\r\n aria-hidden=\"true\"\r\n role=\"icon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 448 512\"\r\n style=\"height: 0.8rem; width: 1rem; vertical-align: baseline\"\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"\r\n ></path>\r\n </svg>\r\n <span class=\"iowa-user-name ml-1\">\r\n {{ userName }}\r\n @if(user()?.originalUserName; as originalUserName){\r\n <span class=\"iowa-original-username\"> ({{ originalUserName }}) </span>\r\n }\r\n </span>\r\n</button>\r\n<div\r\n aria-labelledby=\"username-dropdown\"\r\n role=\"menuitem\"\r\n class=\"iowa-username-dropdown iowa-user-dropdown-menu-right\"\r\n [class.show]=\"showMenu\"\r\n>\r\n @if(user()?.originalUserName){\r\n <button\r\n type=\"button\"\r\n class=\"iowa-username-dropdown-button\"\r\n (click)=\"stopImpersonation.emit(); showMenu = false\"\r\n >\r\n <svg\r\n aria-hidden=\"true\"\r\n role=\"icon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n style=\"height: 1rem; width: 1rem\"\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z\"\r\n ></path>\r\n </svg>\r\n <span class=\"ml-1\">Stop Impersonation</span>\r\n </button>\r\n <div class=\"dropdown-divider\"></div>\r\n }\r\n <button type=\"button\" class=\"iowa-username-dropdown-button\" (click)=\"logout()\">\r\n <svg\r\n aria-hidden=\"true\"\r\n role=\"icon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n style=\"height: 1rem; width: 1rem\"\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z\"\r\n ></path>\r\n </svg>\r\n <span class=\"ml-1\">Logout</span>\r\n </button>\r\n</div>\r\n}@else {\r\n<button\r\n aria-label=\"Click to login\"\r\n class=\"iowa-user-button\"\r\n id=\"username-dropdown\"\r\n (click)=\"login()\"\r\n>\r\n <svg\r\n aria-hidden=\"true\"\r\n role=\"icon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 448 512\"\r\n style=\"height: 0.8rem; width: 1rem; vertical-align: baseline\"\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"\r\n ></path>\r\n </svg>\r\n <span class=\"ml-1\">Login</span>\r\n</button>\r\n}\r\n", styles: [":host{display:flex;font-family:sans-serif;position:relative}.iowa-user-button{color:#ffcd00;padding:0!important;white-space:nowrap;background-color:transparent;border:none}@media(min-width:855px){.iowa-user-button{color:#151515}}.iowa-user-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:inline-block;vertical-align:bottom}.iowa-original-username{color:#ff4759;font-weight:700}@media(min-width:855px){.iowa-original-username{color:#ab0000}}.iowa-user-dropdown-menu-right{position:absolute;float:none;right:0;top:100%;z-index:1000;display:none;margin:.125rem 0 0;font-size:1rem;line-height:1.5;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem;box-shadow:0 4px 8px #0003}.iowa-user-button.has-dropdown:after{margin:0 0 2px 4px;display:inline-block;content:\"\";border-style:solid;border-width:0 2px 2px 0;padding:3px;transform:rotate(45deg);-webkit-transform:rotate(45deg)}.iowa-user-dropdown-menu-right.show{display:block!important}.iowa-username-dropdown{min-width:7rem;padding:.5rem 1rem}.iowa-username-dropdown-button{color:#0064d0;background-color:transparent;white-space:nowrap;display:flex;align-items:center;padding:0;margin:0;border:none;cursor:pointer;font-size:1rem;line-height:1.5}.iowa-username-dropdown .dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.ml-1{margin-left:.25rem}\n"] }] }], propDecorators: { user: [{ type: i0.Input, args: [{ isSignal: true, alias: "user", required: false }] }], stopImpersonation: [{ type: i0.Output, args: ["stopImpersonation"] }] } }); class UiowaHeader { siteName = input('Awesome Site Name', { ...(ngDevMode ? { debugName: "siteName" } : {}), alias: 'appName' }); bannerLinks = input(...(ngDevMode ? [undefined, { debugName: "bannerLinks" }] : [])); user = input(...(ngDevMode ? [undefined, { debugName: "user" }] : [])); showWarning = input(false, ...(ngDevMode ? [{ debugName: "showWarning" }] : [])); warningMessage = input('WARNING: TEST SYSTEM', ...(ngDevMode ? [{ debugName: "warningMessage" }] : [])); stopImpersonation = output(); navService = inject(NavService); loginService = inject(LoginService); logout() { this.loginService.logout(); } login() { this.loginService.login(); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.4", ngImport: i0, type: UiowaHeader, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.4", type: UiowaHeader, isStandalone: true, selector: "header[uiowa-header]", inputs: { siteName: { classPropertyName: "siteName", publicName: "appName", isSignal: true, isRequired: false, transformFunction: null }, bannerLinks: { classPropertyName: "bannerLinks", publicName: "bannerLinks", isSignal: true, isRequired: false, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, showWarning: { classPropertyName: "showWarning", publicName: "showWarning", isSignal: true, isRequired: false, transformFunction: null }, warningMessage: { classPropertyName: "warningMessage", publicName: "warningMessage", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { stopImpersonation: "stopImpersonation" }, ngImport: i0, template: "<div class=\"iowa-bar\">\r\n <div class=\"iowa-bar__container\">\r\n <div class=\"logo logo--tab\">\r\n <a target=\"_blank\" rel=\"noopener\" href=\"https://uiowa.edu\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"logo-icon\"\r\n aria-labelledby=\"logo-header\"\r\n role=\"img\"\r\n viewBox=\"0 0 311.6 90.2\"\r\n >\r\n <path class=\"st0\" d=\"M40 18.8h-7.3v52.4H40v19H0v-19h7.3V18.8H0V0h40V18.8z\" />\r\n <path\r\n class=\"st0\"\r\n d=\"M93.8 90.2h-29c-10.5 0-17.4-6.9-17.4-18.2V18.2C47.4 7 54.4 0 64.8 0h29c10.5 0 17.4 7 17.4 18.2V72C111.2 83.2 104.2 90.2 93.8 90.2zM85.6 71.2V18.8H73v52.4H85.6z\"\r\n />\r\n <path\r\n class=\"st0\"\r\n d=\"M122.6 18.8h-6.4V0h38v18.9H147l6.5 43.4L167 0h19.2l14.4 62.3 5.2-43.4h-6.6V0h37.5v18.9h-6.2l-11.3 71.4h-30.6l-11.8-53.2 -12.1 53.1h-29.4L122.6 18.8z\"\r\n />\r\n <path\r\n class=\"st0\"\r\n d=\"M230.1 71.2h6.9L250.7 0h41l13.5 71.2h6.4v19H281l-2.9-22h-15.2l-2.7 22h-30L230.1 71.2 230.1 71.2zM276.5 51.7l-5.8-36.4 -6 36.4H276.5z\"\r\n />\r\n <title id=\"logo-header\">University of Iowa</title>\r\n </svg>\r\n </a>\r\n </div>\r\n <div class=\"site-name-bar\">\r\n <button\r\n class=\"iowa-navbar-toggler\"\r\n type=\"button\"\r\n (click)=\"navService.trigger()\"\r\n aria-controls=\"navbar-primary\"\r\n [attr.aria-expanded]=\"navService.showNavBar()\"\r\n >\r\n <svg\r\n role=\"img\"\r\n aria-labelledby=\"navbar-toggler\"\r\n focusable=\"false\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 448 512\"\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"\r\n ></path>\r\n <title id=\"navbar-toggler\">Toggle navigation</title>\r\n </svg>\r\n </button>\r\n <h1 class=\"site-name\">\r\n <a routerLink=\"\">{{ siteName() }}</a>\r\n </h1>\r\n </div>\r\n <div class=\"iowa-username-bar\">\r\n @if(showWarning()){\r\n <div class=\"test-warning\">{{ warningMessage() }}</div>\r\n } @if(bannerLinks(); as bannerLinks){\r\n <div class=\"iowa-banner-links\">\r\n @if(bannerLinks.link1){\r\n <a [href]=\"bannerLinks.link1.url\" [target]=\"bannerLinks.link1.target\">\r\n {{ bannerLinks.link1.text }}\r\n </a>\r\n } @if(bannerLinks.link2){\r\n <a [href]=\"bannerLinks.link2.url\" [target]=\"bannerLinks.link2.target\">\r\n {{ bannerLinks.link2.text }}\r\n </a>\r\n }\r\n </div>\r\n }\r\n <uiowa-username-dropdown [user]=\"user()\" (stopImpersonation)=\"stopImpersonation.emit()\" />\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".iowa-bar{position:relative;z-index:1000;display:block;min-height:auto;background:#151515}@media(min-width:855px){.iowa-bar{background:#ffcd00}}.iowa-bar__container{max-width:81.875rem;display:flex;flex-wrap:wrap;margin:0 auto}@media(min-width:855px){.iowa-bar__container{flex-wrap:nowrap}}.iowa-username-bar{display:flex;justify-content:flex-end;align-items:center;flex-grow:2;padding-right:1.25rem;order:2}@media(min-width:855px){.iowa-username-bar{padding-right:15px;order:3}}.test-warning{display:none;color:#ffcd00;background-color:#ad0000;white-space:nowrap;font-weight:700;font-family:sans-serif;margin:auto;padding:.5rem 1rem}@media(min-width:855px){.test-warning{display:flex}}\n", ".logo--tab{display:block;box-sizing:border-box;height:70px;width:109px;padding:25px 1.25rem;background:#151515;margin-right:10px}@media(min-width:855px){.logo--tab{height:56px;width:119px;padding:15px}}@media(min-width:84.375rem){.logo--tab{margin-left:-12px;margin-bottom:-6px}}.logo-icon{fill:#ffcd00;height:20px}.logo-icon:hover,.logo-icon:focus{opacity:.7}@media(min-width:855px){.logo-icon{height:26px}}\n", ".site-name-bar{display:flex;align-items:center;text-align:left;line-height:1;font-family:Roboto,sans-serif;width:100%;padding:1.25rem;background:#ffcd00;order:3}@media(min-width:855px){.site-name-bar{width:auto;padding:0;order:2}}.site-name{margin:0;font-size:1.3rem;font-weight:300;white-space:nowrap}.site-name a{color:#151515;text-decoration:none}.iowa-navbar-toggler{cursor:pointer;padding:0;margin-right:1rem;border:none;background:none}.iowa-navbar-toggler:focus,.iowa-navbar-toggler:hover{outline:2px solid #adadad;outline-offset:2px}@media(min-width:855px){.iowa-navbar-toggler{display:none}}.iowa-navbar-toggler svg{height:1.1rem;width:1.3rem;vertical-align:baseline}\n", ".iowa-banner-links{display:none}@media(min-width:84.375rem){.iowa-banner-links{display:flex;margin:0 .5rem}}.iowa-banner-links a{color:#494949;font-size:.9rem;margin:0 .5rem;white-space:nowrap;text-decoration:none}.iowa-banner-links a:hover{text-decoration:underline}\n"], dependencies: [{ kind: "component", type: UsernameDropdown, selector: "uiowa-username-dropdown", inputs: ["user"], outputs: ["stopImpersonation"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.4", ngImport: i0, type: UiowaHeader, decorators: [{ type: Component, args: [{ selector: 'header[uiowa-header]', imports: [UsernameDropdown], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"iowa-bar\">\r\n <div class=\"iowa-bar__container\">\r\n <div class=\"logo logo--tab\">\r\n <a target=\"_blank\" rel=\"noopener\" href=\"https://uiowa.edu\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"logo-icon\"\r\n aria-labelledby=\"logo-header\"\r\n role=\"img\"\r\n viewBox=\"0 0 311.6 90.2\"\r\n >\r\n <path class=\"st0\" d=\"M40 18.8h-7.3v52.4H40v19H0v-19h7.3V18.8H0V0h40V18.8z\" />\r\n <path\r\n class=\"st0\"\r\n d=\"M93.8 90.2h-29c-10.5 0-17.4-6.9-17.4-18.2V18.2C47.4 7 54.4 0 64.8 0h29c10.5 0 17.4 7 17.4 18.2V72C111.2 83.2 104.2 90.2 93.8 90.2zM85.6 71.2V18.8H73v52.4H85.6z\"\r\n />\r\n <path\r\n class=\"st0\"\r\n d=\"M122.6 18.8h-6.4V0h38v18.9H147l6.5 43.4L167 0h19.2l14.4 62.3 5.2-43.4h-6.6V0h37.5v18.9h-6.2l-11.3 71.4h-30.6l-11.8-53.2 -12.1 53.1h-29.4L122.6 18.8z\"\r\n />\r\n <path\r\n class=\"st0\"\r\n d=\"M230.1 71.2h6.9L250.7 0h41l13.5 71.2h6.4v19H281l-2.9-22h-15.2l-2.7 22h-30L230.1 71.2 230.1 71.2zM276.5 51.7l-5.8-36.4 -6 36.4H276.5z\"\r\n />\r\n <title id=\"logo-header\">University of Iowa</title>\r\n </svg>\r\n </a>\r\n </div>\r\n <div class=\"site-name-bar\">\r\n <button\r\n class=\"iowa-navbar-toggler\"\r\n type=\"button\"\r\n (click)=\"navService.trigger()\"\r\n aria-controls=\"navbar-primary\"\r\n [attr.aria-expanded]=\"navService.showNavBar()\"\r\n >\r\n <svg\r\n role=\"img\"\r\n aria-labelledby=\"navbar-toggler\"\r\n focusable=\"false\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 448 512\"\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"\r\n ></path>\r\n <title id=\"navbar-toggler\">Toggle navigation</title>\r\n </svg>\r\n </button>\r\n <h1 class=\"site-name\">\r\n <a routerLink=\"\">{{ siteName() }}</a>\r\n </h1>\r\n </div>\r\n <div class=\"iowa-username-bar\">\r\n @if(showWarning()){\r\n <div class=\"test-warning\">{{ warningMessage() }}</div>\r\n } @if(bannerLinks(); as bannerLinks){\r\n <div class=\"iowa-banner-links\">\r\n @if(bannerLinks.link1){\r\n <a [href]=\"bannerLinks.link1.url\" [target]=\"bannerLinks.link1.target\">\r\n {{ bannerLinks.link1.text }}\r\n </a>\r\n } @if(bannerLinks.link2){\r\n <a [href]=\"bannerLinks.link2.url\" [target]=\"bannerLinks.link2.target\">\r\n {{ bannerLinks.link2.text }}\r\n </a>\r\n }\r\n </div>\r\n }\r\n <uiowa-username-dropdown [user]=\"user()\" (stopImpersonation)=\"stopImpersonation.emit()\" />\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".iowa-bar{position:relative;z-index:1000;display:block;min-height:auto;background:#151515}@media(min-width:855px){.iowa-bar{background:#ffcd00}}.iowa-bar__container{max-width:81.875rem;display:flex;flex-wrap:wrap;margin:0 auto}@media(min-width:855px){.iowa-bar__container{flex-wrap:nowrap}}.iowa-username-bar{display:flex;justify-content:flex-end;align-items:center;flex-grow:2;padding-right:1.25rem;order:2}@media(min-width:855px){.iowa-username-bar{padding-right:15px;order:3}}.test-warning{display:none;color:#ffcd00;background-color:#ad0000;white-space:nowrap;font-weight:700;font-family:sans-serif;margin:auto;padding:.5rem 1rem}@media(min-width:855px){.test-warning{display:flex}}\n", ".logo--tab{display:block;box-sizing:border-box;height:70px;width:109px;padding:25px 1.25rem;background:#151515;margin-right:10px}@media(min-width:855px){.logo--tab{height:56px;width:119px;padding:15px}}@media(min-width:84.375rem){.logo--tab{margin-left:-12px;margin-bottom:-6px}}.logo-icon{fill:#ffcd00;height:20px}.logo-icon:hover,.logo-icon:focus{opacity:.7}@media(min-width:855px){.logo-icon{height:26px}}\n", ".site-name-bar{display:flex;align-items:center;text-align:left;line-height:1;font-family:Roboto,sans-serif;width:100%;padding:1.25rem;background:#ffcd00;order:3}@media(min-width:855px){.site-name-bar{width:auto;padding:0;order:2}}.site-name{margin:0;font-size:1.3rem;font-weight:300;white-space:nowrap}.site-name a{color:#151515;text-decoration:none}.iowa-navbar-toggler{cursor:pointer;padding:0;margin-right:1rem;border:none;background:none}.iowa-navbar-toggler:focus,.iowa-navbar-toggler:hover{outline:2px solid #adadad;outline-offset:2px}@media(min-width:855px){.iowa-navbar-toggler{display:none}}.iowa-navbar-toggler svg{height:1.1rem;width:1.3rem;vertical-align:baseline}\n", ".iowa-banner-links{display:none}@media(min-width:84.375rem){.iowa-banner-links{display:flex;margin:0 .5rem}}.iowa-banner-links a{color:#494949;font-size:.9rem;margin:0 .5rem;white-space:nowrap;text-decoration:none}.iowa-banner-links a:hover{text-decoration:underline}\n"] }] }], propDecorators: { siteName: [{ type: i0.Input, args: [{ isSignal: true, alias: "appName", required: false }] }], bannerLinks: [{ type: i0.Input, args: [{ isSignal: true, alias: "bannerLinks", required: false }] }], user: [{ type: i0.Input, args: [{ isSignal: true, alias: "user", required: false }] }], showWarning: [{ type: i0.Input, args: [{ isSignal: true, alias: "showWarning", required: false }] }], warningMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "warningMessage", required: false }] }], stopImpersonation: [{ type: i0.Output, args: ["stopImpersonation"] }] } }); class UiowaNav { externalLinks = input(...(ngDevMode ? [undefined, { debugName: "externalLinks" }] : [])); internalRoutes = input(...(ngDevMode ? [undefined, { debugName: "internalRoutes" }] : [])); showMenuDropdown = []; navService = inject(NavService); ngOnInit() { this.showMenuDropdown = this.internalRoutes()?.map((_) => false) ?? []; } toggleMenuCollapse(i) { this.showMenuDropdown[i] = !this.showMenuDropdown[i]; this.showMenuDropdown.forEach((x, index) => { if (x && index !== i) { this.showMenuDropdown[index] = false; } }); } collapseMenu(i) { this.showMenuDropdown[i] = false; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.4", ngImport: i0, type: UiowaNav, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.4", type: UiowaNav, isStandalone: true, selector: "nav[uiowa-nav]", inputs: { externalLinks: { classPropertyName: "externalLinks", publicName: "externalLinks", isSignal: true, isRequired: false, transformFunction: null }, internalRoutes: { classPropertyName: "internalRoutes", publicName: "internalRoutes", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "id": "primary-navbar" } }, ngImport: i0, template: "<div class=\"iowa-nav-bar\" [class.show]=\"navService.showNavBar()\">\r\n <div class=\"iowa-main-menu\">\r\n <ul class=\"iowa-internal-routes\">\r\n @for(item of internalRoutes();track $index; let i=$index){\r\n <li\r\n class=\"menu-item\"\r\n routerLinkActive=\"is-active\"\r\n [routerLinkActiveOptions]=\"{ exact: !item.route }\"\r\n >\r\n @if(item.subMenus){\r\n <div class=\"iowa-submenu-dropdown\">\r\n @if(item.route){\r\n <a\r\n [attr.id]=\"'menuDropdown_' + i\"\r\n [routerLink]=\"item.route\"\r\n (click)=\"toggleMenuCollapse(i)\"\r\n (clickOutside)=\"collapseMenu(i)\"\r\n [attr.aria-expanded]=\"showMenuDropdown[i]\"\r\n >\r\n {{ item.text }}\r\n <span\r\n aria-hidden=\"true\"\r\n class=\"iowa-dropdown-item-arrow\"\r\n [class.up]=\"showMenuDropdown[i]\"\r\n [class.down]=\"!showMenuDropdown[i]\"\r\n ></span>\r\n </a>\r\n } @else {\r\n <a\r\n [attr.id]=\"'menuDropdown_' + i\"\r\n href=\"javascript:void(0)\"\r\n (click)=\"toggleMenuCollapse(i)\"\r\n (clickOutside)=\"collapseMenu(i)\"\r\n [attr.aria-expanded]=\"showMenuDropdown[i]\"\r\n >\r\n {{ item.text }}\r\n <span\r\n aria-hidden=\"true\"\r\n class=\"iowa-dropdown-item-arrow\"\r\n [class.up]=\"showMenuDropdown[i]\"\r\n [class.down]=\"!showMenuDropdown[i]\"\r\n ></span>\r\n </a>\r\n }\r\n\r\n <div\r\n class=\"iowa-submenu-dropdown-content\"\r\n [attr.aria-labelledby]=\"'menuDropdown_' + i\"\r\n [class.show]=\"showMenuDropdown[i]\"\r\n >\r\n @for( subitem of item.subMenus; track $index){ @if(subitem.route){\r\n <a\r\n class=\"iowa-submenu-dropdown-item\"\r\n [routerLink]=\"subitem.route\"\r\n (click)=\"showMenuDropdown[i] = false; navService.hide()\"\r\n >\r\n {{ subitem.text }}\r\n </a>\r\n } }\r\n </div>\r\n </div>\r\n } @else {\r\n <a [routerLink]=\"item.route\" (click)=\"navService.hide()\">\r\n {{ item.text }}\r\n </a>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n <div class=\"iowa-external-links\">\r\n @for(item of externalLinks(); track $index; let isLast = $last){\r\n <a [href]=\"item.url\" [target]=\"item.target\">{{ item.text }}</a>\r\n @if(!isLast){<span class=\"iowa-external-link-spacer\"></span>} }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".iowa-nav-bar{display:none;background-color:#f3f3f3;color:#151515;font-family:Roboto,sans-serif}.iowa-nav-bar.show{display:flex}.iowa-main-menu{display:flex;flex-direction:column;padding:0 0 0 1.25rem;width:100%;z-index:900}@media(min-width:855px){.iowa-nav-bar{display:flex;box-shadow:0 .125rem .25rem #0003!important}.iowa-main-menu{flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:center;max-width:81.875em;padding:0;margin:0 auto}}\n", ".iowa-submenu-dropdown{position:relative}.iowa-submenu-dropdown-content{display:none;position:absolute;box-shadow:0 4px 8px #0006;background-color:#f9f9f9;z-index:900}.iowa-submenu-dropdown-content.show{display:flex!important;flex-direction:column;min-width:100%}.iowa-submenu-dropdown-item{font-size:1rem!important;padding:.75rem 1rem!important}.iowa-dropdown-item-arrow{display:inline-block;border-style:solid;border-width:0 2px 2px 0;padding:3px}.iowa-dropdown-item-arrow.down{transform-origin:right;transform:rotate(45deg);-webkit-transform:rotate(45deg)}.iowa-dropdown-item-arrow.up{transform:rotate(-135deg);-webkit-transform:rotate(-135deg)}\n", ".iowa-internal-routes{position:relative;display:flex;flex-direction:column;padding:0;margin:0}.iowa-internal-routes li{position:relative;list-style-type:none;border-bottom:1px solid rgba(0,0,0,.125)}.iowa-internal-routes a{position:relative;display:inline-block;white-space:nowrap;transition:background .8s ease-out;text-decoration:none;color:#151515;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.iowa-internal-routes li a{width:100%;padding:.75rem}.iowa-internal-routes .is-active{font-weight:700}@media(max-width:855px){.iowa-internal-routes .is-active{background-color:#fff}}.iowa-internal-routes .is-active:after{background:#ffcd00;content:\"\";position:absolute;left:0;bottom:0;width:100%;height:6px}.iowa-internal-routes li a:focus,.iowa-internal-routes li a:hover{text-decoration:none}@media(min-width:855px){.iowa-internal-routes{flex-direction:row}.iowa-internal-routes li{border-bottom:none}.iowa-internal-routes li a{position:relative;width:auto;font-size:1.125rem;font-weight:500;padding:1rem}.iowa-internal-routes li a:after{content:\"\";position:absolute;left:50%;bottom:0;width:100%;height:3px;background-color:#ffcd00;transform-origin:center;transform:translate(-50%) scaleX(0);transition:transform .3s ease-in-out}.iowa-internal-routes li a:hover:after,.iowa-internal-routes li a:focus:after{transform:translate(-50%) scaleX(1)}.iowa-internal-routes .is-active:after{background:#ffcd00;content:\"\";position:absolute;left:50%;bottom:0;width:100%;height:6px;transform-origin:center;transition:transform .3s ease-in-out;transform:translate(-50%) scaleX(1)}.iowa-internal-routes li:before{position:absolute;right:0;top:25%;height:50%;width:1px;content:\"\";background:#ffcd00}.iowa-internal-routes li:last-of-type:before{width:0}}@media(min-width:84.375rem){.iowa-internal-routes{margin-left:-12px}}\n", ".iowa-external-links{display:flex;flex-wrap:wrap;justify-content:flex-end;padding:.5rem 0;margin-left:auto}.iowa-external-links a{color:#656565;font-size:.875rem;padding:.25rem 0;margin:0 .5rem;white-space:nowrap;text-decoration:none;position:relative}.iowa-external-links a:after{content:\"\";position:absolute;left:50%;bottom:0;width:100%;height:2px;background-color:#ffcd00;transform-origin:center;transform:translate(-50%) scaleX(0);transition:transform .3s ease-in-out}.iowa-external-links a:hover:after,.iowa-external-links a:focus:after{transform:translate(-50%) scaleX(1)}.iowa-external-link-spacer{border-right:#656565 1px solid}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: ClickOutside, selector: "[clickOutside]", outputs: ["clickOutside"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.4", ngImport: i0, type: UiowaNav, decorators: [{ type: Component, args: [{ selector: 'nav[uiowa-nav]', imports: [RouterLink, RouterLinkActive, ClickOutside], host: { id: 'primary-navbar', }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"iowa-nav-bar\" [class.show]=\"navService.showNavBar()\">\r\n <div class=\"iowa-main-menu\">\r\n <ul class=\"iowa-internal-routes\">\r\n @for(item of internalRoutes();track $index; let i=$index){\r\n <li\r\n class=\"menu-item\"\r\n routerLinkActive=\"is-active\"\r\n [routerLinkActiveOptions]=\"{ exact: !item.route }\"\r\n >\r\n @if(item.subMenus){\r\n <div class=\"iowa-submenu-dropdown\">\r\n @if(item.route){\r\n <a\r\n [attr.id]=\"'menuDropdown_' + i\"\r\n [routerLink]=\"item.route\"\r\n (click)=\"toggleMenuCollapse(i)\"\r\n (clickOutside)=\"collapseMenu(i)\"\r\n [attr.aria-expanded]=\"showMenuDropdown[i]\"\r\n >\r\n {{ item.text }}\r\n <span\r\n aria-hidden=\"true\"\r\n class=\"iowa-dropdown-item-arrow\"\r\n [class.up]=\"showMenuDropdown[i]\"\r\n [class.down]=\"!showMenuDropdown[i]\"\r\n ></span>\r\n </a>\r\n } @else {\r\n <a\r\n [attr.id]=\"'menuDropdown_' + i\"\r\n href=\"javascript:void(0)\"\r\n (click)=\"toggleMenuCollapse(i)\"\r\n (clickOutside)=\"collapseMenu(i)\"\r\n [attr.aria-expanded]=\"showMenuDropdown[i]\"\r\n >\r\n {{ item.text }}\r\n <span\r\n aria-hidden=\"true\"\r\n class=\"iowa-dropdown-item-arrow\"\r\n [class.up]=\"showMenuDropdown[i]\"\r\n [class.down]=\"!showMenuDropdown[i]\"\r\n ></span>\r\n </a>\r\n }\r\n\r\n <div\r\n class=\"iowa-submenu-dropdown-content\"\r\n [attr.aria-labelledby]=\"'menuDropdown_' + i\"\r\n [class.show]=\"showMenuDropdown[i]\"\r\n >\r\n @for( subitem of item.subMenus; track $index){ @if(subitem.route){\r\n <a\r\n class=\"iowa-submenu-dropdown-item\"\r\n [routerLink]=\"subitem.route\"\r\n (click)=\"showMenuDropdown[i] = false; navService.hide()\"\r\n >\r\n {{ subitem.text }}\r\n </a>\r\n } }\r\n </div>\r\n </div>\r\n } @else {\r\n <a [routerLink]=\"item.route\" (click)=\"navService.hide()\">\r\n {{ item.text }}\r\n </a>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n <div class=\"iowa-external-links\">\r\n @for(item of externalLinks(); track $index; let isLast = $last){\r\n <a [href]=\"item.url\" [target]=\"item.target\">{{ item.text }}</a>\r\n @if(!isLast){<span class=\"iowa-external-link-spacer\"></span>} }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".iowa-nav-bar{display:none;background-color:#f3f3f3;color:#151515;font-family:Roboto,sans-serif}.iowa-nav-bar.show{display:flex}.iowa-main-menu{display:flex;flex-direction:column;padding:0 0 0 1.25rem;width:100%;z-index:900}@media(min-width:855px){.iowa-nav-bar{display:flex;box-shadow:0 .125rem .25rem #0003!important}.iowa-main-menu{flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:center;max-width:81.875em;padding:0;margin:0 auto}}\n", ".iowa-submenu-dropdown{position:relative}.iowa-submenu-dropdown-content{display:none;position:absolute;box-shadow:0 4px 8px #0006;background-color:#f9f9f9;z-index:900}.iowa-submenu-dropdown-content.show{display:flex!important;flex-direction:column;min-width:100%}.iowa-submenu-dropdown-item{font-size:1rem!important;padding:.75rem 1rem!important}.iowa-dropdown-item-arrow{display:inline-block;border-style:solid;border-width:0 2px 2px 0;padding:3px}.iowa-dropdown-item-arrow.down{transform-origin:right;transform:rotate(45deg);-webkit-transform:rotate(45deg)}.iowa-dropdown-item-arrow.up{transform:rotate(-135deg);-webkit-transform:rotate(-135deg)}\n", ".iowa-internal-routes{position:relative;display:flex;flex-direction:column;padding:0;margin:0}.iowa-internal-routes li{position:relative;list-style-type:none;border-bottom:1px solid rgba(0,0,0,.125)}.iowa-internal-routes a{position:relative;display:inline-block;white-space:nowrap;transition:background .8s ease-out;text-decoration:none;color:#151515;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.iowa-internal-routes li a{width:100%;padding:.75rem}.iowa-internal-routes .is-active{font-weight:700}@media(max-width:855px){.iowa-internal-routes .is-active{background-color:#fff}}.iowa-internal-routes .is-active:after{background:#ffcd00;content:\"\";position:absolute;left:0;bottom:0;width:100%;height:6px}.iowa-internal-routes li a:focus,.iowa-internal-routes li a:hover{text-decoration:none}@media(min-width:855px){.iowa-internal-routes{flex-direction:row}.iowa-internal-routes li{border-bottom:none}.iowa-internal-routes li a{position:relative;width:auto;font-size:1.125rem;font-weight:500;padding:1rem}.iowa-internal-routes li a:after{content:\"\";position:absolute;left:50%;bottom:0;width:100%;height:3px;background-color:#ffcd00;transform-origin:center;transform:translate(-50%) scaleX(0);transition:transform .3s ease-in-out}.iowa-internal-routes li a:hover:after,.iowa-internal-routes li a:focus:after{transform:translate(-50%) scaleX(1)}.iowa-internal-routes .is-active:after{background:#ffcd00;content:\"\";position:absolute;left:50%;bottom:0;width:100%;height:6px;transform-origin:center;transition:transform .3s ease-in-out;transform:translate(-50%) scaleX(1)}.iowa-internal-routes li:before{position:absolute;right:0;top:25%;height:50%;width:1px;content:\"\";b