@internetarchive/ia-topnav 1.4.1-alpha-webdev8259.0 → 1.4.1-alpha-webdev8259.1

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.
Files changed (43) hide show
  1. package/dist/index.d.ts +0 -1
  2. package/dist/index.js.map +1 -1
  3. package/dist/src/data/menus.js.map +1 -1
  4. package/dist/src/dropdown-menu.js +26 -26
  5. package/dist/src/dropdown-menu.js.map +1 -1
  6. package/dist/src/ia-topnav.d.ts +2 -13
  7. package/dist/src/ia-topnav.js +70 -140
  8. package/dist/src/ia-topnav.js.map +1 -1
  9. package/dist/src/lib/keyboard-navigation.js.map +1 -1
  10. package/dist/src/login-button.js +17 -17
  11. package/dist/src/login-button.js.map +1 -1
  12. package/dist/src/media-menu.js +21 -21
  13. package/dist/src/media-menu.js.map +1 -1
  14. package/dist/src/models.d.ts +0 -1
  15. package/dist/src/models.js.map +1 -1
  16. package/dist/src/primary-nav.d.ts +6 -7
  17. package/dist/src/primary-nav.js +98 -142
  18. package/dist/src/primary-nav.js.map +1 -1
  19. package/dist/src/styles/login-button.js +87 -87
  20. package/dist/src/styles/login-button.js.map +1 -1
  21. package/dist/src/styles/primary-nav.js +343 -343
  22. package/dist/src/styles/primary-nav.js.map +1 -1
  23. package/dist/src/user-menu.js +13 -13
  24. package/dist/src/user-menu.js.map +1 -1
  25. package/dist/test/ia-topnav.test.js +15 -87
  26. package/dist/test/ia-topnav.test.js.map +1 -1
  27. package/dist/test/primary-nav.test.js +16 -34
  28. package/dist/test/primary-nav.test.js.map +1 -1
  29. package/index.ts +3 -4
  30. package/package.json +1 -1
  31. package/src/data/menus.ts +652 -652
  32. package/src/dropdown-menu.ts +132 -132
  33. package/src/ia-topnav.ts +301 -383
  34. package/src/lib/keyboard-navigation.ts +166 -166
  35. package/src/login-button.ts +78 -78
  36. package/src/media-menu.ts +143 -143
  37. package/src/models.ts +63 -65
  38. package/src/primary-nav.ts +277 -324
  39. package/src/styles/login-button.ts +90 -90
  40. package/src/styles/primary-nav.ts +346 -346
  41. package/src/user-menu.ts +32 -32
  42. package/test/ia-topnav.test.ts +282 -381
  43. package/test/primary-nav.test.ts +136 -163
@@ -1 +1 @@
1
- {"version":3,"file":"primary-nav.js","sourceRoot":"","sources":["../../../src/styles/primary-nav.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuVjB,CAAC","sourcesContent":["import { css } from 'lit';\r\n\r\nexport default css`\r\n button:focus,\r\n input:focus {\r\n outline: none;\r\n }\r\n\r\n nav {\r\n position: relative;\r\n display: flex;\r\n height: 4rem;\r\n grid-template-areas: 'hamburger empty heart search user';\r\n -ms-grid-columns: 4rem minmax(1rem, 100%) 4rem 4rem 4rem;\r\n grid-template-columns: 4rem auto 4rem 4rem 4rem;\r\n -ms-grid-rows: 100%;\r\n grid-template-rows: 100%;\r\n background: var(--primaryNavBg);\r\n border-bottom: 1px solid var(--primaryNavBottomBorder);\r\n }\r\n\r\n nav.hide-search {\r\n grid-template-areas: 'hamburger empty heart user';\r\n -ms-grid-columns: 4rem minmax(1rem, 100%) 4rem 4rem;\r\n grid-template-columns: 4rem auto 4rem 4rem;\r\n }\r\n\r\n .right-side-section {\r\n display: flex;\r\n margin-left: auto;\r\n user-select: none;\r\n }\r\n button {\r\n background: none;\r\n color: inherit;\r\n border: none;\r\n font: inherit;\r\n cursor: pointer;\r\n }\r\n\r\n .branding {\r\n position: static;\r\n float: left;\r\n margin: 0 !important;\r\n padding: 0 5px 0 10px;\r\n -webkit-transform: translate(0, 0);\r\n -ms-transform: translate(0, 0);\r\n transform: translate(0, 0);\r\n }\r\n\r\n slot,\r\n .branding {\r\n display: flex;\r\n justify-content: left;\r\n align-items: center;\r\n }\r\n\r\n media-menu {\r\n flex: 1;\r\n justify-self: stretch;\r\n }\r\n\r\n .ia-logo {\r\n height: 3rem;\r\n width: 2.7rem;\r\n display: inline-block;\r\n }\r\n .ia-wordmark {\r\n height: 3rem;\r\n width: 9.5rem;\r\n }\r\n .ia-logo,\r\n .ia-wordmark {\r\n margin-right: 5px;\r\n }\r\n\r\n .hamburger {\r\n -ms-grid-row: 1;\r\n -ms-grid-column: 1;\r\n grid-area: hamburger;\r\n padding: 0;\r\n }\r\n .hamburger svg {\r\n height: 4rem;\r\n width: 4rem;\r\n fill: var(--activeColor);\r\n }\r\n\r\n .mobile-donate-link {\r\n display: inline-block;\r\n }\r\n .mobile-donate-link svg {\r\n height: 4rem;\r\n width: 4rem;\r\n }\r\n .mobile-donate-link .fill-color {\r\n fill: rgb(255, 0, 0);\r\n }\r\n\r\n .sr-only {\r\n position: absolute;\r\n width: 1px;\r\n height: 1px;\r\n margin: -1px;\r\n padding: 0;\r\n border: 0;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n clip: rect(1px, 1px, 1px, 1px);\r\n -webkit-clip-path: inset(50%);\r\n clip-path: inset(50%);\r\n user-select: none;\r\n }\r\n\r\n .search-trigger {\r\n padding: 0;\r\n }\r\n .search-trigger svg {\r\n height: 4rem;\r\n width: 4rem;\r\n }\r\n .search-trigger .fill-color {\r\n fill: var(--iconFill);\r\n }\r\n\r\n .search-activated {\r\n position: relative;\r\n z-index: 3;\r\n }\r\n\r\n .custom-search-container {\r\n display: none;\r\n }\r\n\r\n .custom-search-container.open {\r\n display: flex;\r\n position: absolute;\r\n top: 0;\r\n right: 4rem;\r\n bottom: 0;\r\n left: 4rem;\r\n z-index: 3;\r\n padding: 0.5rem 0.2rem;\r\n border-radius: 1rem 1rem 0 0;\r\n background: var(--searchActiveBg);\r\n align-items: center;\r\n animation: fade-in 0.2s forwards;\r\n }\r\n\r\n @keyframes fade-in {\r\n 0% {\r\n opacity: 0;\r\n }\r\n 100% {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n .upload {\r\n display: none;\r\n }\r\n\r\n .upload span {\r\n display: none;\r\n }\r\n\r\n .upload svg {\r\n height: 3rem;\r\n width: 3rem;\r\n }\r\n\r\n .screen-name {\r\n display: none;\r\n font-size: 1.3rem;\r\n vertical-align: middle;\r\n text-transform: uppercase;\r\n }\r\n\r\n .user-menu {\r\n color: var(--lightTextColor);\r\n padding: 0.5rem;\r\n height: 100%;\r\n }\r\n\r\n button.user-menu:hover,\r\n button.user-menu:focus {\r\n color: var(--linkHoverColor);\r\n outline: none;\r\n }\r\n\r\n .user-menu.active {\r\n border-radius: 1rem 1rem 0 0;\r\n background: var(--activeButtonBg);\r\n }\r\n\r\n .user-menu img {\r\n display: block;\r\n width: 3rem;\r\n height: 3rem;\r\n }\r\n\r\n .link-home {\r\n text-decoration: none;\r\n display: inline-flex;\r\n }\r\n a.link-home:focus,\r\n a.link-home:focus-visible {\r\n outline-offset: 1px;\r\n }\r\n\r\n @media only screen and (min-width: 890px) and (max-device-width: 905px) {\r\n .branding.second-logo {\r\n padding-right: 0;\r\n }\r\n }\r\n\r\n @media (min-width: 906px) {\r\n .branding.second-logo {\r\n padding-right: 20px;\r\n }\r\n }\r\n\r\n @media (max-width: 889px) {\r\n slot[name='opt-sec-logo'] {\r\n display: none;\r\n }\r\n\r\n .right-side-section {\r\n display: initial;\r\n }\r\n .right-side-section .user-info {\r\n float: right;\r\n }\r\n }\r\n\r\n @media (min-width: 890px) {\r\n :host {\r\n --userIconWidth: 3.2rem;\r\n --userIconHeight: 3.2rem;\r\n }\r\n\r\n nav {\r\n display: flex;\r\n z-index: 4;\r\n height: 5rem;\r\n padding-right: 1.5rem;\r\n }\r\n\r\n slot[name='opt-sec-logo-mobile'] {\r\n display: none;\r\n }\r\n\r\n .ia-logo,\r\n .ia-wordmark {\r\n margin-right: 10px;\r\n }\r\n\r\n .hamburger,\r\n .search-trigger,\r\n .mobile-donate-link {\r\n display: none;\r\n }\r\n\r\n .user-info {\r\n display: block;\r\n float: right;\r\n vertical-align: middle;\r\n height: 100%;\r\n }\r\n\r\n .user-info .user-menu img {\r\n height: 3rem;\r\n width: 3rem;\r\n margin-right: 0.5rem;\r\n }\r\n\r\n .user-menu {\r\n padding: 1rem 0.5rem;\r\n }\r\n .user-menu.active {\r\n background: transparent;\r\n }\r\n\r\n .user-menu img {\r\n display: inline-block;\r\n vertical-align: middle;\r\n margin-right: 0.5rem;\r\n }\r\n\r\n .upload {\r\n display: block;\r\n padding: 1rem 0.5rem;\r\n float: right;\r\n font-size: 1.4rem;\r\n text-transform: uppercase;\r\n text-decoration: none;\r\n color: var(--lightTextColor);\r\n }\r\n .upload:active,\r\n .upload:focus,\r\n .upload:hover {\r\n color: var(--linkHoverColor);\r\n }\r\n .upload:focus-visible {\r\n outline: none;\r\n }\r\n\r\n .upload svg {\r\n vertical-align: middle;\r\n fill: var(--iconFill);\r\n }\r\n\r\n .upload:hover svg,\r\n .upload:focus svg,\r\n .upload:active svg {\r\n fill: var(--linkHoverColor);\r\n }\r\n\r\n nav-search {\r\n float: right;\r\n margin-left: 1rem;\r\n }\r\n\r\n .custom-search-container {\r\n display: flex;\r\n align-items: center;\r\n float: right;\r\n margin-left: 1rem;\r\n }\r\n }\r\n\r\n @media (min-width: 990px) {\r\n .screen-name {\r\n display: inline-block;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n max-width: 165px;\r\n }\r\n\r\n .upload span {\r\n display: inline-block;\r\n vertical-align: middle;\r\n }\r\n }\r\n`;\r\n"]}
1
+ {"version":3,"file":"primary-nav.js","sourceRoot":"","sources":["../../../src/styles/primary-nav.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuVjB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport default css`\n button:focus,\n input:focus {\n outline: none;\n }\n\n nav {\n position: relative;\n display: flex;\n height: 4rem;\n grid-template-areas: 'hamburger empty heart search user';\n -ms-grid-columns: 4rem minmax(1rem, 100%) 4rem 4rem 4rem;\n grid-template-columns: 4rem auto 4rem 4rem 4rem;\n -ms-grid-rows: 100%;\n grid-template-rows: 100%;\n background: var(--primaryNavBg);\n border-bottom: 1px solid var(--primaryNavBottomBorder);\n }\n\n nav.hide-search {\n grid-template-areas: 'hamburger empty heart user';\n -ms-grid-columns: 4rem minmax(1rem, 100%) 4rem 4rem;\n grid-template-columns: 4rem auto 4rem 4rem;\n }\n\n .right-side-section {\n display: flex;\n margin-left: auto;\n user-select: none;\n }\n button {\n background: none;\n color: inherit;\n border: none;\n font: inherit;\n cursor: pointer;\n }\n\n .branding {\n position: static;\n float: left;\n margin: 0 !important;\n padding: 0 5px 0 10px;\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n transform: translate(0, 0);\n }\n\n slot,\n .branding {\n display: flex;\n justify-content: left;\n align-items: center;\n }\n\n media-menu {\n flex: 1;\n justify-self: stretch;\n }\n\n .ia-logo {\n height: 3rem;\n width: 2.7rem;\n display: inline-block;\n }\n .ia-wordmark {\n height: 3rem;\n width: 9.5rem;\n }\n .ia-logo,\n .ia-wordmark {\n margin-right: 5px;\n }\n\n .hamburger {\n -ms-grid-row: 1;\n -ms-grid-column: 1;\n grid-area: hamburger;\n padding: 0;\n }\n .hamburger svg {\n height: 4rem;\n width: 4rem;\n fill: var(--activeColor);\n }\n\n .mobile-donate-link {\n display: inline-block;\n }\n .mobile-donate-link svg {\n height: 4rem;\n width: 4rem;\n }\n .mobile-donate-link .fill-color {\n fill: rgb(255, 0, 0);\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n border: 0;\n overflow: hidden;\n white-space: nowrap;\n clip: rect(1px, 1px, 1px, 1px);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n user-select: none;\n }\n\n .search-trigger {\n padding: 0;\n }\n .search-trigger svg {\n height: 4rem;\n width: 4rem;\n }\n .search-trigger .fill-color {\n fill: var(--iconFill);\n }\n\n .search-activated {\n position: relative;\n z-index: 3;\n }\n\n .custom-search-container {\n display: none;\n }\n\n .custom-search-container.open {\n display: flex;\n position: absolute;\n top: 0;\n right: 4rem;\n bottom: 0;\n left: 4rem;\n z-index: 3;\n padding: 0.5rem 0.2rem;\n border-radius: 1rem 1rem 0 0;\n background: var(--searchActiveBg);\n align-items: center;\n animation: fade-in 0.2s forwards;\n }\n\n @keyframes fade-in {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n\n .upload {\n display: none;\n }\n\n .upload span {\n display: none;\n }\n\n .upload svg {\n height: 3rem;\n width: 3rem;\n }\n\n .screen-name {\n display: none;\n font-size: 1.3rem;\n vertical-align: middle;\n text-transform: uppercase;\n }\n\n .user-menu {\n color: var(--lightTextColor);\n padding: 0.5rem;\n height: 100%;\n }\n\n button.user-menu:hover,\n button.user-menu:focus {\n color: var(--linkHoverColor);\n outline: none;\n }\n\n .user-menu.active {\n border-radius: 1rem 1rem 0 0;\n background: var(--activeButtonBg);\n }\n\n .user-menu img {\n display: block;\n width: 3rem;\n height: 3rem;\n }\n\n .link-home {\n text-decoration: none;\n display: inline-flex;\n }\n a.link-home:focus,\n a.link-home:focus-visible {\n outline-offset: 1px;\n }\n\n @media only screen and (min-width: 890px) and (max-device-width: 905px) {\n .branding.second-logo {\n padding-right: 0;\n }\n }\n\n @media (min-width: 906px) {\n .branding.second-logo {\n padding-right: 20px;\n }\n }\n\n @media (max-width: 889px) {\n slot[name='opt-sec-logo'] {\n display: none;\n }\n\n .right-side-section {\n display: initial;\n }\n .right-side-section .user-info {\n float: right;\n }\n }\n\n @media (min-width: 890px) {\n :host {\n --userIconWidth: 3.2rem;\n --userIconHeight: 3.2rem;\n }\n\n nav {\n display: flex;\n z-index: 4;\n height: 5rem;\n padding-right: 1.5rem;\n }\n\n slot[name='opt-sec-logo-mobile'] {\n display: none;\n }\n\n .ia-logo,\n .ia-wordmark {\n margin-right: 10px;\n }\n\n .hamburger,\n .search-trigger,\n .mobile-donate-link {\n display: none;\n }\n\n .user-info {\n display: block;\n float: right;\n vertical-align: middle;\n height: 100%;\n }\n\n .user-info .user-menu img {\n height: 3rem;\n width: 3rem;\n margin-right: 0.5rem;\n }\n\n .user-menu {\n padding: 1rem 0.5rem;\n }\n .user-menu.active {\n background: transparent;\n }\n\n .user-menu img {\n display: inline-block;\n vertical-align: middle;\n margin-right: 0.5rem;\n }\n\n .upload {\n display: block;\n padding: 1rem 0.5rem;\n float: right;\n font-size: 1.4rem;\n text-transform: uppercase;\n text-decoration: none;\n color: var(--lightTextColor);\n }\n .upload:active,\n .upload:focus,\n .upload:hover {\n color: var(--linkHoverColor);\n }\n .upload:focus-visible {\n outline: none;\n }\n\n .upload svg {\n vertical-align: middle;\n fill: var(--iconFill);\n }\n\n .upload:hover svg,\n .upload:focus svg,\n .upload:active svg {\n fill: var(--linkHoverColor);\n }\n\n nav-search {\n float: right;\n margin-left: 1rem;\n }\n\n .custom-search-container {\n display: flex;\n flex: 1;\n align-items: center;\n padding: 0 1rem;\n }\n }\n\n @media (min-width: 990px) {\n .screen-name {\n display: inline-block;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n max-width: 165px;\n }\n\n .upload span {\n display: inline-block;\n vertical-align: middle;\n }\n }\n`;\n"]}
@@ -14,19 +14,19 @@ let UserMenu = class UserMenu extends DropdownMenu {
14
14
  return [dropdownStyles, userMenuCSS];
15
15
  }
16
16
  render() {
17
- return html `
18
- <div class="nav-container">
19
- <nav
20
- class="${this.menuClass}"
21
- aria-hidden=${!this.open}
22
- aria-expanded=${this.open}
23
- >
24
- <h3>${this.screenName}</h3>
25
- <ul>
26
- ${this.dropdownItems}
27
- </ul>
28
- </nav>
29
- </div>
17
+ return html `
18
+ <div class="nav-container">
19
+ <nav
20
+ class="${this.menuClass}"
21
+ aria-hidden=${!this.open}
22
+ aria-expanded=${this.open}
23
+ >
24
+ <h3>${this.screenName}</h3>
25
+ <ul>
26
+ ${this.dropdownItems}
27
+ </ul>
28
+ </nav>
29
+ </div>
30
30
  `;
31
31
  }
32
32
  };
@@ -1 +1 @@
1
- {"version":3,"file":"user-menu.js","sourceRoot":"","sources":["../../src/user-menu.ts"],"names":[],"mappings":";AAAA,OAAO,EAAa,IAAI,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAC7C,OAAO,cAAc,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,YAAY;IAAnC;;QACe,aAAQ,GAAG,EAAE,CAAC;QACd,eAAU,GAAG,EAAE,CAAC;IAsB9C,CAAC;IApBC,MAAM,KAAK,MAAM;QACf,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IACvC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;mBAGI,IAAI,CAAC,SAAS;wBACT,CAAC,IAAI,CAAC,IAAI;0BACR,IAAI,CAAC,IAAI;;gBAEnB,IAAI,CAAC,UAAU;;cAEjB,IAAI,CAAC,aAAa;;;;KAI3B,CAAC;IACJ,CAAC;CACF,CAAA;AAvB6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAAe;AACd;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4CAAiB;AAFzB,QAAQ;IAD5B,aAAa,CAAC,WAAW,CAAC;GACN,QAAQ,CAwB5B;eAxBoB,QAAQ","sourcesContent":["import { CSSResult, html } from 'lit';\r\nimport DropdownMenu from './dropdown-menu';\r\nimport userMenuCSS from './styles/user-menu';\r\nimport dropdownStyles from './styles/dropdown-menu';\r\nimport { customElement, property } from 'lit/decorators.js';\r\n\r\n@customElement('user-menu')\r\nexport default class UserMenu extends DropdownMenu {\r\n @property({ type: String }) username = '';\r\n @property({ type: String }) screenName = '';\r\n\r\n static get styles(): CSSResult[] {\r\n return [dropdownStyles, userMenuCSS];\r\n }\r\n\r\n render() {\r\n return html`\r\n <div class=\"nav-container\">\r\n <nav\r\n class=\"${this.menuClass}\"\r\n aria-hidden=${!this.open}\r\n aria-expanded=${this.open}\r\n >\r\n <h3>${this.screenName}</h3>\r\n <ul>\r\n ${this.dropdownItems}\r\n </ul>\r\n </nav>\r\n </div>\r\n `;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"user-menu.js","sourceRoot":"","sources":["../../src/user-menu.ts"],"names":[],"mappings":";AAAA,OAAO,EAAa,IAAI,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAC7C,OAAO,cAAc,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,YAAY;IAAnC;;QACe,aAAQ,GAAG,EAAE,CAAC;QACd,eAAU,GAAG,EAAE,CAAC;IAsB9C,CAAC;IApBC,MAAM,KAAK,MAAM;QACf,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IACvC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;mBAGI,IAAI,CAAC,SAAS;wBACT,CAAC,IAAI,CAAC,IAAI;0BACR,IAAI,CAAC,IAAI;;gBAEnB,IAAI,CAAC,UAAU;;cAEjB,IAAI,CAAC,aAAa;;;;KAI3B,CAAC;IACJ,CAAC;CACF,CAAA;AAvB6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAAe;AACd;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4CAAiB;AAFzB,QAAQ;IAD5B,aAAa,CAAC,WAAW,CAAC;GACN,QAAQ,CAwB5B;eAxBoB,QAAQ","sourcesContent":["import { CSSResult, html } from 'lit';\nimport DropdownMenu from './dropdown-menu';\nimport userMenuCSS from './styles/user-menu';\nimport dropdownStyles from './styles/dropdown-menu';\nimport { customElement, property } from 'lit/decorators.js';\n\n@customElement('user-menu')\nexport default class UserMenu extends DropdownMenu {\n @property({ type: String }) username = '';\n @property({ type: String }) screenName = '';\n\n static get styles(): CSSResult[] {\n return [dropdownStyles, userMenuCSS];\n }\n\n render() {\n return html`\n <div class=\"nav-container\">\n <nav\n class=\"${this.menuClass}\"\n aria-hidden=${!this.open}\n aria-expanded=${this.open}\n >\n <h3>${this.screenName}</h3>\n <ul>\n ${this.dropdownItems}\n </ul>\n </nav>\n </div>\n `;\n }\n}\n"]}
@@ -1,29 +1,5 @@
1
1
  import { html, fixture, expect, oneEvent, fixtureCleanup, elementUpdated, } from '@open-wc/testing';
2
2
  import '../src/ia-topnav';
3
- // const container = (
4
- // {
5
- // username = '',
6
- // screenName = '',
7
- // config = {},
8
- // localLinks = true,
9
- // secondIdentitySlotMode = '',
10
- // }: {
11
- // username?: string;
12
- // screenName?: string;
13
- // config?: IATopNavConfig;
14
- // localLinks: boolean;
15
- // secondIdentitySlotMode?: IATopNavSecondIdentitySlotMode;
16
- // } = {
17
- // localLinks: true,
18
- // },
19
- // ) =>
20
- // html`<ia-topnav
21
- // .screenName=${screenName}
22
- // username=${username}
23
- // ?localLinks=${localLinks}
24
- // .config=${config}
25
- // .secondIdentitySlotMode=${secondIdentitySlotMode}
26
- // ></ia-topnav>`;
27
3
  const verifyClosed = (instance) => {
28
4
  expect(instance.mediaSliderOpen).to.be.false;
29
5
  expect(instance.selectedMenuOption).to.equal('');
@@ -36,20 +12,6 @@ afterEach(() => {
36
12
  fixtureCleanup();
37
13
  });
38
14
  describe('<ia-topnav>', () => {
39
- it('assigns a value to "search in" from outside event', async () => {
40
- var _a;
41
- const el = await fixture(html ` <ia-topnav></ia-topnav>`);
42
- const query = 'atari';
43
- const searchMenu = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('search-menu');
44
- const inputEvent = new InputEvent('input');
45
- Object.defineProperty(inputEvent, 'target', {
46
- value: { value: query },
47
- writable: false,
48
- });
49
- searchMenu === null || searchMenu === void 0 ? void 0 : searchMenu.searchInChanged(inputEvent);
50
- await el.updateComplete;
51
- expect(el.searchIn).to.equal(query);
52
- });
53
15
  it('dispatches an analyticsClick event when trackClick event fired', async () => {
54
16
  const el = await fixture(html ` <ia-topnav></ia-topnav>`);
55
17
  const clickEvent = new MouseEvent('click');
@@ -60,17 +22,6 @@ describe('<ia-topnav>', () => {
60
22
  const response = await oneEvent(el, 'trackClick');
61
23
  expect(response).to.exist;
62
24
  });
63
- it('dispatches an analyticsSubmit event when trackSubmit event fired', async () => {
64
- var _a, _b, _c, _d, _e;
65
- const el = await fixture(html ` <ia-topnav></ia-topnav>`);
66
- const submitEvent = new Event('submit');
67
- const form = (_e = (_d = (_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('primary-nav')) === null || _b === void 0 ? void 0 : _b.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('nav-search')) === null || _d === void 0 ? void 0 : _d.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector('form');
68
- form === null || form === void 0 ? void 0 : form.addEventListener('submit', (e) => e.preventDefault());
69
- (form === null || form === void 0 ? void 0 : form.querySelector('[name=query]')).value = 'atari';
70
- setTimeout(() => form === null || form === void 0 ? void 0 : form.dispatchEvent(submitEvent));
71
- const response = await oneEvent(el, 'trackSubmit');
72
- expect(response).to.exist;
73
- });
74
25
  it('closes all menus when close-layer clicked', async () => {
75
26
  const el = await fixture(html ` <ia-topnav></ia-topnav>`);
76
27
  el.openMenu = 'media';
@@ -135,13 +86,6 @@ describe('<ia-topnav>', () => {
135
86
  await el.updateComplete;
136
87
  expect(el.selectedMenuOption).to.equal('');
137
88
  });
138
- it('toggles search menu tabindex when dropdown open', async () => {
139
- var _a, _b;
140
- const el = await fixture(html ` <ia-topnav></ia-topnav>`);
141
- el.openMenu = 'search';
142
- await el.updateComplete;
143
- expect((_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('search-menu')) === null || _b === void 0 ? void 0 : _b.getAttribute('tabindex')).to.equal('');
144
- });
145
89
  it('toggles user menu tabindex when dropdown open', async () => {
146
90
  var _a, _b;
147
91
  const el = await fixture(html ` <ia-topnav username="shaneriley" ?localLinks=${false}></ia-topnav>`);
@@ -165,10 +109,10 @@ describe('<ia-topnav>', () => {
165
109
  });
166
110
  it('toggles user menu when search user avatar clicked', async () => {
167
111
  var _a, _b, _c;
168
- const el = await fixture(html ` <ia-topnav
169
- username="shaneriley"
170
- screenName="shaneriley"
171
- ?localLinks=${false}
112
+ const el = await fixture(html ` <ia-topnav
113
+ username="shaneriley"
114
+ screenName="shaneriley"
115
+ ?localLinks=${false}
172
116
  ></ia-topnav>`);
173
117
  ((_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('primary-nav')) === null || _b === void 0 ? void 0 : _b.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.user-menu')).click();
174
118
  await el.updateComplete;
@@ -187,7 +131,6 @@ describe('<ia-topnav>', () => {
187
131
  'primary-nav',
188
132
  'media-slider',
189
133
  'desktop-subnav',
190
- 'search-menu',
191
134
  ];
192
135
  componentSelectors.forEach((selector) => {
193
136
  var _a;
@@ -208,52 +151,37 @@ describe('<ia-topnav>', () => {
208
151
  expect(signedOutDropdown.baseHost).to.equal('https://archive.org');
209
152
  });
210
153
  });
211
- describe('searchSlotMode', () => {
212
- it('renders search-menu by default', async () => {
154
+ describe('search slot', () => {
155
+ it('forwards custom-search slot to primary-nav', async () => {
213
156
  var _a;
214
157
  const el = await fixture(html `<ia-topnav></ia-topnav>`);
215
158
  await el.updateComplete;
216
- expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('search-menu')).to.exist;
217
- });
218
- it('suppresses search-menu when searchSlotMode is "custom"', async () => {
219
- var _a;
220
- const el = await fixture(html `<ia-topnav searchSlotMode="custom"></ia-topnav>`);
221
- await el.updateComplete;
222
- expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('search-menu')).to.not.exist;
223
- });
224
- it('forwards custom-search slot to primary-nav when searchSlotMode is "custom"', async () => {
225
- var _a;
226
- const el = await fixture(html `<ia-topnav searchSlotMode="custom"></ia-topnav>`);
227
- await el.updateComplete;
228
159
  const primaryNav = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('primary-nav');
229
160
  const slot = primaryNav === null || primaryNav === void 0 ? void 0 : primaryNav.querySelector('slot[name="custom-search"]');
230
161
  expect(slot).to.exist;
231
162
  });
232
- it('does not forward custom-search slot by default', async () => {
163
+ it('does not render search-menu', async () => {
233
164
  var _a;
234
165
  const el = await fixture(html `<ia-topnav></ia-topnav>`);
235
166
  await el.updateComplete;
236
- const primaryNav = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('primary-nav');
237
- const slot = primaryNav === null || primaryNav === void 0 ? void 0 : primaryNav.querySelector('slot[name="custom-search"]');
238
- expect(slot).to.not.exist;
167
+ expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('search-menu')).to.not.exist;
239
168
  });
240
169
  });
241
170
  describe('slot pass throughs', () => {
242
171
  describe('slot for <primary-nav>', () => {
243
172
  it('opens a slot with `secondIdentitySlotMode`', async () => {
244
173
  var _a, _b, _c, _d;
245
- const el = await fixture(html `<ia-topnav
246
- ?localLinks=${false}
247
- username="boop"
248
- screenName="somesuperlongscreenname"
249
- secondIdentitySlotMode="allow"
174
+ const el = await fixture(html `<ia-topnav
175
+ ?localLinks=${false}
176
+ username="boop"
177
+ screenName="somesuperlongscreenname"
178
+ secondIdentitySlotMode="allow"
250
179
  ></ia-topnav>`);
251
- const slot = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('primary-nav')) === null || _b === void 0 ? void 0 : _b.querySelector('slot');
180
+ const slot = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('primary-nav')) === null || _b === void 0 ? void 0 : _b.querySelector('slot[name="opt-sec-logo"]');
252
181
  expect(slot).to.exist;
253
- expect(slot === null || slot === void 0 ? void 0 : slot.getAttribute('name')).to.equal('opt-sec-logo');
254
182
  el.secondIdentitySlotMode = '';
255
183
  await elementUpdated(el);
256
- const noSlot = (_d = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('primary-nav')) === null || _d === void 0 ? void 0 : _d.querySelector('slot');
184
+ const noSlot = (_d = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('primary-nav')) === null || _d === void 0 ? void 0 : _d.querySelector('slot[name="opt-sec-logo"]');
257
185
  expect(noSlot).to.not.exist;
258
186
  });
259
187
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ia-topnav.test.js","sourceRoot":"","sources":["../../test/ia-topnav.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n html,\r\n fixture,\r\n expect,\r\n oneEvent,\r\n fixtureCleanup,\r\n elementUpdated,\r\n} from '@open-wc/testing';\r\n\r\nimport '../src/ia-topnav';\r\nimport { IATopNav } from '../src/ia-topnav';\r\nimport { SearchMenu } from '../src/search-menu';\r\nimport { SignedOutDropdown } from '../src/signed-out-dropdown';\r\nimport UserMenu from '../src/user-menu';\r\n\r\n// const container = (\r\n// {\r\n// username = '',\r\n// screenName = '',\r\n// config = {},\r\n// localLinks = true,\r\n// secondIdentitySlotMode = '',\r\n// }: {\r\n// username?: string;\r\n// screenName?: string;\r\n// config?: IATopNavConfig;\r\n// localLinks: boolean;\r\n// secondIdentitySlotMode?: IATopNavSecondIdentitySlotMode;\r\n// } = {\r\n// localLinks: true,\r\n// },\r\n// ) =>\r\n// html`<ia-topnav\r\n// .screenName=${screenName}\r\n// username=${username}\r\n// ?localLinks=${localLinks}\r\n// .config=${config}\r\n// .secondIdentitySlotMode=${secondIdentitySlotMode}\r\n// ></ia-topnav>`;\r\n\r\nconst verifyClosed = (instance: IATopNav) => {\r\n expect(instance.mediaSliderOpen).to.be.false;\r\n expect(instance.selectedMenuOption).to.equal('');\r\n};\r\n\r\nconst verifyOpened = (instance: IATopNav, mediatype: string) => {\r\n expect(instance.mediaSliderOpen).to.be.true;\r\n expect(instance.selectedMenuOption).to.equal(mediatype);\r\n};\r\n\r\nafterEach(() => {\r\n fixtureCleanup();\r\n});\r\n\r\ndescribe('<ia-topnav>', () => {\r\n it('assigns a value to \"search in\" from outside event', async () => {\r\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\r\n const query = 'atari';\r\n const searchMenu = el.shadowRoot?.querySelector(\r\n 'search-menu',\r\n ) as SearchMenu;\r\n\r\n const inputEvent = new InputEvent('input');\r\n Object.defineProperty(inputEvent, 'target', {\r\n value: { value: query },\r\n writable: false,\r\n });\r\n\r\n searchMenu?.searchInChanged(inputEvent);\r\n await el.updateComplete;\r\n\r\n expect(el.searchIn).to.equal(query);\r\n });\r\n\r\n it('dispatches an analyticsClick event when trackClick event fired', async () => {\r\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\r\n const clickEvent = new MouseEvent('click');\r\n\r\n setTimeout(() =>\r\n el.shadowRoot\r\n ?.querySelector('primary-nav')\r\n ?.shadowRoot?.querySelector('.hamburger')\r\n ?.dispatchEvent(clickEvent),\r\n );\r\n const response = await oneEvent(el, 'trackClick');\r\n\r\n expect(response).to.exist;\r\n });\r\n\r\n it('dispatches an analyticsSubmit event when trackSubmit event fired', async () => {\r\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\r\n const submitEvent = new Event('submit');\r\n const form = el.shadowRoot\r\n ?.querySelector('primary-nav')\r\n ?.shadowRoot?.querySelector('nav-search')\r\n ?.shadowRoot?.querySelector('form');\r\n\r\n form?.addEventListener('submit', (e) => e.preventDefault());\r\n (form?.querySelector('[name=query]') as HTMLInputElement).value = 'atari';\r\n setTimeout(() => form?.dispatchEvent(submitEvent));\r\n const response = await oneEvent(el, 'trackSubmit');\r\n\r\n expect(response).to.exist;\r\n });\r\n\r\n it('closes all menus when close-layer clicked', async () => {\r\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\r\n\r\n el.openMenu = 'media';\r\n el.selectedMenuOption = 'texts';\r\n el.mediaSliderOpen = true;\r\n await el.updateComplete;\r\n el.closeMenus();\r\n await el.updateComplete;\r\n\r\n expect(el.mediaSliderOpen).to.be.false;\r\n expect(el.openMenu).to.equal('');\r\n expect(el.selectedMenuOption).to.equal('');\r\n });\r\n\r\n it('sets media slider to closed', async () => {\r\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\r\n\r\n el.mediaSliderOpen = true;\r\n el.selectedMenuOption = 'foo';\r\n el.closeMediaSlider();\r\n\r\n verifyClosed(el);\r\n });\r\n\r\n it('toggles media slider visibility and starts animation', async () => {\r\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\r\n const mediatype = 'foo';\r\n\r\n el.selectedMenuOption = mediatype;\r\n el.openMediaSlider();\r\n\r\n verifyOpened(el, mediatype);\r\n });\r\n\r\n it('closes media slider if selected menu type is the open menu type', async () => {\r\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\r\n const mediatype = 'foo';\r\n\r\n el.selectedMenuOption = mediatype;\r\n\r\n const event = new CustomEvent('mediaTypeSelected', {\r\n detail: {\r\n mediatype,\r\n },\r\n });\r\n\r\n el.mediaTypeSelected(event);\r\n\r\n verifyClosed(el);\r\n });\r\n\r\n it('opens media slider menu and starts animation', async () => {\r\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\r\n const mediatype = 'foo';\r\n\r\n const event = new CustomEvent('mediaTypeSelected', {\r\n detail: {\r\n mediatype,\r\n },\r\n });\r\n\r\n el.mediaTypeSelected(event);\r\n\r\n verifyOpened(el, mediatype);\r\n });\r\n\r\n it('closes slider when menu closed', async () => {\r\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\r\n\r\n el.openMenu = 'media';\r\n el.selectedMenuOption = 'foo';\r\n el.mediaSliderOpen = true;\r\n await el.updateComplete;\r\n\r\n const event = new CustomEvent('menuToggled', {\r\n detail: {\r\n menuName: '',\r\n },\r\n });\r\n\r\n el.menuToggled(event);\r\n await el.updateComplete;\r\n\r\n expect(el.selectedMenuOption).to.equal('');\r\n });\r\n\r\n it('toggles search menu tabindex when dropdown open', async () => {\r\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\r\n\r\n el.openMenu = 'search';\r\n await el.updateComplete;\r\n\r\n expect(\r\n el.shadowRoot?.querySelector('search-menu')?.getAttribute('tabindex'),\r\n ).to.equal('');\r\n });\r\n\r\n it('toggles user menu tabindex when dropdown open', async () => {\r\n const el = await fixture<IATopNav>(\r\n html` <ia-topnav username=\"shaneriley\" ?localLinks=${false}></ia-topnav>`,\r\n );\r\n\r\n el.openMenu = 'user';\r\n await el.updateComplete;\r\n\r\n expect(\r\n el.shadowRoot?.querySelector('user-menu')?.getAttribute('tabindex'),\r\n ).to.equal('');\r\n });\r\n\r\n it('toggles signed out menu tabindex when dropdown open', async () => {\r\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\r\n\r\n el.openMenu = 'login';\r\n await el.updateComplete;\r\n\r\n expect(\r\n el.shadowRoot\r\n ?.querySelector('signed-out-dropdown')\r\n ?.getAttribute('tabindex'),\r\n ).to.equal('');\r\n });\r\n\r\n it('toggles search menu when search toggle button clicked', async () => {\r\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\r\n (\r\n el.shadowRoot\r\n ?.querySelector('primary-nav')\r\n ?.shadowRoot?.querySelector('.search-trigger') as HTMLButtonElement\r\n ).click();\r\n await el.updateComplete;\r\n\r\n expect(el.openMenu).to.equal('search');\r\n });\r\n\r\n it('toggles user menu when search user avatar clicked', async () => {\r\n const el = await fixture<IATopNav>(\r\n html` <ia-topnav\r\n username=\"shaneriley\"\r\n screenName=\"shaneriley\"\r\n ?localLinks=${false}\r\n ></ia-topnav>`,\r\n // container({\r\n // username: 'shaneriley',\r\n // screenName: 'shaneriley',\r\n // localLinks: false,\r\n // }),\r\n );\r\n\r\n (\r\n el.shadowRoot\r\n ?.querySelector('primary-nav')\r\n ?.shadowRoot?.querySelector('.user-menu') as HTMLButtonElement\r\n ).click();\r\n await el.updateComplete;\r\n\r\n expect(el.openMenu).to.equal('user');\r\n });\r\n\r\n it('uses localLinks for archive.org logo link', async () => {\r\n const el = await fixture<IATopNav>(\r\n html` <ia-topnav ?localLinks=${false}></ia-topnav>`,\r\n );\r\n const logoLink = el.shadowRoot\r\n ?.querySelector('primary-nav')\r\n ?.shadowRoot?.querySelector('.link-home');\r\n expect(logoLink?.getAttribute('href')).to.match(/\\/\\/archive\\.org/);\r\n });\r\n\r\n describe('sets localLinks properly', async () => {\r\n it('uses localLinks to archive.org links on common child components', async () => {\r\n const el = await fixture<IATopNav>(\r\n html` <ia-topnav ?localLinks=${false}></ia-topnav>`,\r\n );\r\n const componentSelectors = [\r\n 'primary-nav',\r\n 'media-slider',\r\n 'desktop-subnav',\r\n 'search-menu',\r\n ];\r\n componentSelectors.forEach((selector) => {\r\n const component = el.shadowRoot?.querySelector(selector) as unknown as {\r\n baseHost: string;\r\n };\r\n expect(component?.baseHost).to.equal('https://archive.org');\r\n });\r\n });\r\n\r\n it('uses localLinks to archive.org links on the signed out dropdown', async () => {\r\n const el = await fixture<IATopNav>(\r\n html` <ia-topnav ?localLinks=${false}></ia-topnav>`,\r\n );\r\n const signedOutDropdown = el.shadowRoot?.querySelector(\r\n 'signed-out-dropdown',\r\n ) as SignedOutDropdown;\r\n expect(signedOutDropdown?.baseHost).to.equal('https://archive.org');\r\n });\r\n\r\n it('uses localLinks to archive.org links on the user dropdown', async () => {\r\n const el = await fixture<IATopNav>(\r\n html` <ia-topnav username=\"foopey\" ?localLinks=${false}></ia-topnav>`,\r\n );\r\n const signedOutDropdown = el.shadowRoot?.querySelector(\r\n 'user-menu',\r\n ) as UserMenu;\r\n expect(signedOutDropdown.baseHost).to.equal('https://archive.org');\r\n });\r\n });\r\n\r\n describe('searchSlotMode', () => {\r\n it('renders search-menu by default', async () => {\r\n const el = await fixture<IATopNav>(html`<ia-topnav></ia-topnav>`);\r\n await el.updateComplete;\r\n\r\n expect(el.shadowRoot?.querySelector('search-menu')).to.exist;\r\n });\r\n\r\n it('suppresses search-menu when searchSlotMode is \"custom\"', async () => {\r\n const el = await fixture<IATopNav>(\r\n html`<ia-topnav searchSlotMode=\"custom\"></ia-topnav>`,\r\n );\r\n await el.updateComplete;\r\n\r\n expect(el.shadowRoot?.querySelector('search-menu')).to.not.exist;\r\n });\r\n\r\n it('forwards custom-search slot to primary-nav when searchSlotMode is \"custom\"', async () => {\r\n const el = await fixture<IATopNav>(\r\n html`<ia-topnav searchSlotMode=\"custom\"></ia-topnav>`,\r\n );\r\n await el.updateComplete;\r\n\r\n const primaryNav = el.shadowRoot?.querySelector('primary-nav');\r\n const slot = primaryNav?.querySelector('slot[name=\"custom-search\"]');\r\n expect(slot).to.exist;\r\n });\r\n\r\n it('does not forward custom-search slot by default', async () => {\r\n const el = await fixture<IATopNav>(html`<ia-topnav></ia-topnav>`);\r\n await el.updateComplete;\r\n\r\n const primaryNav = el.shadowRoot?.querySelector('primary-nav');\r\n const slot = primaryNav?.querySelector('slot[name=\"custom-search\"]');\r\n expect(slot).to.not.exist;\r\n });\r\n });\r\n\r\n describe('slot pass throughs', () => {\r\n describe('slot for <primary-nav>', () => {\r\n it('opens a slot with `secondIdentitySlotMode`', async () => {\r\n const el = await fixture<IATopNav>(\r\n html`<ia-topnav\r\n ?localLinks=${false}\r\n username=\"boop\"\r\n screenName=\"somesuperlongscreenname\"\r\n secondIdentitySlotMode=\"allow\"\r\n ></ia-topnav>`,\r\n );\r\n\r\n const slot = el.shadowRoot\r\n ?.querySelector('primary-nav')\r\n ?.querySelector('slot');\r\n expect(slot).to.exist;\r\n expect(slot?.getAttribute('name')).to.equal('opt-sec-logo');\r\n\r\n el.secondIdentitySlotMode = '';\r\n await elementUpdated(el);\r\n const noSlot = el.shadowRoot\r\n ?.querySelector('primary-nav')\r\n ?.querySelector('slot');\r\n expect(noSlot).to.not.exist;\r\n });\r\n });\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"ia-topnav.test.js","sourceRoot":"","sources":["../../test/ia-topnav.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n html,\n fixture,\n expect,\n oneEvent,\n fixtureCleanup,\n elementUpdated,\n} from '@open-wc/testing';\n\nimport '../src/ia-topnav';\nimport { IATopNav } from '../src/ia-topnav';\nimport { SignedOutDropdown } from '../src/signed-out-dropdown';\nimport UserMenu from '../src/user-menu';\n\nconst verifyClosed = (instance: IATopNav) => {\n expect(instance.mediaSliderOpen).to.be.false;\n expect(instance.selectedMenuOption).to.equal('');\n};\n\nconst verifyOpened = (instance: IATopNav, mediatype: string) => {\n expect(instance.mediaSliderOpen).to.be.true;\n expect(instance.selectedMenuOption).to.equal(mediatype);\n};\n\nafterEach(() => {\n fixtureCleanup();\n});\n\ndescribe('<ia-topnav>', () => {\n it('dispatches an analyticsClick event when trackClick event fired', async () => {\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\n const clickEvent = new MouseEvent('click');\n\n setTimeout(() =>\n el.shadowRoot\n ?.querySelector('primary-nav')\n ?.shadowRoot?.querySelector('.hamburger')\n ?.dispatchEvent(clickEvent),\n );\n const response = await oneEvent(el, 'trackClick');\n\n expect(response).to.exist;\n });\n\n it('closes all menus when close-layer clicked', async () => {\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\n\n el.openMenu = 'media';\n el.selectedMenuOption = 'texts';\n el.mediaSliderOpen = true;\n await el.updateComplete;\n el.closeMenus();\n await el.updateComplete;\n\n expect(el.mediaSliderOpen).to.be.false;\n expect(el.openMenu).to.equal('');\n expect(el.selectedMenuOption).to.equal('');\n });\n\n it('sets media slider to closed', async () => {\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\n\n el.mediaSliderOpen = true;\n el.selectedMenuOption = 'foo';\n el.closeMediaSlider();\n\n verifyClosed(el);\n });\n\n it('toggles media slider visibility and starts animation', async () => {\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\n const mediatype = 'foo';\n\n el.selectedMenuOption = mediatype;\n el.openMediaSlider();\n\n verifyOpened(el, mediatype);\n });\n\n it('closes media slider if selected menu type is the open menu type', async () => {\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\n const mediatype = 'foo';\n\n el.selectedMenuOption = mediatype;\n\n const event = new CustomEvent('mediaTypeSelected', {\n detail: {\n mediatype,\n },\n });\n\n el.mediaTypeSelected(event);\n\n verifyClosed(el);\n });\n\n it('opens media slider menu and starts animation', async () => {\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\n const mediatype = 'foo';\n\n const event = new CustomEvent('mediaTypeSelected', {\n detail: {\n mediatype,\n },\n });\n\n el.mediaTypeSelected(event);\n\n verifyOpened(el, mediatype);\n });\n\n it('closes slider when menu closed', async () => {\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\n\n el.openMenu = 'media';\n el.selectedMenuOption = 'foo';\n el.mediaSliderOpen = true;\n await el.updateComplete;\n\n const event = new CustomEvent('menuToggled', {\n detail: {\n menuName: '',\n },\n });\n\n el.menuToggled(event);\n await el.updateComplete;\n\n expect(el.selectedMenuOption).to.equal('');\n });\n\n it('toggles user menu tabindex when dropdown open', async () => {\n const el = await fixture<IATopNav>(\n html` <ia-topnav username=\"shaneriley\" ?localLinks=${false}></ia-topnav>`,\n );\n\n el.openMenu = 'user';\n await el.updateComplete;\n\n expect(\n el.shadowRoot?.querySelector('user-menu')?.getAttribute('tabindex'),\n ).to.equal('');\n });\n\n it('toggles signed out menu tabindex when dropdown open', async () => {\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\n\n el.openMenu = 'login';\n await el.updateComplete;\n\n expect(\n el.shadowRoot\n ?.querySelector('signed-out-dropdown')\n ?.getAttribute('tabindex'),\n ).to.equal('');\n });\n\n it('toggles search menu when search toggle button clicked', async () => {\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\n (\n el.shadowRoot\n ?.querySelector('primary-nav')\n ?.shadowRoot?.querySelector('.search-trigger') as HTMLButtonElement\n ).click();\n await el.updateComplete;\n\n expect(el.openMenu).to.equal('search');\n });\n\n it('toggles user menu when search user avatar clicked', async () => {\n const el = await fixture<IATopNav>(\n html` <ia-topnav\n username=\"shaneriley\"\n screenName=\"shaneriley\"\n ?localLinks=${false}\n ></ia-topnav>`,\n );\n\n (\n el.shadowRoot\n ?.querySelector('primary-nav')\n ?.shadowRoot?.querySelector('.user-menu') as HTMLButtonElement\n ).click();\n await el.updateComplete;\n\n expect(el.openMenu).to.equal('user');\n });\n\n it('uses localLinks for archive.org logo link', async () => {\n const el = await fixture<IATopNav>(\n html` <ia-topnav ?localLinks=${false}></ia-topnav>`,\n );\n const logoLink = el.shadowRoot\n ?.querySelector('primary-nav')\n ?.shadowRoot?.querySelector('.link-home');\n expect(logoLink?.getAttribute('href')).to.match(/\\/\\/archive\\.org/);\n });\n\n describe('sets localLinks properly', async () => {\n it('uses localLinks to archive.org links on common child components', async () => {\n const el = await fixture<IATopNav>(\n html` <ia-topnav ?localLinks=${false}></ia-topnav>`,\n );\n const componentSelectors = [\n 'primary-nav',\n 'media-slider',\n 'desktop-subnav',\n ];\n componentSelectors.forEach((selector) => {\n const component = el.shadowRoot?.querySelector(selector) as unknown as {\n baseHost: string;\n };\n expect(component?.baseHost).to.equal('https://archive.org');\n });\n });\n\n it('uses localLinks to archive.org links on the signed out dropdown', async () => {\n const el = await fixture<IATopNav>(\n html` <ia-topnav ?localLinks=${false}></ia-topnav>`,\n );\n const signedOutDropdown = el.shadowRoot?.querySelector(\n 'signed-out-dropdown',\n ) as SignedOutDropdown;\n expect(signedOutDropdown?.baseHost).to.equal('https://archive.org');\n });\n\n it('uses localLinks to archive.org links on the user dropdown', async () => {\n const el = await fixture<IATopNav>(\n html` <ia-topnav username=\"foopey\" ?localLinks=${false}></ia-topnav>`,\n );\n const signedOutDropdown = el.shadowRoot?.querySelector(\n 'user-menu',\n ) as UserMenu;\n expect(signedOutDropdown.baseHost).to.equal('https://archive.org');\n });\n });\n\n describe('search slot', () => {\n it('forwards custom-search slot to primary-nav', async () => {\n const el = await fixture<IATopNav>(html`<ia-topnav></ia-topnav>`);\n await el.updateComplete;\n\n const primaryNav = el.shadowRoot?.querySelector('primary-nav');\n const slot = primaryNav?.querySelector('slot[name=\"custom-search\"]');\n expect(slot).to.exist;\n });\n\n it('does not render search-menu', async () => {\n const el = await fixture<IATopNav>(html`<ia-topnav></ia-topnav>`);\n await el.updateComplete;\n\n expect(el.shadowRoot?.querySelector('search-menu')).to.not.exist;\n });\n });\n\n describe('slot pass throughs', () => {\n describe('slot for <primary-nav>', () => {\n it('opens a slot with `secondIdentitySlotMode`', async () => {\n const el = await fixture<IATopNav>(\n html`<ia-topnav\n ?localLinks=${false}\n username=\"boop\"\n screenName=\"somesuperlongscreenname\"\n secondIdentitySlotMode=\"allow\"\n ></ia-topnav>`,\n );\n\n const slot = el.shadowRoot\n ?.querySelector('primary-nav')\n ?.querySelector('slot[name=\"opt-sec-logo\"]');\n expect(slot).to.exist;\n\n el.secondIdentitySlotMode = '';\n await elementUpdated(el);\n const noSlot = el.shadowRoot\n ?.querySelector('primary-nav')\n ?.querySelector('slot[name=\"opt-sec-logo\"]');\n expect(noSlot).to.not.exist;\n });\n });\n });\n});\n"]}
@@ -1,13 +1,12 @@
1
1
  import { html, fixture, expect, fixtureCleanup, elementUpdated, } from '@open-wc/testing';
2
2
  import '../src/primary-nav';
3
- const component = ({ baseHost = 'archive.org', username = '', screenName = '', hideSearch = false, config = {}, searchSlotMode = '', secondIdentitySlotMode = 'allow', }) => html ` <primary-nav
4
- .baseHost=${baseHost}
5
- .username=${username}
6
- .screenName=${screenName}
7
- ?hideSearch=${hideSearch}
8
- .config=${config}
9
- .searchSlotMode=${searchSlotMode}
10
- .secondIdentitySlotMode=${secondIdentitySlotMode}
3
+ const component = ({ baseHost = 'archive.org', username = '', screenName = '', hideSearch = false, config = {}, secondIdentitySlotMode = 'allow', }) => html ` <primary-nav
4
+ .baseHost=${baseHost}
5
+ .username=${username}
6
+ .screenName=${screenName}
7
+ ?hideSearch=${hideSearch}
8
+ .config=${config}
9
+ .secondIdentitySlotMode=${secondIdentitySlotMode}
11
10
  ></primary-nav>`;
12
11
  afterEach(() => {
13
12
  fixtureCleanup();
@@ -21,7 +20,7 @@ describe('<primary-nav>', () => {
21
20
  }));
22
21
  expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('login-button')).to.not.be.undefined;
23
22
  });
24
- it('does not render search menu toggle and search form if hideSearch true', async () => {
23
+ it('does not render search trigger or search slot if hideSearch true', async () => {
25
24
  var _a, _b;
26
25
  const el = await fixture(component({
27
26
  baseHost: 'archive.org',
@@ -30,54 +29,37 @@ describe('<primary-nav>', () => {
30
29
  hideSearch: true,
31
30
  }));
32
31
  expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.search-trigger')).to.equal(null);
33
- expect((_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('nav-search')).to.equal(null);
34
- });
35
- it('renders nav-search by default', async () => {
36
- var _a, _b;
37
- const el = await fixture(component({
38
- baseHost: 'archive.org',
39
- username: 'testuser',
40
- screenName: 'testuser',
41
- }));
42
- expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('nav-search')).to.exist;
43
32
  expect((_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.custom-search-container')).to.not
44
33
  .exist;
45
34
  });
46
- it('renders custom-search slot when searchSlotMode is "custom"', async () => {
47
- var _a, _b, _c;
35
+ it('renders custom-search slot container', async () => {
36
+ var _a, _b;
48
37
  const el = await fixture(component({
49
38
  baseHost: 'archive.org',
50
39
  username: 'testuser',
51
40
  screenName: 'testuser',
52
- searchSlotMode: 'custom',
53
41
  }));
54
- expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('nav-search')).to.not.exist;
55
- expect((_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.custom-search-container')).to.exist;
56
- const slot = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('slot[name="custom-search"]');
42
+ expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.custom-search-container')).to.exist;
43
+ const slot = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('slot[name="custom-search"]');
57
44
  expect(slot).to.exist;
58
45
  });
59
- it('keeps search trigger button when searchSlotMode is "custom"', async () => {
46
+ it('renders search trigger button for mobile toggle', async () => {
60
47
  var _a;
61
48
  const el = await fixture(component({
62
49
  baseHost: 'archive.org',
63
50
  username: 'testuser',
64
51
  screenName: 'testuser',
65
- searchSlotMode: 'custom',
66
52
  }));
67
53
  expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.search-trigger')).to.exist;
68
54
  });
69
- it('hides custom search when hideSearch is true', async () => {
70
- var _a, _b;
55
+ it('does not render nav-search', async () => {
56
+ var _a;
71
57
  const el = await fixture(component({
72
58
  baseHost: 'archive.org',
73
59
  username: 'testuser',
74
60
  screenName: 'testuser',
75
- searchSlotMode: 'custom',
76
- hideSearch: true,
77
61
  }));
78
- expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.custom-search-container')).to.not
79
- .exist;
80
- expect((_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.search-trigger')).to.not.exist;
62
+ expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('nav-search')).to.not.exist;
81
63
  });
82
64
  it('opens a slot with `secondIdentitySlotMode`', async () => {
83
65
  var _a, _b;
@@ -1 +1 @@
1
- {"version":3,"file":"primary-nav.test.js","sourceRoot":"","sources":["../../test/primary-nav.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n html,\r\n fixture,\r\n expect,\r\n fixtureCleanup,\r\n elementUpdated,\r\n} from '@open-wc/testing';\r\n\r\nimport '../src/primary-nav';\r\nimport {\r\n IATopNavConfig,\r\n IATopNavSearchSlotMode,\r\n IATopNavSecondIdentitySlotMode,\r\n} from '../src/models';\r\nimport { PrimaryNav } from '../src/primary-nav';\r\n\r\nconst component = ({\r\n baseHost = 'archive.org',\r\n username = '',\r\n screenName = '',\r\n hideSearch = false,\r\n config = {},\r\n searchSlotMode = '',\r\n secondIdentitySlotMode = 'allow',\r\n}: {\r\n baseHost?: string;\r\n username?: string;\r\n screenName?: string;\r\n hideSearch?: boolean;\r\n config?: IATopNavConfig;\r\n searchSlotMode?: IATopNavSearchSlotMode;\r\n secondIdentitySlotMode?: IATopNavSecondIdentitySlotMode;\r\n}) =>\r\n html` <primary-nav\r\n .baseHost=${baseHost}\r\n .username=${username}\r\n .screenName=${screenName}\r\n ?hideSearch=${hideSearch}\r\n .config=${config}\r\n .searchSlotMode=${searchSlotMode}\r\n .secondIdentitySlotMode=${secondIdentitySlotMode}\r\n ></primary-nav>`;\r\n\r\nafterEach(() => {\r\n fixtureCleanup();\r\n});\r\n\r\ndescribe('<primary-nav>', () => {\r\n it('renders the login link when no username present', async () => {\r\n const el = await fixture<PrimaryNav>(\r\n component({\r\n baseHost: 'archive.org',\r\n username: '',\r\n }),\r\n );\r\n\r\n expect(el.shadowRoot?.querySelector('login-button')).to.not.be.undefined;\r\n });\r\n\r\n it('does not render search menu toggle and search form if hideSearch true', async () => {\r\n const el = await fixture<PrimaryNav>(\r\n component({\r\n baseHost: 'archive.org',\r\n username: 'shaneriley',\r\n screenName: 'shaneriley',\r\n hideSearch: true,\r\n }),\r\n );\r\n\r\n expect(el.shadowRoot?.querySelector('.search-trigger')).to.equal(null);\r\n expect(el.shadowRoot?.querySelector('nav-search')).to.equal(null);\r\n });\r\n\r\n it('renders nav-search by default', async () => {\r\n const el = await fixture<PrimaryNav>(\r\n component({\r\n baseHost: 'archive.org',\r\n username: 'testuser',\r\n screenName: 'testuser',\r\n }),\r\n );\r\n\r\n expect(el.shadowRoot?.querySelector('nav-search')).to.exist;\r\n expect(el.shadowRoot?.querySelector('.custom-search-container')).to.not\r\n .exist;\r\n });\r\n\r\n it('renders custom-search slot when searchSlotMode is \"custom\"', async () => {\r\n const el = await fixture<PrimaryNav>(\r\n component({\r\n baseHost: 'archive.org',\r\n username: 'testuser',\r\n screenName: 'testuser',\r\n searchSlotMode: 'custom',\r\n }),\r\n );\r\n\r\n expect(el.shadowRoot?.querySelector('nav-search')).to.not.exist;\r\n expect(el.shadowRoot?.querySelector('.custom-search-container')).to.exist;\r\n\r\n const slot = el.shadowRoot?.querySelector<HTMLSlotElement>(\r\n 'slot[name=\"custom-search\"]',\r\n );\r\n expect(slot).to.exist;\r\n });\r\n\r\n it('keeps search trigger button when searchSlotMode is \"custom\"', async () => {\r\n const el = await fixture<PrimaryNav>(\r\n component({\r\n baseHost: 'archive.org',\r\n username: 'testuser',\r\n screenName: 'testuser',\r\n searchSlotMode: 'custom',\r\n }),\r\n );\r\n\r\n expect(el.shadowRoot?.querySelector('.search-trigger')).to.exist;\r\n });\r\n\r\n it('hides custom search when hideSearch is true', async () => {\r\n const el = await fixture<PrimaryNav>(\r\n component({\r\n baseHost: 'archive.org',\r\n username: 'testuser',\r\n screenName: 'testuser',\r\n searchSlotMode: 'custom',\r\n hideSearch: true,\r\n }),\r\n );\r\n\r\n expect(el.shadowRoot?.querySelector('.custom-search-container')).to.not\r\n .exist;\r\n expect(el.shadowRoot?.querySelector('.search-trigger')).to.not.exist;\r\n });\r\n\r\n it('opens a slot with `secondIdentitySlotMode`', async () => {\r\n const el = await fixture<PrimaryNav>(\r\n component({\r\n baseHost: 'archive.org',\r\n username: 'boop',\r\n screenName: 'somesuperlongscreenname',\r\n secondIdentitySlotMode: 'allow',\r\n }),\r\n );\r\n\r\n const brandingBlock = el.shadowRoot?.querySelector('div.branding');\r\n expect(brandingBlock?.getAttribute('class')).to.contain(\r\n 'branding second-logo',\r\n );\r\n\r\n const slot = brandingBlock?.querySelector('slot');\r\n expect(slot).to.exist;\r\n expect(slot?.getAttribute('name')).to.equal('opt-sec-logo');\r\n\r\n el.secondIdentitySlotMode = '';\r\n await elementUpdated(el);\r\n const noSlotBrandingBlock = el.shadowRoot?.querySelector('div.branding');\r\n expect(noSlotBrandingBlock?.getAttribute('class')).to.contain('branding');\r\n\r\n const noSlot = noSlotBrandingBlock?.querySelector('slot');\r\n expect(noSlot).to.not.exist;\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"primary-nav.test.js","sourceRoot":"","sources":["../../test/primary-nav.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n html,\n fixture,\n expect,\n fixtureCleanup,\n elementUpdated,\n} from '@open-wc/testing';\n\nimport '../src/primary-nav';\nimport { IATopNavConfig, IATopNavSecondIdentitySlotMode } from '../src/models';\nimport { PrimaryNav } from '../src/primary-nav';\n\nconst component = ({\n baseHost = 'archive.org',\n username = '',\n screenName = '',\n hideSearch = false,\n config = {},\n secondIdentitySlotMode = 'allow',\n}: {\n baseHost?: string;\n username?: string;\n screenName?: string;\n hideSearch?: boolean;\n config?: IATopNavConfig;\n secondIdentitySlotMode?: IATopNavSecondIdentitySlotMode;\n}) =>\n html` <primary-nav\n .baseHost=${baseHost}\n .username=${username}\n .screenName=${screenName}\n ?hideSearch=${hideSearch}\n .config=${config}\n .secondIdentitySlotMode=${secondIdentitySlotMode}\n ></primary-nav>`;\n\nafterEach(() => {\n fixtureCleanup();\n});\n\ndescribe('<primary-nav>', () => {\n it('renders the login link when no username present', async () => {\n const el = await fixture<PrimaryNav>(\n component({\n baseHost: 'archive.org',\n username: '',\n }),\n );\n\n expect(el.shadowRoot?.querySelector('login-button')).to.not.be.undefined;\n });\n\n it('does not render search trigger or search slot if hideSearch true', async () => {\n const el = await fixture<PrimaryNav>(\n component({\n baseHost: 'archive.org',\n username: 'shaneriley',\n screenName: 'shaneriley',\n hideSearch: true,\n }),\n );\n\n expect(el.shadowRoot?.querySelector('.search-trigger')).to.equal(null);\n expect(el.shadowRoot?.querySelector('.custom-search-container')).to.not\n .exist;\n });\n\n it('renders custom-search slot container', async () => {\n const el = await fixture<PrimaryNav>(\n component({\n baseHost: 'archive.org',\n username: 'testuser',\n screenName: 'testuser',\n }),\n );\n\n expect(el.shadowRoot?.querySelector('.custom-search-container')).to.exist;\n\n const slot = el.shadowRoot?.querySelector<HTMLSlotElement>(\n 'slot[name=\"custom-search\"]',\n );\n expect(slot).to.exist;\n });\n\n it('renders search trigger button for mobile toggle', async () => {\n const el = await fixture<PrimaryNav>(\n component({\n baseHost: 'archive.org',\n username: 'testuser',\n screenName: 'testuser',\n }),\n );\n\n expect(el.shadowRoot?.querySelector('.search-trigger')).to.exist;\n });\n\n it('does not render nav-search', async () => {\n const el = await fixture<PrimaryNav>(\n component({\n baseHost: 'archive.org',\n username: 'testuser',\n screenName: 'testuser',\n }),\n );\n\n expect(el.shadowRoot?.querySelector('nav-search')).to.not.exist;\n });\n\n it('opens a slot with `secondIdentitySlotMode`', async () => {\n const el = await fixture<PrimaryNav>(\n component({\n baseHost: 'archive.org',\n username: 'boop',\n screenName: 'somesuperlongscreenname',\n secondIdentitySlotMode: 'allow',\n }),\n );\n\n const brandingBlock = el.shadowRoot?.querySelector('div.branding');\n expect(brandingBlock?.getAttribute('class')).to.contain(\n 'branding second-logo',\n );\n\n const slot = brandingBlock?.querySelector('slot');\n expect(slot).to.exist;\n expect(slot?.getAttribute('name')).to.equal('opt-sec-logo');\n\n el.secondIdentitySlotMode = '';\n await elementUpdated(el);\n const noSlotBrandingBlock = el.shadowRoot?.querySelector('div.branding');\n expect(noSlotBrandingBlock?.getAttribute('class')).to.contain('branding');\n\n const noSlot = noSlotBrandingBlock?.querySelector('slot');\n expect(noSlot).to.not.exist;\n });\n});\n"]}
package/index.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { IATopNav } from './src/ia-topnav';
2
-
3
- export { IATopNav };
4
- export type { IATopNavSearchSlotMode } from './src/models';
1
+ import { IATopNav } from './src/ia-topnav';
2
+
3
+ export { IATopNav };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@internetarchive/ia-topnav",
3
- "version": "1.4.1-alpha-webdev8259.0",
3
+ "version": "1.4.1-alpha-webdev8259.1",
4
4
  "description": "Top nav for Internet Archive",
5
5
  "license": "AGPL-3.0-only",
6
6
  "main": "dist/index.js",