@internetarchive/ia-topnav 1.3.30 → 1.4.1-alpha-webdev8259.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/.prettierignore +1 -1
- package/LICENSE +661 -661
- package/README.md +147 -147
- package/demo/index.html +28 -28
- package/dist/index.d.ts +1 -0
- 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 +4 -1
- package/dist/src/ia-topnav.js +96 -81
- 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 +1 -0
- package/dist/src/models.js.map +1 -1
- package/dist/src/primary-nav.d.ts +3 -1
- package/dist/src/primary-nav.js +118 -95
- 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 -308
- 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 +39 -9
- package/dist/test/ia-topnav.test.js.map +1 -1
- package/dist/test/primary-nav.test.js +55 -7
- package/dist/test/primary-nav.test.js.map +1 -1
- package/eslint.config.mjs +53 -53
- package/index.ts +4 -3
- package/package.json +72 -72
- package/prettier.config.js +9 -9
- package/src/data/menus.ts +652 -652
- package/src/dropdown-menu.ts +132 -132
- package/src/ia-topnav.ts +383 -366
- 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 +65 -63
- package/src/primary-nav.ts +324 -296
- package/src/styles/login-button.ts +90 -90
- package/src/styles/primary-nav.ts +346 -311
- package/src/user-menu.ts +32 -32
- package/ssl/server.key +28 -28
- package/test/ia-topnav.test.ts +381 -343
- package/test/primary-nav.test.ts +163 -94
- package/tsconfig.json +31 -31
- package/web-dev-server.config.mjs +32 -32
- package/web-test-runner.config.mjs +41 -41
|
@@ -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
|
|
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"]}
|
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';\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
|
+
{"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"]}
|
|
@@ -165,10 +165,10 @@ describe('<ia-topnav>', () => {
|
|
|
165
165
|
});
|
|
166
166
|
it('toggles user menu when search user avatar clicked', async () => {
|
|
167
167
|
var _a, _b, _c;
|
|
168
|
-
const el = await fixture(html ` <ia-topnav
|
|
169
|
-
username="shaneriley"
|
|
170
|
-
screenName="shaneriley"
|
|
171
|
-
?localLinks=${false}
|
|
168
|
+
const el = await fixture(html ` <ia-topnav
|
|
169
|
+
username="shaneriley"
|
|
170
|
+
screenName="shaneriley"
|
|
171
|
+
?localLinks=${false}
|
|
172
172
|
></ia-topnav>`);
|
|
173
173
|
((_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
174
|
await el.updateComplete;
|
|
@@ -208,15 +208,45 @@ describe('<ia-topnav>', () => {
|
|
|
208
208
|
expect(signedOutDropdown.baseHost).to.equal('https://archive.org');
|
|
209
209
|
});
|
|
210
210
|
});
|
|
211
|
+
describe('searchSlotMode', () => {
|
|
212
|
+
it('renders search-menu by default', async () => {
|
|
213
|
+
var _a;
|
|
214
|
+
const el = await fixture(html `<ia-topnav></ia-topnav>`);
|
|
215
|
+
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
|
+
const primaryNav = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('primary-nav');
|
|
229
|
+
const slot = primaryNav === null || primaryNav === void 0 ? void 0 : primaryNav.querySelector('slot[name="custom-search"]');
|
|
230
|
+
expect(slot).to.exist;
|
|
231
|
+
});
|
|
232
|
+
it('does not forward custom-search slot by default', async () => {
|
|
233
|
+
var _a;
|
|
234
|
+
const el = await fixture(html `<ia-topnav></ia-topnav>`);
|
|
235
|
+
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;
|
|
239
|
+
});
|
|
240
|
+
});
|
|
211
241
|
describe('slot pass throughs', () => {
|
|
212
242
|
describe('slot for <primary-nav>', () => {
|
|
213
243
|
it('opens a slot with `secondIdentitySlotMode`', async () => {
|
|
214
244
|
var _a, _b, _c, _d;
|
|
215
|
-
const el = await fixture(html `<ia-topnav
|
|
216
|
-
?localLinks=${false}
|
|
217
|
-
username="boop"
|
|
218
|
-
screenName="somesuperlongscreenname"
|
|
219
|
-
secondIdentitySlotMode="allow"
|
|
245
|
+
const el = await fixture(html `<ia-topnav
|
|
246
|
+
?localLinks=${false}
|
|
247
|
+
username="boop"
|
|
248
|
+
screenName="somesuperlongscreenname"
|
|
249
|
+
secondIdentitySlotMode="allow"
|
|
220
250
|
></ia-topnav>`);
|
|
221
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');
|
|
222
252
|
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 {\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 { SearchMenu } from '../src/search-menu';\nimport { SignedOutDropdown } from '../src/signed-out-dropdown';\nimport UserMenu from '../src/user-menu';\n\n// const container = (\n// {\n// username = '',\n// screenName = '',\n// config = {},\n// localLinks = true,\n// secondIdentitySlotMode = '',\n// }: {\n// username?: string;\n// screenName?: string;\n// config?: IATopNavConfig;\n// localLinks: boolean;\n// secondIdentitySlotMode?: IATopNavSecondIdentitySlotMode;\n// } = {\n// localLinks: true,\n// },\n// ) =>\n// html`<ia-topnav\n// .screenName=${screenName}\n// username=${username}\n// ?localLinks=${localLinks}\n// .config=${config}\n// .secondIdentitySlotMode=${secondIdentitySlotMode}\n// ></ia-topnav>`;\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('assigns a value to \"search in\" from outside event', async () => {\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\n const query = 'atari';\n const searchMenu = el.shadowRoot?.querySelector(\n 'search-menu',\n ) as SearchMenu;\n\n const inputEvent = new InputEvent('input');\n Object.defineProperty(inputEvent, 'target', {\n value: { value: query },\n writable: false,\n });\n\n searchMenu?.searchInChanged(inputEvent);\n await el.updateComplete;\n\n expect(el.searchIn).to.equal(query);\n });\n\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('dispatches an analyticsSubmit event when trackSubmit event fired', async () => {\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\n const submitEvent = new Event('submit');\n const form = el.shadowRoot\n ?.querySelector('primary-nav')\n ?.shadowRoot?.querySelector('nav-search')\n ?.shadowRoot?.querySelector('form');\n\n form?.addEventListener('submit', (e) => e.preventDefault());\n (form?.querySelector('[name=query]') as HTMLInputElement).value = 'atari';\n setTimeout(() => form?.dispatchEvent(submitEvent));\n const response = await oneEvent(el, 'trackSubmit');\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 search menu tabindex when dropdown open', async () => {\n const el = await fixture<IATopNav>(html` <ia-topnav></ia-topnav>`);\n\n el.openMenu = 'search';\n await el.updateComplete;\n\n expect(\n el.shadowRoot?.querySelector('search-menu')?.getAttribute('tabindex'),\n ).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 // container({\n // username: 'shaneriley',\n // screenName: 'shaneriley',\n // localLinks: false,\n // }),\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 'search-menu',\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('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');\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 noSlot = el.shadowRoot\n ?.querySelector('primary-nav')\n ?.querySelector('slot');\n expect(noSlot).to.not.exist;\n });\n });\n });\n});\n"]}
|
|
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,12 +1,13 @@
|
|
|
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
|
-
.
|
|
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}
|
|
10
11
|
></primary-nav>`;
|
|
11
12
|
afterEach(() => {
|
|
12
13
|
fixtureCleanup();
|
|
@@ -31,6 +32,53 @@ describe('<primary-nav>', () => {
|
|
|
31
32
|
expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.search-trigger')).to.equal(null);
|
|
32
33
|
expect((_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('nav-search')).to.equal(null);
|
|
33
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
|
+
expect((_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.custom-search-container')).to.not
|
|
44
|
+
.exist;
|
|
45
|
+
});
|
|
46
|
+
it('renders custom-search slot when searchSlotMode is "custom"', async () => {
|
|
47
|
+
var _a, _b, _c;
|
|
48
|
+
const el = await fixture(component({
|
|
49
|
+
baseHost: 'archive.org',
|
|
50
|
+
username: 'testuser',
|
|
51
|
+
screenName: 'testuser',
|
|
52
|
+
searchSlotMode: 'custom',
|
|
53
|
+
}));
|
|
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"]');
|
|
57
|
+
expect(slot).to.exist;
|
|
58
|
+
});
|
|
59
|
+
it('keeps search trigger button when searchSlotMode is "custom"', async () => {
|
|
60
|
+
var _a;
|
|
61
|
+
const el = await fixture(component({
|
|
62
|
+
baseHost: 'archive.org',
|
|
63
|
+
username: 'testuser',
|
|
64
|
+
screenName: 'testuser',
|
|
65
|
+
searchSlotMode: 'custom',
|
|
66
|
+
}));
|
|
67
|
+
expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.search-trigger')).to.exist;
|
|
68
|
+
});
|
|
69
|
+
it('hides custom search when hideSearch is true', async () => {
|
|
70
|
+
var _a, _b;
|
|
71
|
+
const el = await fixture(component({
|
|
72
|
+
baseHost: 'archive.org',
|
|
73
|
+
username: 'testuser',
|
|
74
|
+
screenName: 'testuser',
|
|
75
|
+
searchSlotMode: 'custom',
|
|
76
|
+
hideSearch: true,
|
|
77
|
+
}));
|
|
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;
|
|
81
|
+
});
|
|
34
82
|
it('opens a slot with `secondIdentitySlotMode`', async () => {
|
|
35
83
|
var _a, _b;
|
|
36
84
|
const el = await fixture(component({
|
|
@@ -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 {\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"]}
|
package/eslint.config.mjs
CHANGED
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
import typescriptEslint from '@typescript-eslint/eslint-plugin';
|
|
2
|
-
import html from 'eslint-plugin-html';
|
|
3
|
-
import tsParser from '@typescript-eslint/parser';
|
|
4
|
-
import path from 'node:path';
|
|
5
|
-
import { fileURLToPath } from 'node:url';
|
|
6
|
-
import js from '@eslint/js';
|
|
7
|
-
import { FlatCompat } from '@eslint/eslintrc';
|
|
8
|
-
|
|
9
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
10
|
-
const __dirname = path.dirname(__filename);
|
|
11
|
-
const compat = new FlatCompat({
|
|
12
|
-
baseDirectory: __dirname,
|
|
13
|
-
recommendedConfig: js.configs.recommended,
|
|
14
|
-
allConfig: js.configs.all,
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
export default [
|
|
18
|
-
...compat.extends('plugin:@typescript-eslint/recommended'),
|
|
19
|
-
{
|
|
20
|
-
plugins: {
|
|
21
|
-
'@typescript-eslint': typescriptEslint,
|
|
22
|
-
html,
|
|
23
|
-
},
|
|
24
|
-
|
|
25
|
-
languageOptions: {
|
|
26
|
-
parser: tsParser,
|
|
27
|
-
},
|
|
28
|
-
|
|
29
|
-
settings: {
|
|
30
|
-
'import/resolver': {
|
|
31
|
-
node: {
|
|
32
|
-
extensions: ['.ts', '.tsx'],
|
|
33
|
-
moduleDirectory: ['node_modules', 'src', 'demo'],
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
},
|
|
37
|
-
|
|
38
|
-
rules: {
|
|
39
|
-
'@typescript-eslint/no-unsafe-function-type': 'warn',
|
|
40
|
-
'@typescript-eslint/no-unused-vars': 'warn',
|
|
41
|
-
'@typescript-eslint/no-explicit-any': 'warn',
|
|
42
|
-
},
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
ignores: ['**/*.js', '**/*.mjs'],
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
files: ['**/*.test.ts'],
|
|
49
|
-
rules: {
|
|
50
|
-
'@typescript-eslint/no-unused-expressions': 'off',
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
|
-
];
|
|
1
|
+
import typescriptEslint from '@typescript-eslint/eslint-plugin';
|
|
2
|
+
import html from 'eslint-plugin-html';
|
|
3
|
+
import tsParser from '@typescript-eslint/parser';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import js from '@eslint/js';
|
|
7
|
+
import { FlatCompat } from '@eslint/eslintrc';
|
|
8
|
+
|
|
9
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
10
|
+
const __dirname = path.dirname(__filename);
|
|
11
|
+
const compat = new FlatCompat({
|
|
12
|
+
baseDirectory: __dirname,
|
|
13
|
+
recommendedConfig: js.configs.recommended,
|
|
14
|
+
allConfig: js.configs.all,
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
export default [
|
|
18
|
+
...compat.extends('plugin:@typescript-eslint/recommended'),
|
|
19
|
+
{
|
|
20
|
+
plugins: {
|
|
21
|
+
'@typescript-eslint': typescriptEslint,
|
|
22
|
+
html,
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
languageOptions: {
|
|
26
|
+
parser: tsParser,
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
settings: {
|
|
30
|
+
'import/resolver': {
|
|
31
|
+
node: {
|
|
32
|
+
extensions: ['.ts', '.tsx'],
|
|
33
|
+
moduleDirectory: ['node_modules', 'src', 'demo'],
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
rules: {
|
|
39
|
+
'@typescript-eslint/no-unsafe-function-type': 'warn',
|
|
40
|
+
'@typescript-eslint/no-unused-vars': 'warn',
|
|
41
|
+
'@typescript-eslint/no-explicit-any': 'warn',
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
ignores: ['**/*.js', '**/*.mjs'],
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
files: ['**/*.test.ts'],
|
|
49
|
+
rules: {
|
|
50
|
+
'@typescript-eslint/no-unused-expressions': 'off',
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
];
|
package/index.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import { IATopNav } from './src/ia-topnav';
|
|
2
|
-
|
|
3
|
-
export { IATopNav };
|
|
1
|
+
import { IATopNav } from './src/ia-topnav';
|
|
2
|
+
|
|
3
|
+
export { IATopNav };
|
|
4
|
+
export type { IATopNavSearchSlotMode } from './src/models';
|