@internetarchive/ia-topnav 1.4.1 → 2.0.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/src/data/menus.js +0 -2
- package/dist/src/data/menus.js.map +1 -1
- package/dist/src/ia-topnav.d.ts +7 -10
- package/dist/src/ia-topnav.js +95 -133
- package/dist/src/ia-topnav.js.map +1 -1
- package/dist/src/login-button.js +17 -17
- package/dist/src/login-button.js.map +1 -1
- package/dist/src/models.d.ts +0 -4
- package/dist/src/models.js.map +1 -1
- package/dist/src/primary-nav.d.ts +5 -4
- package/dist/src/primary-nav.js +98 -119
- package/dist/src/primary-nav.js.map +1 -1
- package/dist/src/styles/ia-topnav.js +82 -87
- package/dist/src/styles/ia-topnav.js.map +1 -1
- package/dist/src/styles/primary-nav.js +353 -308
- package/dist/src/styles/primary-nav.js.map +1 -1
- package/dist/test/ia-topnav.test.js +27 -69
- package/dist/test/ia-topnav.test.js.map +1 -1
- package/dist/test/primary-nav.test.js +38 -9
- package/dist/test/primary-nav.test.js.map +1 -1
- package/eslint.config.mjs +53 -53
- package/package.json +72 -72
- package/prettier.config.js +9 -9
- package/src/data/menus.ts +650 -652
- package/src/ia-topnav.ts +318 -366
- package/src/login-button.ts +78 -78
- package/src/models.ts +58 -63
- package/src/primary-nav.ts +277 -296
- package/src/styles/ia-topnav.ts +85 -90
- package/src/styles/primary-nav.ts +356 -311
- package/ssl/server.key +28 -28
- package/test/ia-topnav.test.ts +282 -343
- package/test/primary-nav.test.ts +135 -94
- package/tsconfig.json +31 -31
- package/web-dev-server.config.mjs +32 -32
- package/web-test-runner.config.mjs +41 -41
- package/dist/src/lib/location-handler.d.ts +0 -1
- package/dist/src/lib/location-handler.js +0 -5
- package/dist/src/lib/location-handler.js.map +0 -1
- package/dist/src/nav-search.d.ts +0 -19
- package/dist/src/nav-search.js +0 -127
- package/dist/src/nav-search.js.map +0 -1
- package/dist/src/search-menu.d.ts +0 -20
- package/dist/src/search-menu.js +0 -162
- package/dist/src/search-menu.js.map +0 -1
- package/dist/src/styles/nav-search.d.ts +0 -2
- package/dist/src/styles/nav-search.js +0 -136
- package/dist/src/styles/nav-search.js.map +0 -1
- package/dist/src/styles/search-menu.d.ts +0 -2
- package/dist/src/styles/search-menu.js +0 -118
- package/dist/src/styles/search-menu.js.map +0 -1
- package/dist/test/nav-search.test.d.ts +0 -1
- package/dist/test/nav-search.test.js +0 -47
- package/dist/test/nav-search.test.js.map +0 -1
- package/dist/test/search-menu.test.d.ts +0 -1
- package/dist/test/search-menu.test.js +0 -42
- package/dist/test/search-menu.test.js.map +0 -1
- package/src/lib/location-handler.ts +0 -5
- package/src/nav-search.ts +0 -117
- package/src/search-menu.ts +0 -156
- package/src/styles/nav-search.ts +0 -136
- package/src/styles/search-menu.ts +0 -118
- package/test/nav-search.test.ts +0 -70
- package/test/search-menu.test.ts +0 -58
package/dist/src/primary-nav.js
CHANGED
|
@@ -4,11 +4,9 @@ import TrackedElement from './tracked-element';
|
|
|
4
4
|
import icons from './assets/img/icons';
|
|
5
5
|
import './assets/img/hamburger';
|
|
6
6
|
import './login-button';
|
|
7
|
-
import './nav-search';
|
|
8
7
|
import './media-menu';
|
|
9
8
|
import logoWordmarkStacked from './assets/img/wordmark-stacked';
|
|
10
9
|
import primaryNavCSS from './styles/primary-nav';
|
|
11
|
-
import locationHandler from './lib/location-handler';
|
|
12
10
|
import formatUrl from './lib/format-url';
|
|
13
11
|
import { customElement, property } from 'lit/decorators.js';
|
|
14
12
|
import { defaultTopNavConfig } from './data/menus';
|
|
@@ -21,8 +19,6 @@ let PrimaryNav = class PrimaryNav extends TrackedElement {
|
|
|
21
19
|
this.config = defaultTopNavConfig;
|
|
22
20
|
this.openMenu = '';
|
|
23
21
|
this.screenName = '';
|
|
24
|
-
this.searchIn = '';
|
|
25
|
-
this.searchQuery = '';
|
|
26
22
|
this.secondIdentitySlotMode = '';
|
|
27
23
|
this.selectedMenuOption = '';
|
|
28
24
|
this.signedOutMenuOpen = false;
|
|
@@ -98,30 +94,30 @@ let PrimaryNav = class PrimaryNav extends TrackedElement {
|
|
|
98
94
|
var _a;
|
|
99
95
|
const userMenuClass = this.openMenu === 'user' ? 'active' : '';
|
|
100
96
|
const userMenuToolTip = this.openMenu === 'user' ? 'Close user menu' : 'Expand user menu';
|
|
101
|
-
return html `
|
|
102
|
-
<button
|
|
103
|
-
class="user-menu ${userMenuClass}"
|
|
104
|
-
title="${userMenuToolTip}"
|
|
105
|
-
@click="${this.toggleUserMenu}"
|
|
106
|
-
data-event-click-tracking="${(_a = this.config) === null || _a === void 0 ? void 0 : _a.eventCategory}|NavUserMenu"
|
|
107
|
-
>
|
|
108
|
-
<img
|
|
109
|
-
src="${this.mediaBaseHost}${this.userProfileImagePath}"
|
|
110
|
-
alt="Profile picture for ${this.screenName}"
|
|
111
|
-
/>
|
|
112
|
-
<span class="screen-name" dir="auto">${this.screenName}</span>
|
|
113
|
-
</button>
|
|
97
|
+
return html `
|
|
98
|
+
<button
|
|
99
|
+
class="user-menu ${userMenuClass}"
|
|
100
|
+
title="${userMenuToolTip}"
|
|
101
|
+
@click="${this.toggleUserMenu}"
|
|
102
|
+
data-event-click-tracking="${(_a = this.config) === null || _a === void 0 ? void 0 : _a.eventCategory}|NavUserMenu"
|
|
103
|
+
>
|
|
104
|
+
<img
|
|
105
|
+
src="${this.mediaBaseHost}${this.userProfileImagePath}"
|
|
106
|
+
alt="Profile picture for ${this.screenName}"
|
|
107
|
+
/>
|
|
108
|
+
<span class="screen-name" dir="auto">${this.screenName}</span>
|
|
109
|
+
</button>
|
|
114
110
|
`;
|
|
115
111
|
}
|
|
116
112
|
get loginIcon() {
|
|
117
|
-
return html `
|
|
118
|
-
<login-button
|
|
119
|
-
.baseHost=${this.baseHost}
|
|
120
|
-
.config=${this.config}
|
|
121
|
-
.dropdownOpen=${this.signedOutMenuOpen}
|
|
122
|
-
.openMenu=${this.openMenu}
|
|
123
|
-
@signedOutMenuToggled=${this.signedOutMenuToggled}
|
|
124
|
-
></login-button>
|
|
113
|
+
return html `
|
|
114
|
+
<login-button
|
|
115
|
+
.baseHost=${this.baseHost}
|
|
116
|
+
.config=${this.config}
|
|
117
|
+
.dropdownOpen=${this.signedOutMenuOpen}
|
|
118
|
+
.openMenu=${this.openMenu}
|
|
119
|
+
@signedOutMenuToggled=${this.signedOutMenuToggled}
|
|
120
|
+
></login-button>
|
|
125
121
|
`;
|
|
126
122
|
}
|
|
127
123
|
get searchMenuOpen() {
|
|
@@ -130,76 +126,64 @@ let PrimaryNav = class PrimaryNav extends TrackedElement {
|
|
|
130
126
|
get allowSecondaryIcon() {
|
|
131
127
|
return this.secondIdentitySlotMode === 'allow';
|
|
132
128
|
}
|
|
133
|
-
|
|
134
|
-
|
|
129
|
+
/**
|
|
130
|
+
* The search slot container, rendered between media-menu and
|
|
131
|
+
* right-side-section so it sits left of the Upload button on desktop.
|
|
132
|
+
*/
|
|
133
|
+
get searchSlotContainer() {
|
|
135
134
|
if (this.hideSearch)
|
|
136
135
|
return nothing;
|
|
137
|
-
return html `
|
|
138
|
-
<
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
data-event-click-tracking="${(_a = this.config) === null || _a === void 0 ? void 0 : _a.eventCategory}|NavSearchOpen"
|
|
142
|
-
>
|
|
143
|
-
${icons.search}
|
|
144
|
-
</button>
|
|
145
|
-
<nav-search
|
|
146
|
-
.baseHost=${this.baseHost}
|
|
147
|
-
.config=${this.config}
|
|
148
|
-
.locationHandler=${locationHandler}
|
|
149
|
-
.open=${this.searchMenuOpen}
|
|
150
|
-
.openMenu=${this.openMenu}
|
|
151
|
-
.searchIn=${this.searchIn}
|
|
152
|
-
.searchQuery=${this.searchQuery}
|
|
153
|
-
@blur=${this.emitNavSearchBlurEvent}
|
|
154
|
-
></nav-search>
|
|
136
|
+
return html `
|
|
137
|
+
<div class="search-container ${this.searchMenuOpen ? 'open' : ''}">
|
|
138
|
+
<slot name="search"></slot>
|
|
139
|
+
</div>
|
|
155
140
|
`;
|
|
156
141
|
}
|
|
157
|
-
|
|
142
|
+
get searchMenu() {
|
|
158
143
|
var _a;
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
this.
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
}));
|
|
144
|
+
if (this.hideSearch)
|
|
145
|
+
return nothing;
|
|
146
|
+
return html `
|
|
147
|
+
<button
|
|
148
|
+
class="search-trigger"
|
|
149
|
+
@click="${this.toggleSearchMenu}"
|
|
150
|
+
data-event-click-tracking="${(_a = this.config) === null || _a === void 0 ? void 0 : _a.eventCategory}|NavSearchOpen"
|
|
151
|
+
>
|
|
152
|
+
${icons.search}
|
|
153
|
+
</button>
|
|
154
|
+
`;
|
|
171
155
|
}
|
|
172
156
|
get mobileDonateHeart() {
|
|
173
|
-
return html `
|
|
174
|
-
<a
|
|
175
|
-
class="mobile-donate-link"
|
|
176
|
-
.href=${formatUrl('/donate/?origin=iawww-mbhrt', this.baseHost)}
|
|
177
|
-
>
|
|
178
|
-
${icons.donateUnpadded}
|
|
179
|
-
<span class="sr-only">"Donate to the archive"</span>
|
|
180
|
-
</a>
|
|
157
|
+
return html `
|
|
158
|
+
<a
|
|
159
|
+
class="mobile-donate-link"
|
|
160
|
+
.href=${formatUrl('/donate/?origin=iawww-mbhrt', this.baseHost)}
|
|
161
|
+
>
|
|
162
|
+
${icons.donateUnpadded}
|
|
163
|
+
<span class="sr-only">"Donate to the archive"</span>
|
|
164
|
+
</a>
|
|
181
165
|
`;
|
|
182
166
|
}
|
|
183
167
|
get uploadButtonTemplate() {
|
|
184
|
-
return html ` <a
|
|
185
|
-
.href="${formatUrl('/upload', this.baseHost)}"
|
|
186
|
-
class="upload"
|
|
187
|
-
@focus=${this.toggleMediaMenu}
|
|
188
|
-
>
|
|
189
|
-
${icons.upload}
|
|
190
|
-
<span>Upload</span>
|
|
168
|
+
return html ` <a
|
|
169
|
+
.href="${formatUrl('/upload', this.baseHost)}"
|
|
170
|
+
class="upload"
|
|
171
|
+
@focus=${this.toggleMediaMenu}
|
|
172
|
+
>
|
|
173
|
+
${icons.upload}
|
|
174
|
+
<span>Upload</span>
|
|
191
175
|
</a>`;
|
|
192
176
|
}
|
|
193
177
|
get userStateTemplate() {
|
|
194
|
-
return html `<div class="user-info">
|
|
195
|
-
${this.username ? this.userIcon : this.loginIcon}
|
|
178
|
+
return html `<div class="user-info">
|
|
179
|
+
${this.username ? this.userIcon : this.loginIcon}
|
|
196
180
|
</div>`;
|
|
197
181
|
}
|
|
198
182
|
get secondLogoSlot() {
|
|
199
183
|
return this.allowSecondaryIcon
|
|
200
|
-
? html `
|
|
201
|
-
<slot name="opt-sec-logo"></slot>
|
|
202
|
-
<slot name="opt-sec-logo-mobile"></slot>
|
|
184
|
+
? html `
|
|
185
|
+
<slot name="opt-sec-logo"></slot>
|
|
186
|
+
<slot name="opt-sec-logo-mobile"></slot>
|
|
203
187
|
`
|
|
204
188
|
: nothing;
|
|
205
189
|
}
|
|
@@ -209,41 +193,42 @@ let PrimaryNav = class PrimaryNav extends TrackedElement {
|
|
|
209
193
|
render() {
|
|
210
194
|
var _a, _b;
|
|
211
195
|
// const mediaMenuTabIndex = this.openMenu === 'media' ? '' : '-1';
|
|
212
|
-
return html `
|
|
213
|
-
<nav class=${this.hideSearch ? 'hide-search' : ''}>
|
|
214
|
-
<button
|
|
215
|
-
class="hamburger"
|
|
216
|
-
@click="${this.toggleMediaMenu}"
|
|
217
|
-
data-event-click-tracking="${(_a = this.config) === null || _a === void 0 ? void 0 : _a.eventCategory}|NavHamburger"
|
|
218
|
-
title="Open main menu"
|
|
219
|
-
>
|
|
220
|
-
<icon-hamburger ?active=${this.openMenu === 'media'}></icon-hamburger>
|
|
221
|
-
</button>
|
|
222
|
-
|
|
223
|
-
<div class=${`branding ${this.secondLogoClass}`}>
|
|
224
|
-
<a
|
|
225
|
-
.href=${formatUrl('/', this.baseHost)}
|
|
226
|
-
@click=${this.trackClick}
|
|
227
|
-
data-event-click-tracking="${(_b = this.config) === null || _b === void 0 ? void 0 : _b.eventCategory}|NavHome"
|
|
228
|
-
title="Go home"
|
|
229
|
-
class="link-home"
|
|
230
|
-
>${icons.iaLogo}${logoWordmarkStacked}</a
|
|
231
|
-
>
|
|
232
|
-
${this.secondLogoSlot}
|
|
233
|
-
</div>
|
|
234
|
-
<media-menu
|
|
235
|
-
.baseHost=${this.baseHost}
|
|
236
|
-
.config=${this.config}
|
|
237
|
-
?mediaMenuAnimate=${this.mediaMenuAnimate}
|
|
238
|
-
.selectedMenuOption=${this.selectedMenuOption}
|
|
239
|
-
.openMenu=${this.openMenu}
|
|
240
|
-
.currentTab=${this.currentTab}
|
|
241
|
-
></media-menu>
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
${this.
|
|
245
|
-
|
|
246
|
-
|
|
196
|
+
return html `
|
|
197
|
+
<nav class=${this.hideSearch ? 'hide-search' : ''}>
|
|
198
|
+
<button
|
|
199
|
+
class="hamburger"
|
|
200
|
+
@click="${this.toggleMediaMenu}"
|
|
201
|
+
data-event-click-tracking="${(_a = this.config) === null || _a === void 0 ? void 0 : _a.eventCategory}|NavHamburger"
|
|
202
|
+
title="Open main menu"
|
|
203
|
+
>
|
|
204
|
+
<icon-hamburger ?active=${this.openMenu === 'media'}></icon-hamburger>
|
|
205
|
+
</button>
|
|
206
|
+
|
|
207
|
+
<div class=${`branding ${this.secondLogoClass}`}>
|
|
208
|
+
<a
|
|
209
|
+
.href=${formatUrl('/', this.baseHost)}
|
|
210
|
+
@click=${this.trackClick}
|
|
211
|
+
data-event-click-tracking="${(_b = this.config) === null || _b === void 0 ? void 0 : _b.eventCategory}|NavHome"
|
|
212
|
+
title="Go home"
|
|
213
|
+
class="link-home"
|
|
214
|
+
>${icons.iaLogo}${logoWordmarkStacked}</a
|
|
215
|
+
>
|
|
216
|
+
${this.secondLogoSlot}
|
|
217
|
+
</div>
|
|
218
|
+
<media-menu
|
|
219
|
+
.baseHost=${this.baseHost}
|
|
220
|
+
.config=${this.config}
|
|
221
|
+
?mediaMenuAnimate=${this.mediaMenuAnimate}
|
|
222
|
+
.selectedMenuOption=${this.selectedMenuOption}
|
|
223
|
+
.openMenu=${this.openMenu}
|
|
224
|
+
.currentTab=${this.currentTab}
|
|
225
|
+
></media-menu>
|
|
226
|
+
${this.searchSlotContainer}
|
|
227
|
+
<div class="right-side-section">
|
|
228
|
+
${this.mobileDonateHeart} ${this.userStateTemplate}
|
|
229
|
+
${this.uploadButtonTemplate} ${this.searchMenu}
|
|
230
|
+
</div>
|
|
231
|
+
</nav>
|
|
247
232
|
`;
|
|
248
233
|
}
|
|
249
234
|
};
|
|
@@ -265,12 +250,6 @@ __decorate([
|
|
|
265
250
|
__decorate([
|
|
266
251
|
property({ type: String })
|
|
267
252
|
], PrimaryNav.prototype, "screenName", void 0);
|
|
268
|
-
__decorate([
|
|
269
|
-
property({ type: String })
|
|
270
|
-
], PrimaryNav.prototype, "searchIn", void 0);
|
|
271
|
-
__decorate([
|
|
272
|
-
property({ type: String })
|
|
273
|
-
], PrimaryNav.prototype, "searchQuery", void 0);
|
|
274
253
|
__decorate([
|
|
275
254
|
property({ type: String })
|
|
276
255
|
], PrimaryNav.prototype, "secondIdentitySlotMode", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primary-nav.js","sourceRoot":"","sources":["../../src/primary-nav.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, PropertyValues } from 'lit';\nimport TrackedElement from './tracked-element';\nimport icons from './assets/img/icons';\nimport './assets/img/hamburger';\nimport './login-button';\nimport './nav-search';\nimport './media-menu';\nimport logoWordmarkStacked from './assets/img/wordmark-stacked';\nimport primaryNavCSS from './styles/primary-nav';\nimport locationHandler from './lib/location-handler';\nimport formatUrl from './lib/format-url';\nimport { customElement, property } from 'lit/decorators.js';\nimport { IATopNavConfig, IATopNavSecondIdentitySlotMode } from './models';\nimport { defaultTopNavConfig } from './data/menus';\n\n@customElement('primary-nav')\nexport class PrimaryNav extends TrackedElement {\n @property({ type: String }) mediaBaseHost = 'https://archive.org';\n @property({ type: String }) baseHost = '';\n @property({ type: Boolean }) hideSearch = false;\n @property({ type: Object }) config: IATopNavConfig = defaultTopNavConfig;\n @property({ type: String }) openMenu = '';\n @property({ type: String }) screenName = '';\n @property({ type: String }) searchIn = '';\n @property({ type: String }) searchQuery = '';\n @property({ type: String })\n secondIdentitySlotMode: IATopNavSecondIdentitySlotMode = '';\n @property({ type: String }) selectedMenuOption = '';\n @property({ type: Boolean }) signedOutMenuOpen = false;\n @property({ type: Boolean }) userMenuOpen = false;\n @property({ type: Boolean }) mediaMenuAnimate = false;\n @property({ type: String }) username = '';\n @property({ type: String }) userProfileImagePath = '';\n @property({ type: Object }) currentTab:\n | { mediatype: string; moveTo: string }\n | undefined;\n signedOutMenuToggled: unknown;\n\n static get styles() {\n return primaryNavCSS;\n }\n\n toggleMediaMenu(e: Event) {\n this.trackClick(e);\n this.dispatchEvent(\n new CustomEvent('menuToggled', {\n detail: {\n menuName: 'media',\n },\n }),\n );\n }\n\n toggleSearchMenu(e: Event) {\n this.trackClick(e);\n this.dispatchEvent(\n new CustomEvent('menuToggled', {\n detail: {\n menuName: 'search',\n },\n }),\n );\n }\n\n toggleUserMenu(e: Event) {\n this.trackClick(e);\n this.dispatchEvent(\n new CustomEvent('menuToggled', {\n detail: {\n menuName: 'user',\n },\n }),\n );\n }\n\n updated(props: PropertyValues) {\n if (props.has('currentTab')) {\n // early return\n if (!this.currentTab || Object.keys(this.currentTab).length === 0)\n return nothing;\n\n const isUserMenuTab =\n this.currentTab && this.currentTab.mediatype === 'usermenu';\n if (isUserMenuTab) {\n const mediaButtons = Array.from(\n this.shadowRoot\n ?.querySelector('media-menu')\n ?.shadowRoot?.querySelectorAll('media-button') ?? [],\n );\n const lastMediaButton = mediaButtons.filter((element) => {\n return element.shadowRoot\n ?.querySelector('a')\n ?.classList.contains('images');\n });\n\n let nextElement;\n if (this.username) {\n nextElement = this.shadowRoot?.querySelector('a.upload');\n } else {\n nextElement = this.shadowRoot\n ?.querySelector('login-button')\n ?.shadowRoot?.querySelector('span a');\n }\n\n const menuItemElement =\n lastMediaButton[0]?.shadowRoot?.querySelector('a.menu-item');\n\n const focusElement =\n this.currentTab.moveTo === 'next' ? nextElement : menuItemElement;\n\n if (focusElement) {\n (focusElement as HTMLElement).focus();\n }\n } else if (this.currentTab.moveTo === 'next') {\n if (this.shadowRoot?.querySelector('.user-menu')) {\n (this.shadowRoot?.querySelector('.user-menu') as HTMLElement).focus();\n } else {\n (\n this.shadowRoot\n ?.querySelector('login-button')\n ?.shadowRoot?.querySelectorAll('span a')[0] as HTMLElement\n )?.focus();\n }\n }\n }\n }\n\n get userIcon() {\n const userMenuClass = this.openMenu === 'user' ? 'active' : '';\n const userMenuToolTip =\n this.openMenu === 'user' ? 'Close user menu' : 'Expand user menu';\n\n return html`\n <button\n class=\"user-menu ${userMenuClass}\"\n title=\"${userMenuToolTip}\"\n @click=\"${this.toggleUserMenu}\"\n data-event-click-tracking=\"${this.config?.eventCategory}|NavUserMenu\"\n >\n <img\n src=\"${this.mediaBaseHost}${this.userProfileImagePath}\"\n alt=\"Profile picture for ${this.screenName}\"\n />\n <span class=\"screen-name\" dir=\"auto\">${this.screenName}</span>\n </button>\n `;\n }\n\n get loginIcon() {\n return html`\n <login-button\n .baseHost=${this.baseHost}\n .config=${this.config}\n .dropdownOpen=${this.signedOutMenuOpen}\n .openMenu=${this.openMenu}\n @signedOutMenuToggled=${this.signedOutMenuToggled}\n ></login-button>\n `;\n }\n\n get searchMenuOpen() {\n return this.openMenu === 'search';\n }\n\n get allowSecondaryIcon() {\n return this.secondIdentitySlotMode === 'allow';\n }\n\n get searchMenu() {\n if (this.hideSearch) return nothing;\n\n return html`\n <button\n class=\"search-trigger\"\n @click=\"${this.toggleSearchMenu}\"\n data-event-click-tracking=\"${this.config?.eventCategory}|NavSearchOpen\"\n >\n ${icons.search}\n </button>\n <nav-search\n .baseHost=${this.baseHost}\n .config=${this.config}\n .locationHandler=${locationHandler}\n .open=${this.searchMenuOpen}\n .openMenu=${this.openMenu}\n .searchIn=${this.searchIn}\n .searchQuery=${this.searchQuery}\n @blur=${this.emitNavSearchBlurEvent}\n ></nav-search>\n `;\n }\n\n private emitNavSearchBlurEvent(e: FocusEvent) {\n const relatedTarget = e.relatedTarget as HTMLElement;\n const isUploadButton = relatedTarget?.classList.contains('upload');\n\n if (isUploadButton) {\n (this.shadowRoot?.querySelector('a.upload') as HTMLElement).focus();\n }\n\n this.dispatchEvent(\n new CustomEvent('navSearchBlur', {\n detail: {\n isUploadButton: !!isUploadButton,\n },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n get mobileDonateHeart() {\n return html`\n <a\n class=\"mobile-donate-link\"\n .href=${formatUrl(\n '/donate/?origin=iawww-mbhrt' as string & Location,\n this.baseHost,\n )}\n >\n ${icons.donateUnpadded}\n <span class=\"sr-only\">\"Donate to the archive\"</span>\n </a>\n `;\n }\n\n get uploadButtonTemplate() {\n return html` <a\n .href=\"${formatUrl('/upload' as string & Location, this.baseHost)}\"\n class=\"upload\"\n @focus=${this.toggleMediaMenu}\n >\n ${icons.upload}\n <span>Upload</span>\n </a>`;\n }\n\n get userStateTemplate() {\n return html`<div class=\"user-info\">\n ${this.username ? this.userIcon : this.loginIcon}\n </div>`;\n }\n\n get secondLogoSlot() {\n return this.allowSecondaryIcon\n ? html`\n <slot name=\"opt-sec-logo\"></slot>\n <slot name=\"opt-sec-logo-mobile\"></slot>\n `\n : nothing;\n }\n\n get secondLogoClass() {\n return this.allowSecondaryIcon ? 'second-logo' : '';\n }\n\n render() {\n // const mediaMenuTabIndex = this.openMenu === 'media' ? '' : '-1';\n return html`\n <nav class=${this.hideSearch ? 'hide-search' : ''}>\n <button\n class=\"hamburger\"\n @click=\"${this.toggleMediaMenu}\"\n data-event-click-tracking=\"${this.config?.eventCategory}|NavHamburger\"\n title=\"Open main menu\"\n >\n <icon-hamburger ?active=${this.openMenu === 'media'}></icon-hamburger>\n </button>\n\n <div class=${`branding ${this.secondLogoClass}`}>\n <a\n .href=${formatUrl('/' as string & Location, this.baseHost)}\n @click=${this.trackClick}\n data-event-click-tracking=\"${this.config?.eventCategory}|NavHome\"\n title=\"Go home\"\n class=\"link-home\"\n >${icons.iaLogo}${logoWordmarkStacked}</a\n >\n ${this.secondLogoSlot}\n </div>\n <media-menu\n .baseHost=${this.baseHost}\n .config=${this.config}\n ?mediaMenuAnimate=${this.mediaMenuAnimate}\n .selectedMenuOption=${this.selectedMenuOption}\n .openMenu=${this.openMenu}\n .currentTab=${this.currentTab}\n ></media-menu>\n <div class=\"right-side-section\">\n ${this.mobileDonateHeart} ${this.userStateTemplate}\n ${this.uploadButtonTemplate} ${this.searchMenu}\n </div>\n </nav>\n `;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"primary-nav.js","sourceRoot":"","sources":["../../src/primary-nav.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, PropertyValues } from 'lit';\r\nimport TrackedElement from './tracked-element';\r\nimport icons from './assets/img/icons';\r\nimport './assets/img/hamburger';\r\nimport './login-button';\r\nimport './media-menu';\r\nimport logoWordmarkStacked from './assets/img/wordmark-stacked';\r\nimport primaryNavCSS from './styles/primary-nav';\r\nimport formatUrl from './lib/format-url';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { IATopNavConfig, IATopNavSecondIdentitySlotMode } from './models';\r\nimport { defaultTopNavConfig } from './data/menus';\r\n\r\n@customElement('primary-nav')\r\nexport class PrimaryNav extends TrackedElement {\r\n @property({ type: String }) mediaBaseHost = 'https://archive.org';\r\n @property({ type: String }) baseHost = '';\r\n @property({ type: Boolean }) hideSearch = false;\r\n @property({ type: Object }) config: IATopNavConfig = defaultTopNavConfig;\r\n @property({ type: String }) openMenu = '';\r\n @property({ type: String }) screenName = '';\r\n @property({ type: String })\r\n secondIdentitySlotMode: IATopNavSecondIdentitySlotMode = '';\r\n @property({ type: String }) selectedMenuOption = '';\r\n @property({ type: Boolean }) signedOutMenuOpen = false;\r\n @property({ type: Boolean }) userMenuOpen = false;\r\n @property({ type: Boolean }) mediaMenuAnimate = false;\r\n @property({ type: String }) username = '';\r\n @property({ type: String }) userProfileImagePath = '';\r\n @property({ type: Object }) currentTab:\r\n | { mediatype: string; moveTo: string }\r\n | undefined;\r\n signedOutMenuToggled: unknown;\r\n\r\n static get styles() {\r\n return primaryNavCSS;\r\n }\r\n\r\n toggleMediaMenu(e: Event) {\r\n this.trackClick(e);\r\n this.dispatchEvent(\r\n new CustomEvent('menuToggled', {\r\n detail: {\r\n menuName: 'media',\r\n },\r\n }),\r\n );\r\n }\r\n\r\n toggleSearchMenu(e: Event) {\r\n this.trackClick(e);\r\n this.dispatchEvent(\r\n new CustomEvent('menuToggled', {\r\n detail: {\r\n menuName: 'search',\r\n },\r\n }),\r\n );\r\n }\r\n\r\n toggleUserMenu(e: Event) {\r\n this.trackClick(e);\r\n this.dispatchEvent(\r\n new CustomEvent('menuToggled', {\r\n detail: {\r\n menuName: 'user',\r\n },\r\n }),\r\n );\r\n }\r\n\r\n updated(props: PropertyValues) {\r\n if (props.has('currentTab')) {\r\n // early return\r\n if (!this.currentTab || Object.keys(this.currentTab).length === 0)\r\n return nothing;\r\n\r\n const isUserMenuTab =\r\n this.currentTab && this.currentTab.mediatype === 'usermenu';\r\n if (isUserMenuTab) {\r\n const mediaButtons = Array.from(\r\n this.shadowRoot\r\n ?.querySelector('media-menu')\r\n ?.shadowRoot?.querySelectorAll('media-button') ?? [],\r\n );\r\n const lastMediaButton = mediaButtons.filter((element) => {\r\n return element.shadowRoot\r\n ?.querySelector('a')\r\n ?.classList.contains('images');\r\n });\r\n\r\n let nextElement;\r\n if (this.username) {\r\n nextElement = this.shadowRoot?.querySelector('a.upload');\r\n } else {\r\n nextElement = this.shadowRoot\r\n ?.querySelector('login-button')\r\n ?.shadowRoot?.querySelector('span a');\r\n }\r\n\r\n const menuItemElement =\r\n lastMediaButton[0]?.shadowRoot?.querySelector('a.menu-item');\r\n\r\n const focusElement =\r\n this.currentTab.moveTo === 'next' ? nextElement : menuItemElement;\r\n\r\n if (focusElement) {\r\n (focusElement as HTMLElement).focus();\r\n }\r\n } else if (this.currentTab.moveTo === 'next') {\r\n if (this.shadowRoot?.querySelector('.user-menu')) {\r\n (this.shadowRoot?.querySelector('.user-menu') as HTMLElement).focus();\r\n } else {\r\n (\r\n this.shadowRoot\r\n ?.querySelector('login-button')\r\n ?.shadowRoot?.querySelectorAll('span a')[0] as HTMLElement\r\n )?.focus();\r\n }\r\n }\r\n }\r\n }\r\n\r\n get userIcon() {\r\n const userMenuClass = this.openMenu === 'user' ? 'active' : '';\r\n const userMenuToolTip =\r\n this.openMenu === 'user' ? 'Close user menu' : 'Expand user menu';\r\n\r\n return html`\r\n <button\r\n class=\"user-menu ${userMenuClass}\"\r\n title=\"${userMenuToolTip}\"\r\n @click=\"${this.toggleUserMenu}\"\r\n data-event-click-tracking=\"${this.config?.eventCategory}|NavUserMenu\"\r\n >\r\n <img\r\n src=\"${this.mediaBaseHost}${this.userProfileImagePath}\"\r\n alt=\"Profile picture for ${this.screenName}\"\r\n />\r\n <span class=\"screen-name\" dir=\"auto\">${this.screenName}</span>\r\n </button>\r\n `;\r\n }\r\n\r\n get loginIcon() {\r\n return html`\r\n <login-button\r\n .baseHost=${this.baseHost}\r\n .config=${this.config}\r\n .dropdownOpen=${this.signedOutMenuOpen}\r\n .openMenu=${this.openMenu}\r\n @signedOutMenuToggled=${this.signedOutMenuToggled}\r\n ></login-button>\r\n `;\r\n }\r\n\r\n get searchMenuOpen() {\r\n return this.openMenu === 'search';\r\n }\r\n\r\n get allowSecondaryIcon() {\r\n return this.secondIdentitySlotMode === 'allow';\r\n }\r\n\r\n /**\r\n * The search slot container, rendered between media-menu and\r\n * right-side-section so it sits left of the Upload button on desktop.\r\n */\r\n get searchSlotContainer() {\r\n if (this.hideSearch) return nothing;\r\n return html`\r\n <div class=\"search-container ${this.searchMenuOpen ? 'open' : ''}\">\r\n <slot name=\"search\"></slot>\r\n </div>\r\n `;\r\n }\r\n\r\n get searchMenu() {\r\n if (this.hideSearch) return nothing;\r\n\r\n return html`\r\n <button\r\n class=\"search-trigger\"\r\n @click=\"${this.toggleSearchMenu}\"\r\n data-event-click-tracking=\"${this.config?.eventCategory}|NavSearchOpen\"\r\n >\r\n ${icons.search}\r\n </button>\r\n `;\r\n }\r\n\r\n get mobileDonateHeart() {\r\n return html`\r\n <a\r\n class=\"mobile-donate-link\"\r\n .href=${formatUrl(\r\n '/donate/?origin=iawww-mbhrt' as string & Location,\r\n this.baseHost,\r\n )}\r\n >\r\n ${icons.donateUnpadded}\r\n <span class=\"sr-only\">\"Donate to the archive\"</span>\r\n </a>\r\n `;\r\n }\r\n\r\n get uploadButtonTemplate() {\r\n return html` <a\r\n .href=\"${formatUrl('/upload' as string & Location, this.baseHost)}\"\r\n class=\"upload\"\r\n @focus=${this.toggleMediaMenu}\r\n >\r\n ${icons.upload}\r\n <span>Upload</span>\r\n </a>`;\r\n }\r\n\r\n get userStateTemplate() {\r\n return html`<div class=\"user-info\">\r\n ${this.username ? this.userIcon : this.loginIcon}\r\n </div>`;\r\n }\r\n\r\n get secondLogoSlot() {\r\n return this.allowSecondaryIcon\r\n ? html`\r\n <slot name=\"opt-sec-logo\"></slot>\r\n <slot name=\"opt-sec-logo-mobile\"></slot>\r\n `\r\n : nothing;\r\n }\r\n\r\n get secondLogoClass() {\r\n return this.allowSecondaryIcon ? 'second-logo' : '';\r\n }\r\n\r\n render() {\r\n // const mediaMenuTabIndex = this.openMenu === 'media' ? '' : '-1';\r\n return html`\r\n <nav class=${this.hideSearch ? 'hide-search' : ''}>\r\n <button\r\n class=\"hamburger\"\r\n @click=\"${this.toggleMediaMenu}\"\r\n data-event-click-tracking=\"${this.config?.eventCategory}|NavHamburger\"\r\n title=\"Open main menu\"\r\n >\r\n <icon-hamburger ?active=${this.openMenu === 'media'}></icon-hamburger>\r\n </button>\r\n\r\n <div class=${`branding ${this.secondLogoClass}`}>\r\n <a\r\n .href=${formatUrl('/' as string & Location, this.baseHost)}\r\n @click=${this.trackClick}\r\n data-event-click-tracking=\"${this.config?.eventCategory}|NavHome\"\r\n title=\"Go home\"\r\n class=\"link-home\"\r\n >${icons.iaLogo}${logoWordmarkStacked}</a\r\n >\r\n ${this.secondLogoSlot}\r\n </div>\r\n <media-menu\r\n .baseHost=${this.baseHost}\r\n .config=${this.config}\r\n ?mediaMenuAnimate=${this.mediaMenuAnimate}\r\n .selectedMenuOption=${this.selectedMenuOption}\r\n .openMenu=${this.openMenu}\r\n .currentTab=${this.currentTab}\r\n ></media-menu>\r\n ${this.searchSlotContainer}\r\n <div class=\"right-side-section\">\r\n ${this.mobileDonateHeart} ${this.userStateTemplate}\r\n ${this.uploadButtonTemplate} ${this.searchMenu}\r\n </div>\r\n </nav>\r\n `;\r\n }\r\n}\r\n"]}
|
|
@@ -1,90 +1,85 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export default css `
|
|
3
|
-
:host {
|
|
4
|
-
--white: #fff;
|
|
5
|
-
--grey13: #222;
|
|
6
|
-
--grey20: #333;
|
|
7
|
-
--grey40: #666;
|
|
8
|
-
--grey28: #474747;
|
|
9
|
-
--grey60: #999;
|
|
10
|
-
--grey66: #aaa;
|
|
11
|
-
--grey80: #ccc;
|
|
12
|
-
--greya0: #a0a0a0;
|
|
13
|
-
--grey6f: #6f6f6f;
|
|
14
|
-
--errorYellow: #ffcd27;
|
|
15
|
-
|
|
16
|
-
--linkColor: #4b64ff;
|
|
17
|
-
--linkHoverColor: var(--white);
|
|
18
|
-
--subnavLinkColor: var(--grey66);
|
|
19
|
-
--primaryTextColor: var(--white);
|
|
20
|
-
--inverseTextColor: var(--grey20);
|
|
21
|
-
--lightTextColor: var(--grey60);
|
|
22
|
-
--activeColor: var(--white);
|
|
23
|
-
--activeButtonBg: var(--grey20);
|
|
24
|
-
--iconFill: var(--grey60);
|
|
25
|
-
|
|
26
|
-
--
|
|
27
|
-
--
|
|
28
|
-
--
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
--
|
|
32
|
-
|
|
33
|
-
--
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
--
|
|
37
|
-
|
|
38
|
-
--
|
|
39
|
-
--
|
|
40
|
-
|
|
41
|
-
--
|
|
42
|
-
|
|
43
|
-
--
|
|
44
|
-
|
|
45
|
-
--
|
|
46
|
-
--
|
|
47
|
-
|
|
48
|
-
--
|
|
49
|
-
|
|
50
|
-
--
|
|
51
|
-
--
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
@media (max-width: 889px) {
|
|
85
|
-
desktop-subnav {
|
|
86
|
-
display: none;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
2
|
+
export default css `
|
|
3
|
+
:host {
|
|
4
|
+
--white: #fff;
|
|
5
|
+
--grey13: #222;
|
|
6
|
+
--grey20: #333;
|
|
7
|
+
--grey40: #666;
|
|
8
|
+
--grey28: #474747;
|
|
9
|
+
--grey60: #999;
|
|
10
|
+
--grey66: #aaa;
|
|
11
|
+
--grey80: #ccc;
|
|
12
|
+
--greya0: #a0a0a0;
|
|
13
|
+
--grey6f: #6f6f6f;
|
|
14
|
+
--errorYellow: #ffcd27;
|
|
15
|
+
|
|
16
|
+
--linkColor: #4b64ff;
|
|
17
|
+
--linkHoverColor: var(--white);
|
|
18
|
+
--subnavLinkColor: var(--grey66);
|
|
19
|
+
--primaryTextColor: var(--white);
|
|
20
|
+
--inverseTextColor: var(--grey20);
|
|
21
|
+
--lightTextColor: var(--grey60);
|
|
22
|
+
--activeColor: var(--white);
|
|
23
|
+
--activeButtonBg: var(--grey20);
|
|
24
|
+
--iconFill: var(--grey60);
|
|
25
|
+
|
|
26
|
+
--mediaMenuBg: var(--grey13);
|
|
27
|
+
--mediaLabelDesktopColor: var(--grey60);
|
|
28
|
+
--activeDesktopMenuIcon: var(--grey28);
|
|
29
|
+
|
|
30
|
+
--mediaSliderBg: var(--grey20);
|
|
31
|
+
--mediaSliderDesktopBg: var(--grey28);
|
|
32
|
+
|
|
33
|
+
--primaryNavBg: var(--grey13);
|
|
34
|
+
--primaryNavBottomBorder: var(--grey20);
|
|
35
|
+
|
|
36
|
+
--desktopSubnavBg: var(--grey20);
|
|
37
|
+
|
|
38
|
+
--dropdownMenuBg: var(--grey20);
|
|
39
|
+
--dropdownMenuInfoItem: var(--greya0);
|
|
40
|
+
--dropdownMenuDivider: var(--grey40);
|
|
41
|
+
--inverseDropdownMenuInfoItem: var(--grey6f);
|
|
42
|
+
|
|
43
|
+
--loginTextColor: var(--grey60);
|
|
44
|
+
|
|
45
|
+
--themeFontFamily: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
|
46
|
+
--logoWidthTablet: 263px;
|
|
47
|
+
|
|
48
|
+
--savePageSubmitBg: var(--grey13);
|
|
49
|
+
--savePageSubmitText: var(--white);
|
|
50
|
+
--savePageInputBorder: var(--grey60);
|
|
51
|
+
--savePageErrorText: var(--errorYellow);
|
|
52
|
+
|
|
53
|
+
color: var(--primaryTextColor);
|
|
54
|
+
font-family: var(--themeFontFamily);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
primary-nav:focus {
|
|
58
|
+
outline: none !important;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
#close-layer {
|
|
62
|
+
display: none;
|
|
63
|
+
position: fixed;
|
|
64
|
+
top: 0;
|
|
65
|
+
right: 0;
|
|
66
|
+
bottom: 0;
|
|
67
|
+
left: 0;
|
|
68
|
+
z-index: 3;
|
|
69
|
+
}
|
|
70
|
+
#close-layer.visible {
|
|
71
|
+
display: block;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.topnav {
|
|
75
|
+
position: relative;
|
|
76
|
+
z-index: 4;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@media (max-width: 889px) {
|
|
80
|
+
desktop-subnav {
|
|
81
|
+
display: none;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
89
84
|
`;
|
|
90
85
|
//# sourceMappingURL=ia-topnav.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ia-topnav.js","sourceRoot":"","sources":["../../../src/styles/ia-topnav.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,eAAe,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"ia-topnav.js","sourceRoot":"","sources":["../../../src/styles/ia-topnav.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkFjB,CAAC","sourcesContent":["import { css } from 'lit';\r\n\r\nexport default css`\r\n :host {\r\n --white: #fff;\r\n --grey13: #222;\r\n --grey20: #333;\r\n --grey40: #666;\r\n --grey28: #474747;\r\n --grey60: #999;\r\n --grey66: #aaa;\r\n --grey80: #ccc;\r\n --greya0: #a0a0a0;\r\n --grey6f: #6f6f6f;\r\n --errorYellow: #ffcd27;\r\n\r\n --linkColor: #4b64ff;\r\n --linkHoverColor: var(--white);\r\n --subnavLinkColor: var(--grey66);\r\n --primaryTextColor: var(--white);\r\n --inverseTextColor: var(--grey20);\r\n --lightTextColor: var(--grey60);\r\n --activeColor: var(--white);\r\n --activeButtonBg: var(--grey20);\r\n --iconFill: var(--grey60);\r\n\r\n --mediaMenuBg: var(--grey13);\r\n --mediaLabelDesktopColor: var(--grey60);\r\n --activeDesktopMenuIcon: var(--grey28);\r\n\r\n --mediaSliderBg: var(--grey20);\r\n --mediaSliderDesktopBg: var(--grey28);\r\n\r\n --primaryNavBg: var(--grey13);\r\n --primaryNavBottomBorder: var(--grey20);\r\n\r\n --desktopSubnavBg: var(--grey20);\r\n\r\n --dropdownMenuBg: var(--grey20);\r\n --dropdownMenuInfoItem: var(--greya0);\r\n --dropdownMenuDivider: var(--grey40);\r\n --inverseDropdownMenuInfoItem: var(--grey6f);\r\n\r\n --loginTextColor: var(--grey60);\r\n\r\n --themeFontFamily: 'Helvetica Neue', Helvetica, Arial, sans-serif;\r\n --logoWidthTablet: 263px;\r\n\r\n --savePageSubmitBg: var(--grey13);\r\n --savePageSubmitText: var(--white);\r\n --savePageInputBorder: var(--grey60);\r\n --savePageErrorText: var(--errorYellow);\r\n\r\n color: var(--primaryTextColor);\r\n font-family: var(--themeFontFamily);\r\n }\r\n\r\n primary-nav:focus {\r\n outline: none !important;\r\n }\r\n\r\n #close-layer {\r\n display: none;\r\n position: fixed;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 3;\r\n }\r\n #close-layer.visible {\r\n display: block;\r\n }\r\n\r\n .topnav {\r\n position: relative;\r\n z-index: 4;\r\n }\r\n\r\n @media (max-width: 889px) {\r\n desktop-subnav {\r\n display: none;\r\n }\r\n }\r\n`;\r\n"]}
|