@internetarchive/elements 1.1.3-webdev-9226.1 → 1.1.3-webdev-9241.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/README.md +1 -33
- package/dist/src/elements/ia-button/ia-button.d.ts.map +1 -1
- package/dist/src/elements/ia-button/ia-button.js +2 -2
- package/dist/src/elements/ia-button/ia-button.js.map +1 -1
- package/dist/src/elements/ia-combo-box/ia-combo-box.d.ts.map +1 -1
- package/dist/src/elements/ia-combo-box/ia-combo-box.js +2 -3
- package/dist/src/elements/ia-combo-box/ia-combo-box.js.map +1 -1
- package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.d.ts +2 -2
- package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.d.ts.map +1 -1
- package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.js +5 -4
- package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.js.map +1 -1
- package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.d.ts +4 -4
- package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.d.ts.map +1 -1
- package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.js +8 -5
- package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.js.map +1 -1
- package/dist/src/elements/ia-image-viewer/ia-image-viewer.d.ts.map +1 -1
- package/dist/src/elements/ia-image-viewer/ia-image-viewer.js +2 -3
- package/dist/src/elements/ia-image-viewer/ia-image-viewer.js.map +1 -1
- package/dist/src/elements/ia-image-viewer/ia-imgview-controls.d.ts.map +1 -1
- package/dist/src/elements/ia-image-viewer/ia-imgview-controls.js +2 -3
- package/dist/src/elements/ia-image-viewer/ia-imgview-controls.js.map +1 -1
- package/dist/src/elements/ia-image-viewer/ia-imgview-slide.d.ts.map +1 -1
- package/dist/src/elements/ia-image-viewer/ia-imgview-slide.js +2 -3
- package/dist/src/elements/ia-image-viewer/ia-imgview-slide.js.map +1 -1
- package/dist/src/elements/ia-otp-form/ia-otp-form.d.ts.map +1 -1
- package/dist/src/elements/ia-otp-form/ia-otp-form.js +2 -3
- package/dist/src/elements/ia-otp-form/ia-otp-form.js.map +1 -1
- package/dist/src/elements/ia-playback-controls/ia-playback-controls.d.ts.map +1 -1
- package/dist/src/elements/ia-playback-controls/ia-playback-controls.js +2 -3
- package/dist/src/elements/ia-playback-controls/ia-playback-controls.js.map +1 -1
- package/dist/src/elements/ia-radio-player/ia-radio-player.d.ts +0 -2
- package/dist/src/elements/ia-radio-player/ia-radio-player.d.ts.map +1 -1
- package/dist/src/elements/ia-radio-player/ia-radio-player.js +3 -9
- package/dist/src/elements/ia-radio-player/ia-radio-player.js.map +1 -1
- package/dist/src/elements/ia-radio-player/ia-search-results-switcher.d.ts.map +1 -1
- package/dist/src/elements/ia-radio-player/ia-search-results-switcher.js +2 -3
- package/dist/src/elements/ia-radio-player/ia-search-results-switcher.js.map +1 -1
- package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.d.ts +2 -2
- package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.d.ts.map +1 -1
- package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.js +5 -4
- package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.js.map +1 -1
- package/dist/src/elements/ia-status-indicator/ia-status-indicator.d.ts +3 -3
- package/dist/src/elements/ia-status-indicator/ia-status-indicator.d.ts.map +1 -1
- package/dist/src/elements/ia-status-indicator/ia-status-indicator.js +12 -7
- package/dist/src/elements/ia-status-indicator/ia-status-indicator.js.map +1 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-audio.d.ts +3 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-audio.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-audio.js +28 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-audio.js.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-close.d.ts +3 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-close.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-close.js +20 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-close.js.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.d.ts +3 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.js +19 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.js.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-donate.d.ts +3 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-donate.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-donate.js +18 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-donate.js.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.d.ts +3 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.js +19 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.js.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.d.ts +3 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.js +30 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.js.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-images.d.ts +3 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-images.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-images.js +19 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-images.js.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-search.d.ts +3 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-search.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-search.js +19 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-search.js.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-software.d.ts +3 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-software.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-software.js +18 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-software.js.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-texts.d.ts +3 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-texts.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-texts.js +18 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-texts.js.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.d.ts +3 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.js +18 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.js.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-upload.d.ts +3 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-upload.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-upload.js +21 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-upload.js.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-user.d.ts +3 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-user.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-user.js +19 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-user.js.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-video.d.ts +3 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-video.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-video.js +19 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-video.js.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-web.d.ts +3 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-web.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-web.js +19 -0
- package/dist/src/elements/ia-topnav/assets/img/icon-web.js.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon.d.ts +6 -0
- package/dist/src/elements/ia-topnav/assets/img/icon.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icon.js +17 -0
- package/dist/src/elements/ia-topnav/assets/img/icon.js.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icons.d.ts +19 -0
- package/dist/src/elements/ia-topnav/assets/img/icons.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/icons.js +33 -0
- package/dist/src/elements/ia-topnav/assets/img/icons.js.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/wayback-logo.d.ts +3 -0
- package/dist/src/elements/ia-topnav/assets/img/wayback-logo.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/wayback-logo.js +21 -0
- package/dist/src/elements/ia-topnav/assets/img/wayback-logo.js.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.d.ts +3 -0
- package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.js +13 -0
- package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.js.map +1 -0
- package/dist/src/elements/ia-topnav/data/menus.d.ts +17 -0
- package/dist/src/elements/ia-topnav/data/menus.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/data/menus.js +680 -0
- package/dist/src/elements/ia-topnav/data/menus.js.map +1 -0
- package/dist/src/elements/ia-topnav/dropdown-menu.d.ts +21 -0
- package/dist/src/elements/ia-topnav/dropdown-menu.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/dropdown-menu.js +315 -0
- package/dist/src/elements/ia-topnav/dropdown-menu.js.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.d.ts +11 -0
- package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.js +89 -0
- package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.js.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.d.ts +6 -0
- package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.js +47 -0
- package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.js.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-login-button.d.ts +20 -0
- package/dist/src/elements/ia-topnav/ia-topnav-login-button.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-login-button.js +183 -0
- package/dist/src/elements/ia-topnav/ia-topnav-login-button.js.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-media-button.d.ts +31 -0
- package/dist/src/elements/ia-topnav/ia-topnav-media-button.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-media-button.js +287 -0
- package/dist/src/elements/ia-topnav/ia-topnav-media-button.js.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-media-menu.d.ts +21 -0
- package/dist/src/elements/ia-topnav/ia-topnav-media-menu.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-media-menu.js +222 -0
- package/dist/src/elements/ia-topnav/ia-topnav-media-menu.js.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-media-slider.d.ts +16 -0
- package/dist/src/elements/ia-topnav/ia-topnav-media-slider.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-media-slider.js +221 -0
- package/dist/src/elements/ia-topnav/ia-topnav-media-slider.js.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.d.ts +20 -0
- package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.js +285 -0
- package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.js.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-more-slider.d.ts +12 -0
- package/dist/src/elements/ia-topnav/ia-topnav-more-slider.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-more-slider.js +65 -0
- package/dist/src/elements/ia-topnav/ia-topnav-more-slider.js.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.d.ts +53 -0
- package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.js +653 -0
- package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.js.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.d.ts +12 -0
- package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.js +128 -0
- package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.js.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.d.ts +4 -0
- package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.js +10 -0
- package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.js.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-user-menu.d.ts +7 -0
- package/dist/src/elements/ia-topnav/ia-topnav-user-menu.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-user-menu.js +39 -0
- package/dist/src/elements/ia-topnav/ia-topnav-user-menu.js.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.d.ts +10 -0
- package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.js +64 -0
- package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.js.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.d.ts +20 -0
- package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.js +131 -0
- package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.js.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav.d.ts +85 -0
- package/dist/src/elements/ia-topnav/ia-topnav.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/ia-topnav.js +434 -0
- package/dist/src/elements/ia-topnav/ia-topnav.js.map +1 -0
- package/dist/src/elements/ia-topnav/lib/helpers.d.ts +13 -0
- package/dist/src/elements/ia-topnav/lib/helpers.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/lib/helpers.js +24 -0
- package/dist/src/elements/ia-topnav/lib/helpers.js.map +1 -0
- package/dist/src/elements/ia-topnav/lib/keyboard-navigation.d.ts +46 -0
- package/dist/src/elements/ia-topnav/lib/keyboard-navigation.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/lib/keyboard-navigation.js +136 -0
- package/dist/src/elements/ia-topnav/lib/keyboard-navigation.js.map +1 -0
- package/dist/src/elements/ia-topnav/models.d.ts +59 -0
- package/dist/src/elements/ia-topnav/models.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/models.js +10 -0
- package/dist/src/elements/ia-topnav/models.js.map +1 -0
- package/dist/src/elements/ia-topnav/subnav-list-styles.d.ts +2 -0
- package/dist/src/elements/ia-topnav/subnav-list-styles.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/subnav-list-styles.js +49 -0
- package/dist/src/elements/ia-topnav/subnav-list-styles.js.map +1 -0
- package/dist/src/elements/ia-topnav/tracked-element.d.ts +6 -0
- package/dist/src/elements/ia-topnav/tracked-element.d.ts.map +1 -0
- package/dist/src/elements/ia-topnav/tracked-element.js +29 -0
- package/dist/src/elements/ia-topnav/tracked-element.js.map +1 -0
- package/dist/src/elements/ia-transcript-view/ia-transcript-entry.d.ts.map +1 -1
- package/dist/src/elements/ia-transcript-view/ia-transcript-entry.js +0 -4
- package/dist/src/elements/ia-transcript-view/ia-transcript-entry.js.map +1 -1
- package/dist/src/elements/ia-transcript-view/ia-transcript-view.d.ts.map +1 -1
- package/dist/src/elements/ia-transcript-view/ia-transcript-view.js +2 -3
- package/dist/src/elements/ia-transcript-view/ia-transcript-view.js.map +1 -1
- package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.d.ts +24 -0
- package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.d.ts.map +1 -0
- package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.js +240 -0
- package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.js.map +1 -0
- package/dist/src/elements/index.d.ts +3 -0
- package/dist/src/elements/index.d.ts.map +1 -1
- package/dist/src/elements/index.js +3 -0
- package/dist/src/elements/index.js.map +1 -1
- package/package.json +5 -27
- package/dist/src/locales/es.d.ts +0 -40
- package/dist/src/locales/es.d.ts.map +0 -1
- package/dist/src/locales/es.js +0 -45
- package/dist/src/locales/es.js.map +0 -1
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { CSSResultGroup, LitElement, PropertyValues, nothing } from 'lit';
|
|
2
|
+
import './ia-topnav-desktop-subnav.js';
|
|
3
|
+
import './dropdown-menu.js';
|
|
4
|
+
import './ia-topnav-media-slider.js';
|
|
5
|
+
import { IATopNavConfig, IATopNavSecondIdentitySlotMode } from './models.js';
|
|
6
|
+
import './ia-topnav-primary-nav.js';
|
|
7
|
+
import './ia-topnav-signed-out-dropdown.js';
|
|
8
|
+
import './ia-topnav-user-menu.js';
|
|
9
|
+
export declare class IATopNav extends LitElement {
|
|
10
|
+
localLinks: boolean;
|
|
11
|
+
waybackPagesArchived: string;
|
|
12
|
+
baseHost: string;
|
|
13
|
+
mediaBaseHost: string;
|
|
14
|
+
admin: boolean;
|
|
15
|
+
canManageFlags: boolean;
|
|
16
|
+
config: IATopNavConfig;
|
|
17
|
+
hideSearch: boolean;
|
|
18
|
+
itemIdentifier: string;
|
|
19
|
+
/**
|
|
20
|
+
* Email of the item's uploader. When set for an admin viewing an item, the
|
|
21
|
+
* user menu gets an "uploader:" section with user admin / user privs links.
|
|
22
|
+
*/
|
|
23
|
+
uploader: string;
|
|
24
|
+
/**
|
|
25
|
+
* Biblio URL for a texts item, which must already carry a query string
|
|
26
|
+
* (the item identifier is appended to it as `&ignored=`). When set for an
|
|
27
|
+
* admin viewing an item, the user menu gets biblio / bookview / jp2 zip links.
|
|
28
|
+
*/
|
|
29
|
+
biblio: string;
|
|
30
|
+
mediaSliderOpen: boolean;
|
|
31
|
+
openMenu: string;
|
|
32
|
+
screenName: string;
|
|
33
|
+
selectedMenuOption: string;
|
|
34
|
+
username: string;
|
|
35
|
+
userProfileImagePath: string;
|
|
36
|
+
secondIdentitySlotMode: IATopNavSecondIdentitySlotMode;
|
|
37
|
+
currentTab?: {
|
|
38
|
+
mediatype: string;
|
|
39
|
+
moveTo: string;
|
|
40
|
+
};
|
|
41
|
+
private primaryNav?;
|
|
42
|
+
/** Only one of ia-topnav-user-menu or ia-topnav-signed-out-dropdown is rendered at a time. */
|
|
43
|
+
private accountDropdown?;
|
|
44
|
+
private menus;
|
|
45
|
+
private boundHandleKeydown;
|
|
46
|
+
private boundHandleClick;
|
|
47
|
+
connectedCallback(): void;
|
|
48
|
+
disconnectedCallback(): void;
|
|
49
|
+
willUpdate(props: PropertyValues): void;
|
|
50
|
+
render(): import("lit").TemplateResult<1>;
|
|
51
|
+
private get normalizedBaseHost();
|
|
52
|
+
private handleDocumentKeydown;
|
|
53
|
+
private handleDocumentClick;
|
|
54
|
+
menuSetup(): void;
|
|
55
|
+
menuToggled(e: CustomEvent): void;
|
|
56
|
+
openMediaSlider(): void;
|
|
57
|
+
closeMediaSlider(): void;
|
|
58
|
+
closeMenus(): void;
|
|
59
|
+
trackClick(e: CustomEvent): void;
|
|
60
|
+
trackSubmit(e: CustomEvent): void;
|
|
61
|
+
mediaTypeSelected(e: CustomEvent): void;
|
|
62
|
+
get signedOutOpened(): boolean;
|
|
63
|
+
get userMenuOpened(): boolean;
|
|
64
|
+
get userMenuTabIndex(): "" | "-1";
|
|
65
|
+
get signedOutTabIndex(): "" | "-1";
|
|
66
|
+
get closeLayerClass(): "" | "visible";
|
|
67
|
+
get userMenu(): import("lit").TemplateResult<1>;
|
|
68
|
+
get signedOutDropdown(): import("lit").TemplateResult<1>;
|
|
69
|
+
get signedOutMenuItems(): import("./models.js").IATopNavLink[];
|
|
70
|
+
/**
|
|
71
|
+
* Most users just get the basic menu items.
|
|
72
|
+
* For users with `/items` priv, additional admin menu items are included too.
|
|
73
|
+
* Having the `/flags` priv adds a further admin item for managing flags.
|
|
74
|
+
* A `biblio` URL adds a section of book-scanning links, and an `uploader`
|
|
75
|
+
* adds a section with the uploader's email and account admin links. Each
|
|
76
|
+
* section is rendered with a divider above it.
|
|
77
|
+
*/
|
|
78
|
+
get userMenuItems(): import("./models.js").IATopNavLink[][];
|
|
79
|
+
get allowSecondaryIcon(): boolean;
|
|
80
|
+
get searchSlot(): import("lit").TemplateResult<1>;
|
|
81
|
+
get secondLogoSlot(): import("lit").TemplateResult<1> | typeof nothing;
|
|
82
|
+
get separatorTemplate(): import("lit").TemplateResult<1>;
|
|
83
|
+
static get styles(): CSSResultGroup;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=ia-topnav.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ia-topnav.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-topnav/ia-topnav.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,UAAU,EACV,cAAc,EAGd,OAAO,EACR,MAAM,KAAK,CAAC;AAKb,OAAO,4BAA4B,CAAC;AACpC,OAAO,iBAAiB,CAAC;AACzB,OAAO,0BAA0B,CAAC;AAClC,OAAO,EACL,cAAc,EAEd,8BAA8B,EAE/B,MAAM,UAAU,CAAC;AAClB,OAAO,yBAAyB,CAAC;AAEjC,OAAO,iCAAiC,CAAC;AACzC,OAAO,uBAAuB,CAAC;AAG/B,qBACa,QAAS,SAAQ,UAAU;IACT,UAAU,UAAS;IAEpB,oBAAoB,SAAM;IAE1B,QAAQ,SAAyB;IAEjC,aAAa,SAAyB;IAErC,KAAK,UAAS;IAEd,cAAc,UAAS;IAExB,MAAM,EAAE,cAAc,CAAuB;IAE5C,UAAU,UAAS;IAEpB,cAAc,SAAM;IAEhD;;;OAGG;IACyB,QAAQ,SAAM;IAE1C;;;;OAIG;IACyB,MAAM,SAAM;IAEX,eAAe,UAAS;IAEzB,QAAQ,SAAM;IAEd,UAAU,EAAE,MAAM,CAAM;IAExB,kBAAkB,SAAM;IAExB,QAAQ,EAAE,MAAM,CAAM;IAEtB,oBAAoB,SACjB;IAG/B,sBAAsB,EAAE,8BAA8B,CAAM;IAEhC,UAAU,CAAC,EAAE;QACvC,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAE8B,OAAO,CAAC,UAAU,CAAC,CAAa;IAChE,8FAA8F;IAE9F,OAAO,CAAC,eAAe,CAAC,CAAc;IAE7B,OAAO,CAAC,KAAK,CAA0C;IAEhE,OAAO,CAAC,kBAAkB,CAAyC;IAEnE,OAAO,CAAC,gBAAgB,CAAuC;IAE/D,iBAAiB;IAMjB,oBAAoB;IAMpB,UAAU,CAAC,KAAK,EAAE,cAAc;IAchC,MAAM;IA+CN,OAAO,KAAK,kBAAkB,GAE7B;IAED,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,mBAAmB;IAQ3B,SAAS;IAYT,WAAW,CAAC,CAAC,EAAE,WAAW;IAoB1B,eAAe;IAIf,gBAAgB;IAKhB,UAAU;IAKV,UAAU,CAAC,CAAC,EAAE,WAAW;IAUzB,WAAW,CAAC,CAAC,EAAE,WAAW;IAU1B,iBAAiB,CAAC,CAAC,EAAE,WAAW;IAShC,IAAI,eAAe,YAElB;IAED,IAAI,cAAc,YAEjB;IAED,IAAI,gBAAgB,cAEnB;IAED,IAAI,iBAAiB,cAEpB;IAED,IAAI,eAAe,mBAElB;IAED,IAAI,QAAQ,oCAeX;IAED,IAAI,iBAAiB,oCAapB;IAED,IAAI,kBAAkB,sCAErB;IAED;;;;;;;OAOG;IACH,IAAI,aAAa,wCAiBhB;IAED,IAAI,kBAAkB,YAErB;IAED,IAAI,UAAU,oCAEb;IAED,IAAI,cAAc,qDAOjB;IAED,IAAI,iBAAiB,oCAEpB;IAED,MAAM,KAAK,MAAM,IAAI,cAAc,CAwFlC;CACF"}
|
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { LitElement, css, html, nothing, } from 'lit';
|
|
3
|
+
import { property, query, state } from 'lit/decorators.js';
|
|
4
|
+
import { customElement } from '../../util/custom-element.js';
|
|
5
|
+
import { buildTopNavMenus, defaultTopNavConfig } from './data/menus.js';
|
|
6
|
+
import './ia-topnav-desktop-subnav.js';
|
|
7
|
+
import './dropdown-menu.js';
|
|
8
|
+
import './ia-topnav-media-slider.js';
|
|
9
|
+
import { TOPNAV_MOBILE_BREAKPOINT, } from './models.js';
|
|
10
|
+
import './ia-topnav-primary-nav.js';
|
|
11
|
+
import './ia-topnav-signed-out-dropdown.js';
|
|
12
|
+
import './ia-topnav-user-menu.js';
|
|
13
|
+
import themeStyles from '../../themes/theme-styles.js';
|
|
14
|
+
let IATopNav = class IATopNav extends LitElement {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
this.localLinks = false;
|
|
18
|
+
this.waybackPagesArchived = '';
|
|
19
|
+
this.baseHost = 'https://archive.org';
|
|
20
|
+
this.mediaBaseHost = 'https://archive.org';
|
|
21
|
+
this.admin = false;
|
|
22
|
+
this.canManageFlags = false;
|
|
23
|
+
this.config = defaultTopNavConfig;
|
|
24
|
+
this.hideSearch = false;
|
|
25
|
+
this.itemIdentifier = '';
|
|
26
|
+
/**
|
|
27
|
+
* Email of the item's uploader. When set for an admin viewing an item, the
|
|
28
|
+
* user menu gets an "uploader:" section with user admin / user privs links.
|
|
29
|
+
*/
|
|
30
|
+
this.uploader = '';
|
|
31
|
+
/**
|
|
32
|
+
* Biblio URL for a texts item, which must already carry a query string
|
|
33
|
+
* (the item identifier is appended to it as `&ignored=`). When set for an
|
|
34
|
+
* admin viewing an item, the user menu gets biblio / bookview / jp2 zip links.
|
|
35
|
+
*/
|
|
36
|
+
this.biblio = '';
|
|
37
|
+
this.mediaSliderOpen = false;
|
|
38
|
+
this.openMenu = '';
|
|
39
|
+
this.screenName = '';
|
|
40
|
+
this.selectedMenuOption = '';
|
|
41
|
+
this.username = '';
|
|
42
|
+
this.userProfileImagePath = '/services/img/user/profile';
|
|
43
|
+
this.secondIdentitySlotMode = '';
|
|
44
|
+
this.menus = buildTopNavMenus();
|
|
45
|
+
this.boundHandleKeydown = this.handleDocumentKeydown.bind(this);
|
|
46
|
+
this.boundHandleClick = this.handleDocumentClick.bind(this);
|
|
47
|
+
}
|
|
48
|
+
connectedCallback() {
|
|
49
|
+
super.connectedCallback();
|
|
50
|
+
document.addEventListener('keydown', this.boundHandleKeydown);
|
|
51
|
+
document.addEventListener('click', this.boundHandleClick);
|
|
52
|
+
}
|
|
53
|
+
disconnectedCallback() {
|
|
54
|
+
super.disconnectedCallback();
|
|
55
|
+
document.removeEventListener('keydown', this.boundHandleKeydown);
|
|
56
|
+
document.removeEventListener('click', this.boundHandleClick);
|
|
57
|
+
}
|
|
58
|
+
willUpdate(props) {
|
|
59
|
+
if (props.has('username') ||
|
|
60
|
+
props.has('waybackPagesArchived') ||
|
|
61
|
+
props.has('itemIdentifier') ||
|
|
62
|
+
props.has('uploader') ||
|
|
63
|
+
props.has('biblio') ||
|
|
64
|
+
props.has('localLinks') ||
|
|
65
|
+
props.has('baseHost')) {
|
|
66
|
+
this.menuSetup();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
render() {
|
|
70
|
+
return html `
|
|
71
|
+
<div class="topnav">
|
|
72
|
+
<ia-topnav-primary-nav
|
|
73
|
+
.baseHost=${this.normalizedBaseHost}
|
|
74
|
+
.mediaBaseHost=${this.mediaBaseHost}
|
|
75
|
+
.config=${this.config}
|
|
76
|
+
.openMenu=${this.openMenu}
|
|
77
|
+
.screenName=${this.screenName}
|
|
78
|
+
.secondIdentitySlotMode=${this.secondIdentitySlotMode}
|
|
79
|
+
.selectedMenuOption=${this.selectedMenuOption}
|
|
80
|
+
.username=${this.username}
|
|
81
|
+
.userProfileImagePath=${this.userProfileImagePath}
|
|
82
|
+
.currentTab=${this.currentTab}
|
|
83
|
+
?hideSearch=${this.hideSearch}
|
|
84
|
+
@mediaTypeSelected=${this.mediaTypeSelected}
|
|
85
|
+
@trackClick=${this.trackClick}
|
|
86
|
+
@trackSubmit=${this.trackSubmit}
|
|
87
|
+
@menuToggled=${this.menuToggled}
|
|
88
|
+
>
|
|
89
|
+
${this.secondLogoSlot} ${this.searchSlot}
|
|
90
|
+
</ia-topnav-primary-nav>
|
|
91
|
+
<ia-topnav-media-slider
|
|
92
|
+
.baseHost=${this.normalizedBaseHost}
|
|
93
|
+
.config=${this.config}
|
|
94
|
+
.selectedMenuOption=${this.selectedMenuOption}
|
|
95
|
+
.mediaSliderOpen=${this.mediaSliderOpen}
|
|
96
|
+
.menus=${this.menus}
|
|
97
|
+
tabindex="${this.mediaSliderOpen ? '1' : '-1'}"
|
|
98
|
+
@focusToOtherMenuItem=${(e) => (this.currentTab = e.detail)}
|
|
99
|
+
></ia-topnav-media-slider>
|
|
100
|
+
</div>
|
|
101
|
+
${this.username ? this.userMenu : this.signedOutDropdown}
|
|
102
|
+
<ia-topnav-desktop-subnav
|
|
103
|
+
.baseHost=${this.normalizedBaseHost}
|
|
104
|
+
.menuItems=${this.menus.more.links}
|
|
105
|
+
@focus=${this.closeMenus}
|
|
106
|
+
></ia-topnav-desktop-subnav>
|
|
107
|
+
<div
|
|
108
|
+
id="close-layer"
|
|
109
|
+
class="${this.closeLayerClass}"
|
|
110
|
+
@click=${this.closeMenus}
|
|
111
|
+
></div>
|
|
112
|
+
`;
|
|
113
|
+
}
|
|
114
|
+
get normalizedBaseHost() {
|
|
115
|
+
return !this.localLinks ? this.baseHost : '';
|
|
116
|
+
}
|
|
117
|
+
handleDocumentKeydown(e) {
|
|
118
|
+
if (e.key === 'Escape') {
|
|
119
|
+
this.openMenu = '';
|
|
120
|
+
this.mediaSliderOpen = false;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
handleDocumentClick(e) {
|
|
124
|
+
if (!this.openMenu)
|
|
125
|
+
return;
|
|
126
|
+
const path = e.composedPath();
|
|
127
|
+
if (!path.includes(this)) {
|
|
128
|
+
this.closeMenus();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
menuSetup() {
|
|
132
|
+
// re/build the nav
|
|
133
|
+
this.menus = buildTopNavMenus(this.username, this.normalizedBaseHost, this.waybackPagesArchived, this.itemIdentifier, this.uploader, this.biblio);
|
|
134
|
+
}
|
|
135
|
+
menuToggled(e) {
|
|
136
|
+
const currentMenu = this.openMenu;
|
|
137
|
+
this.openMenu = currentMenu === e.detail.menuName ? '' : e.detail.menuName;
|
|
138
|
+
// Keeps media slider open if media menu is open
|
|
139
|
+
if (this.openMenu === 'media') {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
this.closeMediaSlider();
|
|
143
|
+
if (this.openMenu === 'user' || this.openMenu === 'login') {
|
|
144
|
+
if (this.primaryNav && this.accountDropdown) {
|
|
145
|
+
const right = this.primaryNav.getAccountDropdownOffset();
|
|
146
|
+
this.accountDropdown.style.setProperty('--dropdownMenuRight', `${right}px`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
openMediaSlider() {
|
|
151
|
+
this.mediaSliderOpen = true;
|
|
152
|
+
}
|
|
153
|
+
closeMediaSlider() {
|
|
154
|
+
this.mediaSliderOpen = false;
|
|
155
|
+
this.selectedMenuOption = '';
|
|
156
|
+
}
|
|
157
|
+
closeMenus() {
|
|
158
|
+
this.openMenu = '';
|
|
159
|
+
this.closeMediaSlider();
|
|
160
|
+
}
|
|
161
|
+
trackClick(e) {
|
|
162
|
+
this.dispatchEvent(new CustomEvent('analyticsClick', {
|
|
163
|
+
bubbles: true,
|
|
164
|
+
composed: true,
|
|
165
|
+
detail: e.detail,
|
|
166
|
+
}));
|
|
167
|
+
}
|
|
168
|
+
trackSubmit(e) {
|
|
169
|
+
this.dispatchEvent(new CustomEvent('analyticsSubmit', {
|
|
170
|
+
bubbles: true,
|
|
171
|
+
composed: true,
|
|
172
|
+
detail: e.detail,
|
|
173
|
+
}));
|
|
174
|
+
}
|
|
175
|
+
mediaTypeSelected(e) {
|
|
176
|
+
if (this.selectedMenuOption === e.detail.mediatype) {
|
|
177
|
+
this.closeMediaSlider();
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
this.selectedMenuOption = e.detail.mediatype;
|
|
181
|
+
this.openMediaSlider();
|
|
182
|
+
}
|
|
183
|
+
get signedOutOpened() {
|
|
184
|
+
return this.openMenu === 'login';
|
|
185
|
+
}
|
|
186
|
+
get userMenuOpened() {
|
|
187
|
+
return this.openMenu === 'user';
|
|
188
|
+
}
|
|
189
|
+
get userMenuTabIndex() {
|
|
190
|
+
return this.userMenuOpened ? '' : '-1';
|
|
191
|
+
}
|
|
192
|
+
get signedOutTabIndex() {
|
|
193
|
+
return this.signedOutOpened ? '' : '-1';
|
|
194
|
+
}
|
|
195
|
+
get closeLayerClass() {
|
|
196
|
+
return !!this.openMenu || this.mediaSliderOpen ? 'visible' : '';
|
|
197
|
+
}
|
|
198
|
+
get userMenu() {
|
|
199
|
+
return html `
|
|
200
|
+
<ia-topnav-user-menu
|
|
201
|
+
.baseHost=${this.normalizedBaseHost}
|
|
202
|
+
.config=${this.config}
|
|
203
|
+
.menuItems=${this.userMenuItems}
|
|
204
|
+
?open=${this.openMenu === 'user'}
|
|
205
|
+
.username=${this.username}
|
|
206
|
+
tabindex="${this.userMenuTabIndex}"
|
|
207
|
+
@menuToggled=${this.menuToggled}
|
|
208
|
+
@trackClick=${this.trackClick}
|
|
209
|
+
@focusToOtherMenuItem=${(e) => (this.currentTab = e.detail)}
|
|
210
|
+
></ia-topnav-user-menu>
|
|
211
|
+
`;
|
|
212
|
+
}
|
|
213
|
+
get signedOutDropdown() {
|
|
214
|
+
return html `
|
|
215
|
+
<ia-topnav-signed-out-dropdown
|
|
216
|
+
.baseHost=${this.normalizedBaseHost}
|
|
217
|
+
.config=${this.config}
|
|
218
|
+
.open=${this.signedOutOpened}
|
|
219
|
+
tabindex="${this.signedOutTabIndex}"
|
|
220
|
+
.menuItems=${this.signedOutMenuItems}
|
|
221
|
+
@focusToOtherMenuItem=${(e) => {
|
|
222
|
+
this.currentTab = e.detail;
|
|
223
|
+
}}
|
|
224
|
+
></ia-topnav-signed-out-dropdown>
|
|
225
|
+
`;
|
|
226
|
+
}
|
|
227
|
+
get signedOutMenuItems() {
|
|
228
|
+
return this.menus.signedOut;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Most users just get the basic menu items.
|
|
232
|
+
* For users with `/items` priv, additional admin menu items are included too.
|
|
233
|
+
* Having the `/flags` priv adds a further admin item for managing flags.
|
|
234
|
+
* A `biblio` URL adds a section of book-scanning links, and an `uploader`
|
|
235
|
+
* adds a section with the uploader's email and account admin links. Each
|
|
236
|
+
* section is rendered with a divider above it.
|
|
237
|
+
*/
|
|
238
|
+
get userMenuItems() {
|
|
239
|
+
const basicItems = this.menus.user;
|
|
240
|
+
if (!this.itemIdentifier || !this.admin)
|
|
241
|
+
return [basicItems];
|
|
242
|
+
let adminItems = this.menus.userAdmin;
|
|
243
|
+
if (this.canManageFlags) {
|
|
244
|
+
adminItems = adminItems.concat(this.menus.userAdminFlags);
|
|
245
|
+
}
|
|
246
|
+
// The built sections are empty until the matching prop is set and the
|
|
247
|
+
// menus have been rebuilt, so gating on them keeps a divider from ever
|
|
248
|
+
// rendering above an empty section.
|
|
249
|
+
const { userAdminBiblio, userAdminUploader } = this.menus;
|
|
250
|
+
const sections = [basicItems, adminItems];
|
|
251
|
+
if (userAdminBiblio.length)
|
|
252
|
+
sections.push(userAdminBiblio);
|
|
253
|
+
if (userAdminUploader.length)
|
|
254
|
+
sections.push(userAdminUploader);
|
|
255
|
+
return sections;
|
|
256
|
+
}
|
|
257
|
+
get allowSecondaryIcon() {
|
|
258
|
+
return this.secondIdentitySlotMode === 'allow';
|
|
259
|
+
}
|
|
260
|
+
get searchSlot() {
|
|
261
|
+
return html `<slot name="search" slot="search"></slot>`;
|
|
262
|
+
}
|
|
263
|
+
get secondLogoSlot() {
|
|
264
|
+
return this.allowSecondaryIcon
|
|
265
|
+
? html `
|
|
266
|
+
<slot name="opt-sec-logo" slot="opt-sec-logo"></slot>
|
|
267
|
+
<slot name="opt-sec-logo-mobile" slot="opt-sec-logo-mobile"></slot>
|
|
268
|
+
`
|
|
269
|
+
: nothing;
|
|
270
|
+
}
|
|
271
|
+
get separatorTemplate() {
|
|
272
|
+
return html `<li class="divider" role="presentation"></li>`;
|
|
273
|
+
}
|
|
274
|
+
static get styles() {
|
|
275
|
+
return [
|
|
276
|
+
themeStyles,
|
|
277
|
+
css `
|
|
278
|
+
:host {
|
|
279
|
+
--white: #fff;
|
|
280
|
+
--grey13: #222;
|
|
281
|
+
--grey20: #333;
|
|
282
|
+
--grey40: #666;
|
|
283
|
+
--grey28: #474747;
|
|
284
|
+
--grey60: #999;
|
|
285
|
+
--grey66: #aaa;
|
|
286
|
+
--grey80: #ccc;
|
|
287
|
+
--greya0: #a0a0a0;
|
|
288
|
+
--grey6f: #6f6f6f;
|
|
289
|
+
--errorYellow: #ffcd27;
|
|
290
|
+
|
|
291
|
+
--linkColor: #4b64ff;
|
|
292
|
+
--linkHoverColor: var(--white);
|
|
293
|
+
--subnavLinkColor: var(--grey66);
|
|
294
|
+
--primaryTextColor: var(--white);
|
|
295
|
+
--inverseTextColor: var(--grey20);
|
|
296
|
+
--lightTextColor: var(--grey60);
|
|
297
|
+
--activeColor: var(--white);
|
|
298
|
+
--activeButtonBg: var(--grey20);
|
|
299
|
+
--iconFill: var(--grey60);
|
|
300
|
+
--desktopSearchIconFill: var(--grey20);
|
|
301
|
+
|
|
302
|
+
--mediaMenuBg: var(--grey13);
|
|
303
|
+
--mediaLabelDesktopColor: var(--grey60);
|
|
304
|
+
--activeDesktopMenuIcon: var(--grey28);
|
|
305
|
+
|
|
306
|
+
--mediaSliderBg: var(--grey20);
|
|
307
|
+
--mediaSliderDesktopBg: var(--grey28);
|
|
308
|
+
|
|
309
|
+
--primaryNavBg: var(--grey13);
|
|
310
|
+
--primaryNavBottomBorder: var(--grey20);
|
|
311
|
+
|
|
312
|
+
--desktopSubnavBg: var(--grey20);
|
|
313
|
+
|
|
314
|
+
--dropdownMenuBg: var(--grey20);
|
|
315
|
+
--dropdownMenuInfoItem: var(--greya0);
|
|
316
|
+
--dropdownMenuDivider: var(--grey40);
|
|
317
|
+
--inverseDropdownMenuInfoItem: var(--grey6f);
|
|
318
|
+
|
|
319
|
+
--loginTextColor: var(--grey60);
|
|
320
|
+
|
|
321
|
+
--themeFontFamily: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
|
322
|
+
--logoWidthTablet: 263px;
|
|
323
|
+
|
|
324
|
+
--savePageSubmitBg: var(--grey13);
|
|
325
|
+
--savePageSubmitText: var(--white);
|
|
326
|
+
--savePageInputBorder: var(--grey60);
|
|
327
|
+
--savePageErrorText: var(--errorYellow);
|
|
328
|
+
|
|
329
|
+
color: var(--primaryTextColor);
|
|
330
|
+
font-family: var(--themeFontFamily);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
ia-topnav-primary-nav:focus {
|
|
334
|
+
outline: none !important;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
#close-layer {
|
|
338
|
+
display: none;
|
|
339
|
+
position: fixed;
|
|
340
|
+
top: 0;
|
|
341
|
+
right: 0;
|
|
342
|
+
bottom: 0;
|
|
343
|
+
left: 0;
|
|
344
|
+
z-index: 3;
|
|
345
|
+
}
|
|
346
|
+
#close-layer.visible {
|
|
347
|
+
display: block;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
.topnav {
|
|
351
|
+
position: relative;
|
|
352
|
+
z-index: 4;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
@media (max-width: ${TOPNAV_MOBILE_BREAKPOINT - 1}px) {
|
|
356
|
+
ia-topnav-desktop-subnav {
|
|
357
|
+
display: none;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
`,
|
|
361
|
+
];
|
|
362
|
+
}
|
|
363
|
+
};
|
|
364
|
+
__decorate([
|
|
365
|
+
property({ type: Boolean })
|
|
366
|
+
], IATopNav.prototype, "localLinks", void 0);
|
|
367
|
+
__decorate([
|
|
368
|
+
property({ type: String })
|
|
369
|
+
], IATopNav.prototype, "waybackPagesArchived", void 0);
|
|
370
|
+
__decorate([
|
|
371
|
+
property({ type: String })
|
|
372
|
+
], IATopNav.prototype, "baseHost", void 0);
|
|
373
|
+
__decorate([
|
|
374
|
+
property({ type: String })
|
|
375
|
+
], IATopNav.prototype, "mediaBaseHost", void 0);
|
|
376
|
+
__decorate([
|
|
377
|
+
property({ type: Boolean })
|
|
378
|
+
], IATopNav.prototype, "admin", void 0);
|
|
379
|
+
__decorate([
|
|
380
|
+
property({ type: Boolean })
|
|
381
|
+
], IATopNav.prototype, "canManageFlags", void 0);
|
|
382
|
+
__decorate([
|
|
383
|
+
property({ type: Object })
|
|
384
|
+
], IATopNav.prototype, "config", void 0);
|
|
385
|
+
__decorate([
|
|
386
|
+
property({ type: Boolean })
|
|
387
|
+
], IATopNav.prototype, "hideSearch", void 0);
|
|
388
|
+
__decorate([
|
|
389
|
+
property({ type: String })
|
|
390
|
+
], IATopNav.prototype, "itemIdentifier", void 0);
|
|
391
|
+
__decorate([
|
|
392
|
+
property({ type: String })
|
|
393
|
+
], IATopNav.prototype, "uploader", void 0);
|
|
394
|
+
__decorate([
|
|
395
|
+
property({ type: String })
|
|
396
|
+
], IATopNav.prototype, "biblio", void 0);
|
|
397
|
+
__decorate([
|
|
398
|
+
property({ type: Boolean })
|
|
399
|
+
], IATopNav.prototype, "mediaSliderOpen", void 0);
|
|
400
|
+
__decorate([
|
|
401
|
+
property({ type: String })
|
|
402
|
+
], IATopNav.prototype, "openMenu", void 0);
|
|
403
|
+
__decorate([
|
|
404
|
+
property({ type: String })
|
|
405
|
+
], IATopNav.prototype, "screenName", void 0);
|
|
406
|
+
__decorate([
|
|
407
|
+
property({ type: String })
|
|
408
|
+
], IATopNav.prototype, "selectedMenuOption", void 0);
|
|
409
|
+
__decorate([
|
|
410
|
+
property({ type: String })
|
|
411
|
+
], IATopNav.prototype, "username", void 0);
|
|
412
|
+
__decorate([
|
|
413
|
+
property({ type: String })
|
|
414
|
+
], IATopNav.prototype, "userProfileImagePath", void 0);
|
|
415
|
+
__decorate([
|
|
416
|
+
property({ type: String })
|
|
417
|
+
], IATopNav.prototype, "secondIdentitySlotMode", void 0);
|
|
418
|
+
__decorate([
|
|
419
|
+
property({ type: Object })
|
|
420
|
+
], IATopNav.prototype, "currentTab", void 0);
|
|
421
|
+
__decorate([
|
|
422
|
+
query('ia-topnav-primary-nav')
|
|
423
|
+
], IATopNav.prototype, "primaryNav", void 0);
|
|
424
|
+
__decorate([
|
|
425
|
+
query('ia-topnav-user-menu, ia-topnav-signed-out-dropdown')
|
|
426
|
+
], IATopNav.prototype, "accountDropdown", void 0);
|
|
427
|
+
__decorate([
|
|
428
|
+
state()
|
|
429
|
+
], IATopNav.prototype, "menus", void 0);
|
|
430
|
+
IATopNav = __decorate([
|
|
431
|
+
customElement('ia-topnav')
|
|
432
|
+
], IATopNav);
|
|
433
|
+
export { IATopNav };
|
|
434
|
+
//# sourceMappingURL=ia-topnav.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ia-topnav.js","sourceRoot":"","sources":["../../../../src/elements/ia-topnav/ia-topnav.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CSSResultGroup,\n LitElement,\n PropertyValues,\n css,\n html,\n nothing,\n} from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\n\nimport { buildTopNavMenus, defaultTopNavConfig } from './data/menus';\nimport './ia-topnav-desktop-subnav';\nimport './dropdown-menu';\nimport './ia-topnav-media-slider';\nimport {\n IATopNavConfig,\n IATopNavMenuConfig,\n IATopNavSecondIdentitySlotMode,\n TOPNAV_MOBILE_BREAKPOINT,\n} from './models';\nimport './ia-topnav-primary-nav';\nimport type { PrimaryNav } from './ia-topnav-primary-nav';\nimport './ia-topnav-signed-out-dropdown';\nimport './ia-topnav-user-menu';\nimport themeStyles from '@src/themes/theme-styles';\n\n@customElement('ia-topnav')\nexport class IATopNav extends LitElement {\n @property({ type: Boolean }) localLinks = false;\n\n @property({ type: String }) waybackPagesArchived = '';\n\n @property({ type: String }) baseHost = 'https://archive.org';\n\n @property({ type: String }) mediaBaseHost = 'https://archive.org';\n\n @property({ type: Boolean }) admin = false;\n\n @property({ type: Boolean }) canManageFlags = false;\n\n @property({ type: Object }) config: IATopNavConfig = defaultTopNavConfig;\n\n @property({ type: Boolean }) hideSearch = false;\n\n @property({ type: String }) itemIdentifier = '';\n\n /**\n * Email of the item's uploader. When set for an admin viewing an item, the\n * user menu gets an \"uploader:\" section with user admin / user privs links.\n */\n @property({ type: String }) uploader = '';\n\n /**\n * Biblio URL for a texts item, which must already carry a query string\n * (the item identifier is appended to it as `&ignored=`). When set for an\n * admin viewing an item, the user menu gets biblio / bookview / jp2 zip links.\n */\n @property({ type: String }) biblio = '';\n\n @property({ type: Boolean }) mediaSliderOpen = false;\n\n @property({ type: String }) openMenu = '';\n\n @property({ type: String }) screenName: string = '';\n\n @property({ type: String }) selectedMenuOption = '';\n\n @property({ type: String }) username: string = '';\n\n @property({ type: String }) userProfileImagePath =\n '/services/img/user/profile';\n\n @property({ type: String })\n secondIdentitySlotMode: IATopNavSecondIdentitySlotMode = '';\n\n @property({ type: Object }) currentTab?: {\n mediatype: string;\n moveTo: string;\n };\n\n @query('ia-topnav-primary-nav') private primaryNav?: PrimaryNav;\n /** Only one of ia-topnav-user-menu or ia-topnav-signed-out-dropdown is rendered at a time. */\n @query('ia-topnav-user-menu, ia-topnav-signed-out-dropdown')\n private accountDropdown?: HTMLElement;\n\n @state() private menus: IATopNavMenuConfig = buildTopNavMenus();\n\n private boundHandleKeydown = this.handleDocumentKeydown.bind(this);\n\n private boundHandleClick = this.handleDocumentClick.bind(this);\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('keydown', this.boundHandleKeydown);\n document.addEventListener('click', this.boundHandleClick);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('keydown', this.boundHandleKeydown);\n document.removeEventListener('click', this.boundHandleClick);\n }\n\n willUpdate(props: PropertyValues) {\n if (\n props.has('username') ||\n props.has('waybackPagesArchived') ||\n props.has('itemIdentifier') ||\n props.has('uploader') ||\n props.has('biblio') ||\n props.has('localLinks') ||\n props.has('baseHost')\n ) {\n this.menuSetup();\n }\n }\n\n render() {\n return html`\n <div class=\"topnav\">\n <ia-topnav-primary-nav\n .baseHost=${this.normalizedBaseHost}\n .mediaBaseHost=${this.mediaBaseHost}\n .config=${this.config}\n .openMenu=${this.openMenu}\n .screenName=${this.screenName}\n .secondIdentitySlotMode=${this.secondIdentitySlotMode}\n .selectedMenuOption=${this.selectedMenuOption}\n .username=${this.username}\n .userProfileImagePath=${this.userProfileImagePath}\n .currentTab=${this.currentTab}\n ?hideSearch=${this.hideSearch}\n @mediaTypeSelected=${this.mediaTypeSelected}\n @trackClick=${this.trackClick}\n @trackSubmit=${this.trackSubmit}\n @menuToggled=${this.menuToggled}\n >\n ${this.secondLogoSlot} ${this.searchSlot}\n </ia-topnav-primary-nav>\n <ia-topnav-media-slider\n .baseHost=${this.normalizedBaseHost}\n .config=${this.config}\n .selectedMenuOption=${this.selectedMenuOption}\n .mediaSliderOpen=${this.mediaSliderOpen}\n .menus=${this.menus}\n tabindex=\"${this.mediaSliderOpen ? '1' : '-1'}\"\n @focusToOtherMenuItem=${(e: CustomEvent) =>\n (this.currentTab = e.detail)}\n ></ia-topnav-media-slider>\n </div>\n ${this.username ? this.userMenu : this.signedOutDropdown}\n <ia-topnav-desktop-subnav\n .baseHost=${this.normalizedBaseHost}\n .menuItems=${this.menus.more.links}\n @focus=${this.closeMenus}\n ></ia-topnav-desktop-subnav>\n <div\n id=\"close-layer\"\n class=\"${this.closeLayerClass}\"\n @click=${this.closeMenus}\n ></div>\n `;\n }\n\n private get normalizedBaseHost() {\n return !this.localLinks ? this.baseHost : '';\n }\n\n private handleDocumentKeydown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n this.openMenu = '';\n this.mediaSliderOpen = false;\n }\n }\n\n private handleDocumentClick(e: MouseEvent) {\n if (!this.openMenu) return;\n const path = e.composedPath();\n if (!path.includes(this)) {\n this.closeMenus();\n }\n }\n\n menuSetup() {\n // re/build the nav\n this.menus = buildTopNavMenus(\n this.username,\n this.normalizedBaseHost,\n this.waybackPagesArchived,\n this.itemIdentifier,\n this.uploader,\n this.biblio,\n );\n }\n\n menuToggled(e: CustomEvent) {\n const currentMenu = this.openMenu;\n this.openMenu = currentMenu === e.detail.menuName ? '' : e.detail.menuName;\n // Keeps media slider open if media menu is open\n if (this.openMenu === 'media') {\n return;\n }\n this.closeMediaSlider();\n\n if (this.openMenu === 'user' || this.openMenu === 'login') {\n if (this.primaryNav && this.accountDropdown) {\n const right = this.primaryNav.getAccountDropdownOffset();\n this.accountDropdown.style.setProperty(\n '--dropdownMenuRight',\n `${right}px`,\n );\n }\n }\n }\n\n openMediaSlider() {\n this.mediaSliderOpen = true;\n }\n\n closeMediaSlider() {\n this.mediaSliderOpen = false;\n this.selectedMenuOption = '';\n }\n\n closeMenus() {\n this.openMenu = '';\n this.closeMediaSlider();\n }\n\n trackClick(e: CustomEvent) {\n this.dispatchEvent(\n new CustomEvent('analyticsClick', {\n bubbles: true,\n composed: true,\n detail: e.detail,\n }),\n );\n }\n\n trackSubmit(e: CustomEvent) {\n this.dispatchEvent(\n new CustomEvent('analyticsSubmit', {\n bubbles: true,\n composed: true,\n detail: e.detail,\n }),\n );\n }\n\n mediaTypeSelected(e: CustomEvent) {\n if (this.selectedMenuOption === e.detail.mediatype) {\n this.closeMediaSlider();\n return;\n }\n this.selectedMenuOption = e.detail.mediatype;\n this.openMediaSlider();\n }\n\n get signedOutOpened() {\n return this.openMenu === 'login';\n }\n\n get userMenuOpened() {\n return this.openMenu === 'user';\n }\n\n get userMenuTabIndex() {\n return this.userMenuOpened ? '' : '-1';\n }\n\n get signedOutTabIndex() {\n return this.signedOutOpened ? '' : '-1';\n }\n\n get closeLayerClass() {\n return !!this.openMenu || this.mediaSliderOpen ? 'visible' : '';\n }\n\n get userMenu() {\n return html`\n <ia-topnav-user-menu\n .baseHost=${this.normalizedBaseHost}\n .config=${this.config}\n .menuItems=${this.userMenuItems}\n ?open=${this.openMenu === 'user'}\n .username=${this.username}\n tabindex=\"${this.userMenuTabIndex}\"\n @menuToggled=${this.menuToggled}\n @trackClick=${this.trackClick}\n @focusToOtherMenuItem=${(e: CustomEvent) =>\n (this.currentTab = e.detail)}\n ></ia-topnav-user-menu>\n `;\n }\n\n get signedOutDropdown() {\n return html`\n <ia-topnav-signed-out-dropdown\n .baseHost=${this.normalizedBaseHost}\n .config=${this.config}\n .open=${this.signedOutOpened}\n tabindex=\"${this.signedOutTabIndex}\"\n .menuItems=${this.signedOutMenuItems}\n @focusToOtherMenuItem=${(e: CustomEvent) => {\n this.currentTab = e.detail;\n }}\n ></ia-topnav-signed-out-dropdown>\n `;\n }\n\n get signedOutMenuItems() {\n return this.menus.signedOut;\n }\n\n /**\n * Most users just get the basic menu items.\n * For users with `/items` priv, additional admin menu items are included too.\n * Having the `/flags` priv adds a further admin item for managing flags.\n * A `biblio` URL adds a section of book-scanning links, and an `uploader`\n * adds a section with the uploader's email and account admin links. Each\n * section is rendered with a divider above it.\n */\n get userMenuItems() {\n const basicItems = this.menus.user;\n if (!this.itemIdentifier || !this.admin) return [basicItems];\n\n let adminItems = this.menus.userAdmin;\n if (this.canManageFlags) {\n adminItems = adminItems.concat(this.menus.userAdminFlags);\n }\n\n // The built sections are empty until the matching prop is set and the\n // menus have been rebuilt, so gating on them keeps a divider from ever\n // rendering above an empty section.\n const { userAdminBiblio, userAdminUploader } = this.menus;\n const sections = [basicItems, adminItems];\n if (userAdminBiblio.length) sections.push(userAdminBiblio);\n if (userAdminUploader.length) sections.push(userAdminUploader);\n return sections;\n }\n\n get allowSecondaryIcon() {\n return this.secondIdentitySlotMode === 'allow';\n }\n\n get searchSlot() {\n return html`<slot name=\"search\" slot=\"search\"></slot>`;\n }\n\n get secondLogoSlot() {\n return this.allowSecondaryIcon\n ? html`\n <slot name=\"opt-sec-logo\" slot=\"opt-sec-logo\"></slot>\n <slot name=\"opt-sec-logo-mobile\" slot=\"opt-sec-logo-mobile\"></slot>\n `\n : nothing;\n }\n\n get separatorTemplate() {\n return html`<li class=\"divider\" role=\"presentation\"></li>`;\n }\n\n static get styles(): CSSResultGroup {\n return [\n themeStyles,\n css`\n :host {\n --white: #fff;\n --grey13: #222;\n --grey20: #333;\n --grey40: #666;\n --grey28: #474747;\n --grey60: #999;\n --grey66: #aaa;\n --grey80: #ccc;\n --greya0: #a0a0a0;\n --grey6f: #6f6f6f;\n --errorYellow: #ffcd27;\n\n --linkColor: #4b64ff;\n --linkHoverColor: var(--white);\n --subnavLinkColor: var(--grey66);\n --primaryTextColor: var(--white);\n --inverseTextColor: var(--grey20);\n --lightTextColor: var(--grey60);\n --activeColor: var(--white);\n --activeButtonBg: var(--grey20);\n --iconFill: var(--grey60);\n --desktopSearchIconFill: var(--grey20);\n\n --mediaMenuBg: var(--grey13);\n --mediaLabelDesktopColor: var(--grey60);\n --activeDesktopMenuIcon: var(--grey28);\n\n --mediaSliderBg: var(--grey20);\n --mediaSliderDesktopBg: var(--grey28);\n\n --primaryNavBg: var(--grey13);\n --primaryNavBottomBorder: var(--grey20);\n\n --desktopSubnavBg: var(--grey20);\n\n --dropdownMenuBg: var(--grey20);\n --dropdownMenuInfoItem: var(--greya0);\n --dropdownMenuDivider: var(--grey40);\n --inverseDropdownMenuInfoItem: var(--grey6f);\n\n --loginTextColor: var(--grey60);\n\n --themeFontFamily: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n --logoWidthTablet: 263px;\n\n --savePageSubmitBg: var(--grey13);\n --savePageSubmitText: var(--white);\n --savePageInputBorder: var(--grey60);\n --savePageErrorText: var(--errorYellow);\n\n color: var(--primaryTextColor);\n font-family: var(--themeFontFamily);\n }\n\n ia-topnav-primary-nav:focus {\n outline: none !important;\n }\n\n #close-layer {\n display: none;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 3;\n }\n #close-layer.visible {\n display: block;\n }\n\n .topnav {\n position: relative;\n z-index: 4;\n }\n\n @media (max-width: ${TOPNAV_MOBILE_BREAKPOINT - 1}px) {\n ia-topnav-desktop-subnav {\n display: none;\n }\n }\n `,\n ];\n }\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves a menu link against the topnav's base host. Absolute `http(s)`
|
|
3
|
+
* URLs pass through untouched, anything else is prefixed with `baseHost`.
|
|
4
|
+
*/
|
|
5
|
+
export declare function formatUrl(url: string | undefined, baseHost: string): string;
|
|
6
|
+
/** The string form an `aria-*` boolean attribute expects. */
|
|
7
|
+
export declare function makeBooleanString(value: boolean): 'true' | 'false';
|
|
8
|
+
/**
|
|
9
|
+
* Joins a space-separated phrase into one capitalized word, e.g.
|
|
10
|
+
* `'mobile apps'` becomes `'MobileApps'`. Used to build analytics event names.
|
|
11
|
+
*/
|
|
12
|
+
export declare function toSentenceCase(phrase: string): string;
|
|
13
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../../src/elements/ia-topnav/lib/helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,YAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAElE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOrD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves a menu link against the topnav's base host. Absolute `http(s)`
|
|
3
|
+
* URLs pass through untouched, anything else is prefixed with `baseHost`.
|
|
4
|
+
*/
|
|
5
|
+
export function formatUrl(url = '', baseHost) {
|
|
6
|
+
return /^https?:/.test(url) ? url : `${baseHost}${url}`;
|
|
7
|
+
}
|
|
8
|
+
/** The string form an `aria-*` boolean attribute expects. */
|
|
9
|
+
export function makeBooleanString(value) {
|
|
10
|
+
return value ? 'true' : 'false';
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Joins a space-separated phrase into one capitalized word, e.g.
|
|
14
|
+
* `'mobile apps'` becomes `'MobileApps'`. Used to build analytics event names.
|
|
15
|
+
*/
|
|
16
|
+
export function toSentenceCase(phrase) {
|
|
17
|
+
const words = phrase.split(' ');
|
|
18
|
+
const lastWord = words.pop() ?? '';
|
|
19
|
+
const capitalizedWord = `${lastWord.slice(0, 1).toUpperCase()}${lastWord.slice(1)}`;
|
|
20
|
+
return words.length
|
|
21
|
+
? toSentenceCase(`${words.join(' ')}${capitalizedWord}`)
|
|
22
|
+
: capitalizedWord;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../src/elements/ia-topnav/lib/helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,EAAE,QAAgB;IAC1D,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,GAAG,EAAE,CAAC;AAC1D,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IACnC,MAAM,eAAe,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACpF,OAAO,KAAK,CAAC,MAAM;QACjB,CAAC,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,eAAe,EAAE,CAAC;QACxD,CAAC,CAAC,eAAe,CAAC;AACtB,CAAC","sourcesContent":["/**\n * Resolves a menu link against the topnav's base host. Absolute `http(s)`\n * URLs pass through untouched, anything else is prefixed with `baseHost`.\n */\nexport function formatUrl(url: string = '', baseHost: string): string {\n return /^https?:/.test(url) ? url : `${baseHost}${url}`;\n}\n\n/** The string form an `aria-*` boolean attribute expects. */\nexport function makeBooleanString(value: boolean): 'true' | 'false' {\n return value ? 'true' : 'false';\n}\n\n/**\n * Joins a space-separated phrase into one capitalized word, e.g.\n * `'mobile apps'` becomes `'MobileApps'`. Used to build analytics event names.\n */\nexport function toSentenceCase(phrase: string): string {\n const words = phrase.split(' ');\n const lastWord = words.pop() ?? '';\n const capitalizedWord = `${lastWord.slice(0, 1).toUpperCase()}${lastWord.slice(1)}`;\n return words.length\n ? toSentenceCase(`${words.join(' ')}${capitalizedWord}`)\n : capitalizedWord;\n}\n"]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export default class KeyboardNavigation {
|
|
2
|
+
elementsContainer: HTMLElement;
|
|
3
|
+
menuOption: string;
|
|
4
|
+
focusableElements: HTMLElement[];
|
|
5
|
+
focusedIndex: number;
|
|
6
|
+
/**
|
|
7
|
+
* Constructor for the KeyboardNavigation class.
|
|
8
|
+
* @param {HTMLElement} elementsContainer - The container element that holds the focusable elements.
|
|
9
|
+
* @param {string} menuOption - The type of menu option ('web' or 'usermenu').
|
|
10
|
+
*/
|
|
11
|
+
constructor(elementsContainer: HTMLElement, menuOption: string);
|
|
12
|
+
/**
|
|
13
|
+
* Gets an array of focusable elements within the container.
|
|
14
|
+
* @returns {HTMLElement[]} An array of focusable elements.
|
|
15
|
+
*/
|
|
16
|
+
getFocusableElements(): HTMLElement[];
|
|
17
|
+
/**
|
|
18
|
+
* Handles keyboard events and focuses the appropriate element.
|
|
19
|
+
* @param {KeyboardEvent} event - The keyboard event object.
|
|
20
|
+
*/
|
|
21
|
+
handleKeyDown(event: KeyboardEvent): void;
|
|
22
|
+
/**
|
|
23
|
+
* Handles arrow key events and focuses the next or previous element for topnav sub-nav and usermenu
|
|
24
|
+
* @param {string} key - The key that was pressed ('ArrowDown', 'ArrowRight', 'ArrowUp', or 'ArrowLeft').
|
|
25
|
+
*/
|
|
26
|
+
handleArrowKey(key: string): void;
|
|
27
|
+
/**
|
|
28
|
+
* Handles the Tab key event and focuses the next or previous menu item.
|
|
29
|
+
* @param {KeyboardEvent} event - The keyboard event object.
|
|
30
|
+
*/
|
|
31
|
+
handleTabKey(event: KeyboardEvent): void;
|
|
32
|
+
/**
|
|
33
|
+
* Focuses the previous focusable element in the container.
|
|
34
|
+
*/
|
|
35
|
+
focusPrevious(): void;
|
|
36
|
+
/**
|
|
37
|
+
* Focuses the next focusable element in the container.
|
|
38
|
+
*/
|
|
39
|
+
focusNext(): void;
|
|
40
|
+
/**
|
|
41
|
+
* Focuses the other parent menu items based on the provided flag.
|
|
42
|
+
* @param {boolean} isPrevious - A flag indicating whether to focus the previous menu item.
|
|
43
|
+
*/
|
|
44
|
+
emitFocusToOtherMenuItems(isPrevious?: boolean): void;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=keyboard-navigation.d.ts.map
|