@internetarchive/ia-topnav 2.0.0 → 2.0.1-alpha-webdev8396.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/data/menus.js.map +1 -1
- package/dist/src/dropdown-menu.d.ts +3 -4
- package/dist/src/dropdown-menu.js +6 -13
- package/dist/src/dropdown-menu.js.map +1 -1
- package/dist/src/ia-topnav.d.ts +3 -0
- package/dist/src/ia-topnav.js +79 -69
- package/dist/src/ia-topnav.js.map +1 -1
- package/dist/src/login-button.d.ts +3 -0
- package/dist/src/login-button.js +28 -18
- package/dist/src/login-button.js.map +1 -1
- package/dist/src/models.js.map +1 -1
- package/dist/src/primary-nav.d.ts +4 -0
- package/dist/src/primary-nav.js +109 -90
- package/dist/src/primary-nav.js.map +1 -1
- package/dist/src/signed-out-dropdown.d.ts +1 -1
- package/dist/src/signed-out-dropdown.js +1 -2
- package/dist/src/signed-out-dropdown.js.map +1 -1
- package/dist/src/styles/dropdown-menu.js +1 -0
- package/dist/src/styles/dropdown-menu.js.map +1 -1
- package/dist/src/styles/ia-topnav.js +82 -82
- package/dist/src/styles/ia-topnav.js.map +1 -1
- package/dist/src/styles/primary-nav.js +353 -353
- package/dist/src/styles/primary-nav.js.map +1 -1
- package/dist/src/user-menu.d.ts +1 -2
- package/dist/src/user-menu.js +1 -2
- package/dist/src/user-menu.js.map +1 -1
- package/dist/test/ia-topnav.test.js +9 -9
- package/dist/test/ia-topnav.test.js.map +1 -1
- package/dist/test/primary-nav.test.js +7 -7
- package/dist/test/primary-nav.test.js.map +1 -1
- package/package.json +1 -1
- package/src/data/menus.ts +650 -650
- package/src/dropdown-menu.ts +6 -12
- package/src/ia-topnav.ts +332 -318
- package/src/login-button.ts +89 -78
- package/src/models.ts +58 -58
- package/src/primary-nav.ts +300 -277
- package/src/signed-out-dropdown.ts +1 -2
- package/src/styles/dropdown-menu.ts +1 -0
- package/src/styles/ia-topnav.ts +85 -85
- package/src/styles/primary-nav.ts +356 -356
- package/src/user-menu.ts +3 -4
- package/test/ia-topnav.test.ts +282 -282
- package/test/primary-nav.test.ts +135 -135
- package/dist/src/styles/signed-out-dropdown.d.ts +0 -2
- package/dist/src/styles/signed-out-dropdown.js +0 -31
- package/dist/src/styles/signed-out-dropdown.js.map +0 -1
- package/dist/src/styles/user-menu.d.ts +0 -2
- package/dist/src/styles/user-menu.js +0 -31
- package/dist/src/styles/user-menu.js.map +0 -1
- package/src/styles/signed-out-dropdown.ts +0 -31
- package/src/styles/user-menu.ts +0 -31
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiWjB,CAAC","sourcesContent":["import { css } from 'lit';\
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiWjB,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-container {\n display: none;\n }\n\n .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;\n border-radius: 1rem 1rem 0 0;\n background: var(--primaryNavBg);\n align-items: center;\n animation: fade-in 0.2s forwards;\n }\n\n .search-container ::slotted(*) {\n display: block;\n }\n\n .search-container slot {\n width: 100%;\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 .search-container,\n .search-container.open {\n display: flex;\n position: static;\n top: auto;\n right: auto;\n bottom: auto;\n left: auto;\n align-items: center;\n padding: 0 0 0 1rem;\n background: transparent;\n border-radius: 0;\n z-index: auto;\n }\n\n .search-container slot {\n width: auto;\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"]}
|
package/dist/src/user-menu.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { CSSResult } from 'lit';
|
|
2
1
|
import DropdownMenu from './dropdown-menu';
|
|
3
2
|
export default class UserMenu extends DropdownMenu {
|
|
4
3
|
username: string;
|
|
5
4
|
screenName: string;
|
|
6
|
-
static get styles(): CSSResult
|
|
5
|
+
static get styles(): import("lit").CSSResult;
|
|
7
6
|
render(): import("lit").TemplateResult<1>;
|
|
8
7
|
}
|
package/dist/src/user-menu.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { html } from 'lit';
|
|
3
3
|
import DropdownMenu from './dropdown-menu';
|
|
4
|
-
import userMenuCSS from './styles/user-menu';
|
|
5
4
|
import dropdownStyles from './styles/dropdown-menu';
|
|
6
5
|
import { customElement, property } from 'lit/decorators.js';
|
|
7
6
|
let UserMenu = class UserMenu extends DropdownMenu {
|
|
@@ -11,7 +10,7 @@ let UserMenu = class UserMenu extends DropdownMenu {
|
|
|
11
10
|
this.screenName = '';
|
|
12
11
|
}
|
|
13
12
|
static get styles() {
|
|
14
|
-
return
|
|
13
|
+
return dropdownStyles;
|
|
15
14
|
}
|
|
16
15
|
render() {
|
|
17
16
|
return html `
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-menu.js","sourceRoot":"","sources":["../../src/user-menu.ts"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"user-menu.js","sourceRoot":"","sources":["../../src/user-menu.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,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;IACxB,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 { html } from 'lit';\nimport DropdownMenu from './dropdown-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() {\n return dropdownStyles;\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"]}
|
|
@@ -109,10 +109,10 @@ describe('<ia-topnav>', () => {
|
|
|
109
109
|
});
|
|
110
110
|
it('toggles user menu when search user avatar clicked', async () => {
|
|
111
111
|
var _a, _b, _c;
|
|
112
|
-
const el = await fixture(html ` <ia-topnav
|
|
113
|
-
username="shaneriley"
|
|
114
|
-
screenName="shaneriley"
|
|
115
|
-
?localLinks=${false}
|
|
112
|
+
const el = await fixture(html ` <ia-topnav
|
|
113
|
+
username="shaneriley"
|
|
114
|
+
screenName="shaneriley"
|
|
115
|
+
?localLinks=${false}
|
|
116
116
|
></ia-topnav>`);
|
|
117
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();
|
|
118
118
|
await el.updateComplete;
|
|
@@ -171,11 +171,11 @@ describe('<ia-topnav>', () => {
|
|
|
171
171
|
describe('slot for <primary-nav>', () => {
|
|
172
172
|
it('opens a slot with `secondIdentitySlotMode`', async () => {
|
|
173
173
|
var _a, _b, _c, _d;
|
|
174
|
-
const el = await fixture(html `<ia-topnav
|
|
175
|
-
?localLinks=${false}
|
|
176
|
-
username="boop"
|
|
177
|
-
screenName="somesuperlongscreenname"
|
|
178
|
-
secondIdentitySlotMode="allow"
|
|
174
|
+
const el = await fixture(html `<ia-topnav
|
|
175
|
+
?localLinks=${false}
|
|
176
|
+
username="boop"
|
|
177
|
+
screenName="somesuperlongscreenname"
|
|
178
|
+
secondIdentitySlotMode="allow"
|
|
179
179
|
></ia-topnav>`);
|
|
180
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"]');
|
|
181
181
|
expect(slot).to.exist;
|
|
@@ -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 { SignedOutDropdown } from '../src/signed-out-dropdown';\r\nimport UserMenu from '../src/user-menu';\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('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('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 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 );\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 ];\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('search slot', () => {\r\n it('forwards search slot to primary-nav', 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=\"search\"]');\r\n expect(slot).to.exist;\r\n });\r\n\r\n it('does not render search-menu', 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.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[name=\"opt-sec-logo\"]');\r\n expect(slot).to.exist;\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[name=\"opt-sec-logo\"]');\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 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=\"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,12 +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 = {}, secondIdentitySlotMode = 'allow', }) => html ` <primary-nav
|
|
4
|
-
.baseHost=${baseHost}
|
|
5
|
-
.username=${username}
|
|
6
|
-
.screenName=${screenName}
|
|
7
|
-
?hideSearch=${hideSearch}
|
|
8
|
-
.config=${config}
|
|
9
|
-
.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}
|
|
10
10
|
></primary-nav>`;
|
|
11
11
|
afterEach(() => {
|
|
12
12
|
fixtureCleanup();
|
|
@@ -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 {\
|
|
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('.search-container')).to.not.exist;\n });\n\n it('renders 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('.search-container')).to.exist;\n\n const slot = el.shadowRoot?.querySelector<HTMLSlotElement>(\n 'slot[name=\"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"]}
|