@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.
- package/dist/index.d.ts +0 -1
- package/dist/index.js.map +1 -1
- package/dist/src/data/menus.js.map +1 -1
- package/dist/src/dropdown-menu.js +26 -26
- package/dist/src/dropdown-menu.js.map +1 -1
- package/dist/src/ia-topnav.d.ts +2 -13
- package/dist/src/ia-topnav.js +70 -140
- package/dist/src/ia-topnav.js.map +1 -1
- package/dist/src/lib/keyboard-navigation.js.map +1 -1
- package/dist/src/login-button.js +17 -17
- package/dist/src/login-button.js.map +1 -1
- package/dist/src/media-menu.js +21 -21
- package/dist/src/media-menu.js.map +1 -1
- package/dist/src/models.d.ts +0 -1
- package/dist/src/models.js.map +1 -1
- package/dist/src/primary-nav.d.ts +6 -7
- package/dist/src/primary-nav.js +98 -142
- package/dist/src/primary-nav.js.map +1 -1
- package/dist/src/styles/login-button.js +87 -87
- package/dist/src/styles/login-button.js.map +1 -1
- package/dist/src/styles/primary-nav.js +343 -343
- package/dist/src/styles/primary-nav.js.map +1 -1
- package/dist/src/user-menu.js +13 -13
- package/dist/src/user-menu.js.map +1 -1
- package/dist/test/ia-topnav.test.js +15 -87
- package/dist/test/ia-topnav.test.js.map +1 -1
- package/dist/test/primary-nav.test.js +16 -34
- package/dist/test/primary-nav.test.js.map +1 -1
- package/index.ts +3 -4
- package/package.json +1 -1
- package/src/data/menus.ts +652 -652
- package/src/dropdown-menu.ts +132 -132
- package/src/ia-topnav.ts +301 -383
- package/src/lib/keyboard-navigation.ts +166 -166
- package/src/login-button.ts +78 -78
- package/src/media-menu.ts +143 -143
- package/src/models.ts +63 -65
- package/src/primary-nav.ts +277 -324
- package/src/styles/login-button.ts +90 -90
- package/src/styles/primary-nav.ts +346 -346
- package/src/user-menu.ts +32 -32
- package/test/ia-topnav.test.ts +282 -381
- 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';\
|
|
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"]}
|
package/dist/src/user-menu.js
CHANGED
|
@@ -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';\
|
|
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('
|
|
212
|
-
it('
|
|
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
|
|
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
|
-
|
|
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 = {},
|
|
4
|
-
.baseHost=${baseHost}
|
|
5
|
-
.username=${username}
|
|
6
|
-
.screenName=${screenName}
|
|
7
|
-
?hideSearch=${hideSearch}
|
|
8
|
-
.config=${config}
|
|
9
|
-
.
|
|
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
|
|
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
|
|
47
|
-
var _a, _b
|
|
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('
|
|
55
|
-
|
|
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('
|
|
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('
|
|
70
|
-
var _a
|
|
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('
|
|
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":"AAAA,OAAO,EACL,IAAI,EACJ,OAAO,EACP,MAAM,EACN,cAAc,EACd,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,oBAAoB,CAAC;
|
|
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 };
|