@internetarchive/elements 1.1.3-webdev-9240.0 → 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.
Files changed (230) hide show
  1. package/README.md +1 -1
  2. package/dist/src/elements/ia-radio-player/ia-radio-player.d.ts +0 -2
  3. package/dist/src/elements/ia-radio-player/ia-radio-player.d.ts.map +1 -1
  4. package/dist/src/elements/ia-radio-player/ia-radio-player.js +1 -6
  5. package/dist/src/elements/ia-radio-player/ia-radio-player.js.map +1 -1
  6. package/dist/src/elements/ia-topnav/assets/img/icon-audio.d.ts +3 -0
  7. package/dist/src/elements/ia-topnav/assets/img/icon-audio.d.ts.map +1 -0
  8. package/dist/src/elements/ia-topnav/assets/img/icon-audio.js +28 -0
  9. package/dist/src/elements/ia-topnav/assets/img/icon-audio.js.map +1 -0
  10. package/dist/src/elements/ia-topnav/assets/img/icon-close.d.ts +3 -0
  11. package/dist/src/elements/ia-topnav/assets/img/icon-close.d.ts.map +1 -0
  12. package/dist/src/elements/ia-topnav/assets/img/icon-close.js +20 -0
  13. package/dist/src/elements/ia-topnav/assets/img/icon-close.js.map +1 -0
  14. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.d.ts +3 -0
  15. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.d.ts.map +1 -0
  16. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.js +19 -0
  17. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.js.map +1 -0
  18. package/dist/src/elements/ia-topnav/assets/img/icon-donate.d.ts +3 -0
  19. package/dist/src/elements/ia-topnav/assets/img/icon-donate.d.ts.map +1 -0
  20. package/dist/src/elements/ia-topnav/assets/img/icon-donate.js +18 -0
  21. package/dist/src/elements/ia-topnav/assets/img/icon-donate.js.map +1 -0
  22. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.d.ts +3 -0
  23. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.d.ts.map +1 -0
  24. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.js +19 -0
  25. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.js.map +1 -0
  26. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.d.ts +3 -0
  27. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.d.ts.map +1 -0
  28. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.js +30 -0
  29. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.js.map +1 -0
  30. package/dist/src/elements/ia-topnav/assets/img/icon-images.d.ts +3 -0
  31. package/dist/src/elements/ia-topnav/assets/img/icon-images.d.ts.map +1 -0
  32. package/dist/src/elements/ia-topnav/assets/img/icon-images.js +19 -0
  33. package/dist/src/elements/ia-topnav/assets/img/icon-images.js.map +1 -0
  34. package/dist/src/elements/ia-topnav/assets/img/icon-search.d.ts +3 -0
  35. package/dist/src/elements/ia-topnav/assets/img/icon-search.d.ts.map +1 -0
  36. package/dist/src/elements/ia-topnav/assets/img/icon-search.js +19 -0
  37. package/dist/src/elements/ia-topnav/assets/img/icon-search.js.map +1 -0
  38. package/dist/src/elements/ia-topnav/assets/img/icon-software.d.ts +3 -0
  39. package/dist/src/elements/ia-topnav/assets/img/icon-software.d.ts.map +1 -0
  40. package/dist/src/elements/ia-topnav/assets/img/icon-software.js +18 -0
  41. package/dist/src/elements/ia-topnav/assets/img/icon-software.js.map +1 -0
  42. package/dist/src/elements/ia-topnav/assets/img/icon-texts.d.ts +3 -0
  43. package/dist/src/elements/ia-topnav/assets/img/icon-texts.d.ts.map +1 -0
  44. package/dist/src/elements/ia-topnav/assets/img/icon-texts.js +18 -0
  45. package/dist/src/elements/ia-topnav/assets/img/icon-texts.js.map +1 -0
  46. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.d.ts +3 -0
  47. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.d.ts.map +1 -0
  48. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.js +18 -0
  49. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.js.map +1 -0
  50. package/dist/src/elements/ia-topnav/assets/img/icon-upload.d.ts +3 -0
  51. package/dist/src/elements/ia-topnav/assets/img/icon-upload.d.ts.map +1 -0
  52. package/dist/src/elements/ia-topnav/assets/img/icon-upload.js +21 -0
  53. package/dist/src/elements/ia-topnav/assets/img/icon-upload.js.map +1 -0
  54. package/dist/src/elements/ia-topnav/assets/img/icon-user.d.ts +3 -0
  55. package/dist/src/elements/ia-topnav/assets/img/icon-user.d.ts.map +1 -0
  56. package/dist/src/elements/ia-topnav/assets/img/icon-user.js +19 -0
  57. package/dist/src/elements/ia-topnav/assets/img/icon-user.js.map +1 -0
  58. package/dist/src/elements/ia-topnav/assets/img/icon-video.d.ts +3 -0
  59. package/dist/src/elements/ia-topnav/assets/img/icon-video.d.ts.map +1 -0
  60. package/dist/src/elements/ia-topnav/assets/img/icon-video.js +19 -0
  61. package/dist/src/elements/ia-topnav/assets/img/icon-video.js.map +1 -0
  62. package/dist/src/elements/ia-topnav/assets/img/icon-web.d.ts +3 -0
  63. package/dist/src/elements/ia-topnav/assets/img/icon-web.d.ts.map +1 -0
  64. package/dist/src/elements/ia-topnav/assets/img/icon-web.js +19 -0
  65. package/dist/src/elements/ia-topnav/assets/img/icon-web.js.map +1 -0
  66. package/dist/src/elements/ia-topnav/assets/img/icon.d.ts +6 -0
  67. package/dist/src/elements/ia-topnav/assets/img/icon.d.ts.map +1 -0
  68. package/dist/src/elements/ia-topnav/assets/img/icon.js +17 -0
  69. package/dist/src/elements/ia-topnav/assets/img/icon.js.map +1 -0
  70. package/dist/src/elements/ia-topnav/assets/img/icons.d.ts +19 -0
  71. package/dist/src/elements/ia-topnav/assets/img/icons.d.ts.map +1 -0
  72. package/dist/src/elements/ia-topnav/assets/img/icons.js +33 -0
  73. package/dist/src/elements/ia-topnav/assets/img/icons.js.map +1 -0
  74. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.d.ts +3 -0
  75. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.d.ts.map +1 -0
  76. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.js +21 -0
  77. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.js.map +1 -0
  78. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.d.ts +3 -0
  79. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.d.ts.map +1 -0
  80. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.js +13 -0
  81. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.js.map +1 -0
  82. package/dist/src/elements/ia-topnav/data/menus.d.ts +17 -0
  83. package/dist/src/elements/ia-topnav/data/menus.d.ts.map +1 -0
  84. package/dist/src/elements/ia-topnav/data/menus.js +680 -0
  85. package/dist/src/elements/ia-topnav/data/menus.js.map +1 -0
  86. package/dist/src/elements/ia-topnav/dropdown-menu.d.ts +21 -0
  87. package/dist/src/elements/ia-topnav/dropdown-menu.d.ts.map +1 -0
  88. package/dist/src/elements/ia-topnav/dropdown-menu.js +315 -0
  89. package/dist/src/elements/ia-topnav/dropdown-menu.js.map +1 -0
  90. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.d.ts +11 -0
  91. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.d.ts.map +1 -0
  92. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.js +89 -0
  93. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.js.map +1 -0
  94. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.d.ts +6 -0
  95. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.d.ts.map +1 -0
  96. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.js +47 -0
  97. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.js.map +1 -0
  98. package/dist/src/elements/ia-topnav/ia-topnav-login-button.d.ts +20 -0
  99. package/dist/src/elements/ia-topnav/ia-topnav-login-button.d.ts.map +1 -0
  100. package/dist/src/elements/ia-topnav/ia-topnav-login-button.js +183 -0
  101. package/dist/src/elements/ia-topnav/ia-topnav-login-button.js.map +1 -0
  102. package/dist/src/elements/ia-topnav/ia-topnav-media-button.d.ts +31 -0
  103. package/dist/src/elements/ia-topnav/ia-topnav-media-button.d.ts.map +1 -0
  104. package/dist/src/elements/ia-topnav/ia-topnav-media-button.js +287 -0
  105. package/dist/src/elements/ia-topnav/ia-topnav-media-button.js.map +1 -0
  106. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.d.ts +21 -0
  107. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.d.ts.map +1 -0
  108. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.js +222 -0
  109. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.js.map +1 -0
  110. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.d.ts +16 -0
  111. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.d.ts.map +1 -0
  112. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.js +221 -0
  113. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.js.map +1 -0
  114. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.d.ts +20 -0
  115. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.d.ts.map +1 -0
  116. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.js +285 -0
  117. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.js.map +1 -0
  118. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.d.ts +12 -0
  119. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.d.ts.map +1 -0
  120. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.js +65 -0
  121. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.js.map +1 -0
  122. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.d.ts +53 -0
  123. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.d.ts.map +1 -0
  124. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.js +653 -0
  125. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.js.map +1 -0
  126. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.d.ts +12 -0
  127. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.d.ts.map +1 -0
  128. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.js +128 -0
  129. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.js.map +1 -0
  130. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.d.ts +4 -0
  131. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.d.ts.map +1 -0
  132. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.js +10 -0
  133. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.js.map +1 -0
  134. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.d.ts +7 -0
  135. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.d.ts.map +1 -0
  136. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.js +39 -0
  137. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.js.map +1 -0
  138. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.d.ts +10 -0
  139. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.d.ts.map +1 -0
  140. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.js +64 -0
  141. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.js.map +1 -0
  142. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.d.ts +20 -0
  143. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.d.ts.map +1 -0
  144. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.js +131 -0
  145. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.js.map +1 -0
  146. package/dist/src/elements/ia-topnav/ia-topnav.d.ts +85 -0
  147. package/dist/src/elements/ia-topnav/ia-topnav.d.ts.map +1 -0
  148. package/dist/src/elements/ia-topnav/ia-topnav.js +434 -0
  149. package/dist/src/elements/ia-topnav/ia-topnav.js.map +1 -0
  150. package/dist/src/elements/ia-topnav/lib/helpers.d.ts +13 -0
  151. package/dist/src/elements/ia-topnav/lib/helpers.d.ts.map +1 -0
  152. package/dist/src/elements/ia-topnav/lib/helpers.js +24 -0
  153. package/dist/src/elements/ia-topnav/lib/helpers.js.map +1 -0
  154. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.d.ts +46 -0
  155. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.d.ts.map +1 -0
  156. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.js +136 -0
  157. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.js.map +1 -0
  158. package/dist/src/elements/ia-topnav/models.d.ts +59 -0
  159. package/dist/src/elements/ia-topnav/models.d.ts.map +1 -0
  160. package/dist/src/elements/ia-topnav/models.js +10 -0
  161. package/dist/src/elements/ia-topnav/models.js.map +1 -0
  162. package/dist/src/elements/ia-topnav/subnav-list-styles.d.ts +2 -0
  163. package/dist/src/elements/ia-topnav/subnav-list-styles.d.ts.map +1 -0
  164. package/dist/src/elements/ia-topnav/subnav-list-styles.js +49 -0
  165. package/dist/src/elements/ia-topnav/subnav-list-styles.js.map +1 -0
  166. package/dist/src/elements/ia-topnav/tracked-element.d.ts +6 -0
  167. package/dist/src/elements/ia-topnav/tracked-element.d.ts.map +1 -0
  168. package/dist/src/elements/ia-topnav/tracked-element.js +29 -0
  169. package/dist/src/elements/ia-topnav/tracked-element.js.map +1 -0
  170. package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.d.ts +24 -0
  171. package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.d.ts.map +1 -0
  172. package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.js +240 -0
  173. package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.js.map +1 -0
  174. package/dist/src/elements/index.d.ts +3 -5
  175. package/dist/src/elements/index.d.ts.map +1 -1
  176. package/dist/src/elements/index.js +3 -5
  177. package/dist/src/elements/index.js.map +1 -1
  178. package/package.json +3 -9
  179. package/dist/src/elements/ia-reviews/assets/delete-icon.svg +0 -8
  180. package/dist/src/elements/ia-reviews/assets/star-basic.svg +0 -6
  181. package/dist/src/elements/ia-reviews/assets/star-selected.svg +0 -8
  182. package/dist/src/elements/ia-reviews/assets/star-unselected.svg +0 -8
  183. package/dist/src/elements/ia-reviews/ia-review-form.d.ts +0 -103
  184. package/dist/src/elements/ia-reviews/ia-review-form.d.ts.map +0 -1
  185. package/dist/src/elements/ia-reviews/ia-review-form.js +0 -685
  186. package/dist/src/elements/ia-reviews/ia-review-form.js.map +0 -1
  187. package/dist/src/elements/ia-reviews/ia-review.d.ts +0 -51
  188. package/dist/src/elements/ia-reviews/ia-review.d.ts.map +0 -1
  189. package/dist/src/elements/ia-reviews/ia-review.js +0 -344
  190. package/dist/src/elements/ia-reviews/ia-review.js.map +0 -1
  191. package/dist/src/elements/ia-reviews/ia-reviews.d.ts +0 -68
  192. package/dist/src/elements/ia-reviews/ia-reviews.d.ts.map +0 -1
  193. package/dist/src/elements/ia-reviews/ia-reviews.js +0 -354
  194. package/dist/src/elements/ia-reviews/ia-reviews.js.map +0 -1
  195. package/dist/src/elements/ia-reviews/mocks/mock-fetch-handler.d.ts +0 -23
  196. package/dist/src/elements/ia-reviews/mocks/mock-fetch-handler.d.ts.map +0 -1
  197. package/dist/src/elements/ia-reviews/mocks/mock-fetch-handler.js +0 -37
  198. package/dist/src/elements/ia-reviews/mocks/mock-fetch-handler.js.map +0 -1
  199. package/dist/src/elements/ia-reviews/mocks/mock-review-service.d.ts +0 -12
  200. package/dist/src/elements/ia-reviews/mocks/mock-review-service.d.ts.map +0 -1
  201. package/dist/src/elements/ia-reviews/mocks/mock-review-service.js +0 -19
  202. package/dist/src/elements/ia-reviews/mocks/mock-review-service.js.map +0 -1
  203. package/dist/src/elements/ia-reviews/models.d.ts +0 -38
  204. package/dist/src/elements/ia-reviews/models.d.ts.map +0 -1
  205. package/dist/src/elements/ia-reviews/models.js +0 -2
  206. package/dist/src/elements/ia-reviews/models.js.map +0 -1
  207. package/dist/src/elements/ia-reviews/review-service.d.ts +0 -53
  208. package/dist/src/elements/ia-reviews/review-service.d.ts.map +0 -1
  209. package/dist/src/elements/ia-reviews/review-service.js +0 -97
  210. package/dist/src/elements/ia-reviews/review-service.js.map +0 -1
  211. package/dist/src/elements/ia-reviews/utils/collapse-space.d.ts +0 -13
  212. package/dist/src/elements/ia-reviews/utils/collapse-space.d.ts.map +0 -1
  213. package/dist/src/elements/ia-reviews/utils/collapse-space.js +0 -19
  214. package/dist/src/elements/ia-reviews/utils/collapse-space.js.map +0 -1
  215. package/dist/src/elements/ia-reviews/utils/friendly-truncate.d.ts +0 -14
  216. package/dist/src/elements/ia-reviews/utils/friendly-truncate.d.ts.map +0 -1
  217. package/dist/src/elements/ia-reviews/utils/friendly-truncate.js +0 -65
  218. package/dist/src/elements/ia-reviews/utils/friendly-truncate.js.map +0 -1
  219. package/dist/src/elements/ia-reviews/utils/link-urls-in-text.d.ts +0 -9
  220. package/dist/src/elements/ia-reviews/utils/link-urls-in-text.d.ts.map +0 -1
  221. package/dist/src/elements/ia-reviews/utils/link-urls-in-text.js +0 -40
  222. package/dist/src/elements/ia-reviews/utils/link-urls-in-text.js.map +0 -1
  223. package/dist/src/elements/ia-reviews/utils/sanitize-review-body.d.ts +0 -9
  224. package/dist/src/elements/ia-reviews/utils/sanitize-review-body.d.ts.map +0 -1
  225. package/dist/src/elements/ia-reviews/utils/sanitize-review-body.js +0 -29
  226. package/dist/src/elements/ia-reviews/utils/sanitize-review-body.js.map +0 -1
  227. package/dist/src/elements/ia-reviews/utils/truncate-screenname.d.ts +0 -13
  228. package/dist/src/elements/ia-reviews/utils/truncate-screenname.d.ts.map +0 -1
  229. package/dist/src/elements/ia-reviews/utils/truncate-screenname.js +0 -19
  230. package/dist/src/elements/ia-reviews/utils/truncate-screenname.js.map +0 -1
@@ -0,0 +1,222 @@
1
+ import { __decorate } from "tslib";
2
+ import { LitElement, css, html } from 'lit';
3
+ import { property, queryAll } from 'lit/decorators.js';
4
+ import { customElement } from '../../util/custom-element.js';
5
+ import { defaultTopNavConfig } from './data/menus.js';
6
+ import { formatUrl } from './lib/helpers.js';
7
+ import './ia-topnav-media-button.js';
8
+ import { TOPNAV_MOBILE_BREAKPOINT } from './models.js';
9
+ import themeStyles from '../../themes/theme-styles.js';
10
+ import { localized, msg } from '@lit/localize';
11
+ /**
12
+ * The top-level media buttons. A function so the labels are read in the
13
+ * current locale each time the menu renders.
14
+ */
15
+ function menuSelection() {
16
+ return [
17
+ {
18
+ icon: 'web',
19
+ menu: 'web',
20
+ href: 'https://web.archive.org',
21
+ label: 'Wayback Machine',
22
+ },
23
+ {
24
+ icon: 'texts',
25
+ menu: 'texts',
26
+ href: '/details/texts',
27
+ label: msg('Texts'),
28
+ },
29
+ {
30
+ icon: 'video',
31
+ menu: 'video',
32
+ href: '/details/movies',
33
+ label: msg('Video'),
34
+ },
35
+ {
36
+ icon: 'audio',
37
+ menu: 'audio',
38
+ href: '/details/audio',
39
+ label: msg('Audio'),
40
+ },
41
+ {
42
+ icon: 'software',
43
+ menu: 'software',
44
+ href: '/details/software',
45
+ label: msg('Software'),
46
+ },
47
+ {
48
+ icon: 'images',
49
+ menu: 'images',
50
+ href: '/details/image',
51
+ label: msg('Images'),
52
+ },
53
+ {
54
+ icon: 'donate',
55
+ menu: 'donate',
56
+ href: '/donate/?origin=iawww-mbhmbgrmenu',
57
+ label: msg('Donate'),
58
+ followable: true,
59
+ },
60
+ {
61
+ icon: 'ellipses',
62
+ menu: 'more',
63
+ href: '/about/',
64
+ label: msg('More'),
65
+ },
66
+ ];
67
+ }
68
+ let MediaMenu = class MediaMenu extends LitElement {
69
+ constructor() {
70
+ super(...arguments);
71
+ this.baseHost = '';
72
+ this.config = defaultTopNavConfig;
73
+ this.openMenu = '';
74
+ this.selectedMenuOption = '';
75
+ }
76
+ updated(props) {
77
+ if (props.has('currentTab')) {
78
+ const mediaButtons = Array.from(this.mediaButtons ?? []);
79
+ mediaButtons.map((button, index) => {
80
+ const linkItem = button.shadowRoot?.querySelector('a.menu-item');
81
+ if (linkItem) {
82
+ if (linkItem.classList.contains(`${this.selectedMenuOption}`)) {
83
+ linkItem.classList.remove('selected');
84
+ linkItem.blur();
85
+ const newFocusIndex = this.currentTab?.moveTo === 'next' ? index + 1 : index - 1;
86
+ (mediaButtons[newFocusIndex]?.shadowRoot?.querySelector('a.menu-item')).focus();
87
+ }
88
+ }
89
+ });
90
+ }
91
+ }
92
+ render() {
93
+ return html `
94
+ <div class="media-menu-container ${this.menuClass}">
95
+ <div class="overflow-clip">
96
+ <nav class="media-menu-inner" aria-expanded="${this.menuOpened}">
97
+ <div class="menu-group">${this.mediaMenuOptionsTemplate}</div>
98
+ </nav>
99
+ </div>
100
+ </div>
101
+ `;
102
+ }
103
+ get mediaMenuOptionsTemplate() {
104
+ const buttons = menuSelection().map(({ icon, menu, label, href, followable }) => {
105
+ const selected = this.selectedMenuOption === menu;
106
+ return html `
107
+ <ia-topnav-media-button
108
+ .config=${this.config}
109
+ .icon=${icon}
110
+ .href=${formatUrl(href, this.baseHost)}
111
+ ?followable=${followable}
112
+ .label=${label}
113
+ .mediatype=${menu}
114
+ .openMenu=${this.openMenu}
115
+ .selected=${selected}
116
+ .selectedMenuOption=${this.selectedMenuOption}
117
+ data-mediatype="${menu}"
118
+ ></ia-topnav-media-button>
119
+ `;
120
+ });
121
+ return buttons;
122
+ }
123
+ get menuOpened() {
124
+ return this.openMenu === 'media';
125
+ }
126
+ get menuClass() {
127
+ return this.menuOpened ? 'open' : 'closed';
128
+ }
129
+ static get styles() {
130
+ return [
131
+ themeStyles,
132
+ css `
133
+ :host {
134
+ outline: none;
135
+ }
136
+
137
+ .media-menu-inner {
138
+ z-index: -1;
139
+ top: -40rem;
140
+ background-color: var(--mediaMenuBg);
141
+ margin: 0;
142
+ overflow: hidden;
143
+ transition-duration: 0.2s;
144
+ transition-property: top;
145
+ transition-timing-function: ease;
146
+ }
147
+
148
+ .menu-group {
149
+ position: relative;
150
+ line-height: normal;
151
+ }
152
+
153
+ /* Mobile view styles */
154
+ @media (max-width: ${TOPNAV_MOBILE_BREAKPOINT - 1}px) {
155
+ .media-menu-inner {
156
+ position: absolute;
157
+ width: 100%;
158
+ }
159
+
160
+ .open .media-menu-inner {
161
+ top: 0;
162
+ }
163
+
164
+ .overflow-clip {
165
+ position: absolute;
166
+ z-index: -1; /** needs to be under the navigation, otherwise it intercepts clicks */
167
+ top: 4rem;
168
+ left: 0;
169
+ height: 0;
170
+ width: 100%;
171
+ overflow: hidden;
172
+ transition-duration: 0.2s;
173
+ transition-property: height;
174
+ }
175
+
176
+ .open .overflow-clip {
177
+ height: 40rem;
178
+ }
179
+ }
180
+
181
+ /* Desktop view styles */
182
+ @media (min-width: ${TOPNAV_MOBILE_BREAKPOINT}px) {
183
+ .media-menu-inner {
184
+ display: block;
185
+ position: static;
186
+ width: auto;
187
+ height: 5rem;
188
+ transition-property: none;
189
+ }
190
+
191
+ .menu-group {
192
+ font-size: 0;
193
+ }
194
+ }
195
+ `,
196
+ ];
197
+ }
198
+ };
199
+ __decorate([
200
+ property({ type: String })
201
+ ], MediaMenu.prototype, "baseHost", void 0);
202
+ __decorate([
203
+ property({ type: Object })
204
+ ], MediaMenu.prototype, "config", void 0);
205
+ __decorate([
206
+ property({ type: String })
207
+ ], MediaMenu.prototype, "openMenu", void 0);
208
+ __decorate([
209
+ property({ type: String })
210
+ ], MediaMenu.prototype, "selectedMenuOption", void 0);
211
+ __decorate([
212
+ property({ type: Object })
213
+ ], MediaMenu.prototype, "currentTab", void 0);
214
+ __decorate([
215
+ queryAll('ia-topnav-media-button')
216
+ ], MediaMenu.prototype, "mediaButtons", void 0);
217
+ MediaMenu = __decorate([
218
+ customElement('ia-topnav-media-menu'),
219
+ localized()
220
+ ], MediaMenu);
221
+ export { MediaMenu };
222
+ //# sourceMappingURL=ia-topnav-media-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-topnav-media-menu.js","sourceRoot":"","sources":["../../../../src/elements/ia-topnav/ia-topnav-media-menu.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResultGroup, LitElement, PropertyValues, css, html } from 'lit';\nimport { property, queryAll } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\n\nimport { defaultTopNavConfig } from './data/menus';\nimport { formatUrl } from './lib/helpers';\nimport './ia-topnav-media-button';\nimport { MediaButton } from './ia-topnav-media-button';\nimport { IATopNavConfig, TOPNAV_MOBILE_BREAKPOINT } from './models';\nimport themeStyles from '@src/themes/theme-styles';\nimport { localized, msg } from '@lit/localize';\n\ntype MediaMenuOption = {\n icon: string;\n menu: string;\n href: string;\n label: string;\n followable?: boolean;\n};\n\n/**\n * The top-level media buttons. A function so the labels are read in the\n * current locale each time the menu renders.\n */\nfunction menuSelection(): MediaMenuOption[] {\n return [\n {\n icon: 'web',\n menu: 'web',\n href: 'https://web.archive.org',\n label: 'Wayback Machine',\n },\n {\n icon: 'texts',\n menu: 'texts',\n href: '/details/texts',\n label: msg('Texts'),\n },\n {\n icon: 'video',\n menu: 'video',\n href: '/details/movies',\n label: msg('Video'),\n },\n {\n icon: 'audio',\n menu: 'audio',\n href: '/details/audio',\n label: msg('Audio'),\n },\n {\n icon: 'software',\n menu: 'software',\n href: '/details/software',\n label: msg('Software'),\n },\n {\n icon: 'images',\n menu: 'images',\n href: '/details/image',\n label: msg('Images'),\n },\n {\n icon: 'donate',\n menu: 'donate',\n href: '/donate/?origin=iawww-mbhmbgrmenu',\n label: msg('Donate'),\n followable: true,\n },\n {\n icon: 'ellipses',\n menu: 'more',\n href: '/about/',\n label: msg('More'),\n },\n ];\n}\n\n@customElement('ia-topnav-media-menu')\n@localized()\nexport class MediaMenu extends LitElement {\n @property({ type: String }) baseHost = '';\n @property({ type: Object }) config: IATopNavConfig = defaultTopNavConfig;\n @property({ type: String }) openMenu = '';\n @property({ type: String }) selectedMenuOption = '';\n @property({ type: Object }) currentTab: { moveTo: string } | undefined;\n\n @queryAll('ia-topnav-media-button') mediaButtons?: MediaButton[];\n\n updated(props: PropertyValues) {\n if (props.has('currentTab')) {\n const mediaButtons = Array.from(this.mediaButtons ?? []);\n\n mediaButtons.map((button, index) => {\n const linkItem = button.shadowRoot?.querySelector('a.menu-item');\n if (linkItem) {\n if (linkItem.classList.contains(`${this.selectedMenuOption}`)) {\n linkItem.classList.remove('selected');\n (linkItem as HTMLElement).blur();\n\n const newFocusIndex =\n this.currentTab?.moveTo === 'next' ? index + 1 : index - 1;\n (\n mediaButtons[newFocusIndex]?.shadowRoot?.querySelector(\n 'a.menu-item',\n ) as HTMLElement\n ).focus();\n }\n }\n });\n }\n }\n\n render() {\n return html`\n <div class=\"media-menu-container ${this.menuClass}\">\n <div class=\"overflow-clip\">\n <nav class=\"media-menu-inner\" aria-expanded=\"${this.menuOpened}\">\n <div class=\"menu-group\">${this.mediaMenuOptionsTemplate}</div>\n </nav>\n </div>\n </div>\n `;\n }\n\n get mediaMenuOptionsTemplate() {\n const buttons = menuSelection().map(\n ({ icon, menu, label, href, followable }) => {\n const selected = this.selectedMenuOption === menu;\n return html`\n <ia-topnav-media-button\n .config=${this.config}\n .icon=${icon}\n .href=${formatUrl(href as string & Location, this.baseHost)}\n ?followable=${followable}\n .label=${label}\n .mediatype=${menu}\n .openMenu=${this.openMenu}\n .selected=${selected}\n .selectedMenuOption=${this.selectedMenuOption}\n data-mediatype=\"${menu}\"\n ></ia-topnav-media-button>\n `;\n },\n );\n return buttons;\n }\n\n get menuOpened() {\n return this.openMenu === 'media';\n }\n\n get menuClass() {\n return this.menuOpened ? 'open' : 'closed';\n }\n\n static get styles(): CSSResultGroup {\n return [\n themeStyles,\n css`\n :host {\n outline: none;\n }\n\n .media-menu-inner {\n z-index: -1;\n top: -40rem;\n background-color: var(--mediaMenuBg);\n margin: 0;\n overflow: hidden;\n transition-duration: 0.2s;\n transition-property: top;\n transition-timing-function: ease;\n }\n\n .menu-group {\n position: relative;\n line-height: normal;\n }\n\n /* Mobile view styles */\n @media (max-width: ${TOPNAV_MOBILE_BREAKPOINT - 1}px) {\n .media-menu-inner {\n position: absolute;\n width: 100%;\n }\n\n .open .media-menu-inner {\n top: 0;\n }\n\n .overflow-clip {\n position: absolute;\n z-index: -1; /** needs to be under the navigation, otherwise it intercepts clicks */\n top: 4rem;\n left: 0;\n height: 0;\n width: 100%;\n overflow: hidden;\n transition-duration: 0.2s;\n transition-property: height;\n }\n\n .open .overflow-clip {\n height: 40rem;\n }\n }\n\n /* Desktop view styles */\n @media (min-width: ${TOPNAV_MOBILE_BREAKPOINT}px) {\n .media-menu-inner {\n display: block;\n position: static;\n width: auto;\n height: 5rem;\n transition-property: none;\n }\n\n .menu-group {\n font-size: 0;\n }\n }\n `,\n ];\n }\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import { CSSResultGroup, LitElement, PropertyValues } from 'lit';
2
+ import './ia-topnav-media-subnav.js';
3
+ import { IATopNavConfig, IATopNavMenuConfig } from './models.js';
4
+ export declare class MediaSlider extends LitElement {
5
+ baseHost: string;
6
+ config: IATopNavConfig;
7
+ mediaSliderOpen: boolean;
8
+ menus: IATopNavMenuConfig;
9
+ selectedMenuOption: string;
10
+ private previousKeydownListener;
11
+ shouldUpdate(): boolean;
12
+ updated(props: PropertyValues): void;
13
+ render(): import("lit").TemplateResult<1>;
14
+ static get styles(): CSSResultGroup;
15
+ }
16
+ //# sourceMappingURL=ia-topnav-media-slider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-topnav-media-slider.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-topnav/ia-topnav-media-slider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAa,MAAM,KAAK,CAAC;AAC5E,OAAO,0BAA0B,CAAC;AAIlC,OAAO,EACL,cAAc,EACd,kBAAkB,EAEnB,MAAM,UAAU,CAAC;AAIlB,qBACa,WAAY,SAAQ,UAAU;IACb,QAAQ,SAAM;IACd,MAAM,EAAE,cAAc,CAAuB;IAC5C,eAAe,UAAS;IACzB,KAAK,EAAE,kBAAkB,CAAsB;IAC/C,kBAAkB,SAAW;IAEzD,OAAO,CAAC,uBAAuB,CAC6B;IAE5D,YAAY;IAWZ,OAAO,CAAC,KAAK,EAAE,cAAc;IAmB7B,MAAM;IA8EN,MAAM,KAAK,MAAM,IAAI,cAAc,CAmFlC;CACF"}
@@ -0,0 +1,221 @@
1
+ import { __decorate } from "tslib";
2
+ import { LitElement, css, html } from 'lit';
3
+ import './ia-topnav-media-subnav.js';
4
+ import KeyboardNavigation from './lib/keyboard-navigation.js';
5
+ import { property } from 'lit/decorators.js';
6
+ import { customElement } from '../../util/custom-element.js';
7
+ import { TOPNAV_MOBILE_BREAKPOINT, } from './models.js';
8
+ import { buildTopNavMenus, defaultTopNavConfig } from './data/menus.js';
9
+ import themeStyles from '../../themes/theme-styles.js';
10
+ let MediaSlider = class MediaSlider extends LitElement {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.baseHost = '';
14
+ this.config = defaultTopNavConfig;
15
+ this.mediaSliderOpen = false;
16
+ this.menus = buildTopNavMenus();
17
+ this.selectedMenuOption = 'texts';
18
+ }
19
+ shouldUpdate() {
20
+ const scrollPane = this.shadowRoot
21
+ ? this.shadowRoot.querySelector('.information-menu')
22
+ : null;
23
+ if (scrollPane) {
24
+ scrollPane.scrollTop = 0;
25
+ }
26
+ return true;
27
+ }
28
+ updated(props) {
29
+ if (props.has('selectedMenuOption') && this.selectedMenuOption) {
30
+ const container = this.shadowRoot?.querySelector('.has-focused')?.shadowRoot;
31
+ if (container) {
32
+ const keyboardNavigation = new KeyboardNavigation(container, this.selectedMenuOption);
33
+ if (this.previousKeydownListener) {
34
+ this.removeEventListener('keydown', this.previousKeydownListener);
35
+ }
36
+ this.addEventListener('keydown', keyboardNavigation.handleKeyDown);
37
+ this.previousKeydownListener = keyboardNavigation.handleKeyDown;
38
+ }
39
+ }
40
+ }
41
+ render() {
42
+ const sliderDetailsClass = this.mediaSliderOpen ? 'open' : 'closed';
43
+ return html `
44
+ <div class="media-slider-container">
45
+ <div class="overflow-clip ${sliderDetailsClass}">
46
+ <div class="information-menu ${sliderDetailsClass}">
47
+ <div class="info-box">
48
+ <ia-topnav-media-subnav
49
+ .baseHost=${this.baseHost}
50
+ .config=${this.config}
51
+ class="${this.selectedMenuOption === 'audio'
52
+ ? 'has-focused'
53
+ : 'hidden'}"
54
+ menu="audio"
55
+ .menuItems=${this.menus.audio}
56
+ ></ia-topnav-media-subnav>
57
+ <ia-topnav-media-subnav
58
+ .baseHost=${this.baseHost}
59
+ .config=${this.config}
60
+ class="${this.selectedMenuOption === 'images'
61
+ ? 'has-focused'
62
+ : 'hidden'}"
63
+ menu="images"
64
+ .menuItems=${this.menus.images}
65
+ ></ia-topnav-media-subnav>
66
+ <ia-topnav-media-subnav
67
+ .baseHost=${this.baseHost}
68
+ .config=${this.config}
69
+ class="${this.selectedMenuOption === 'software'
70
+ ? 'has-focused'
71
+ : 'hidden'}"
72
+ menu="software"
73
+ .menuItems=${this.menus.software}
74
+ ></ia-topnav-media-subnav>
75
+ <ia-topnav-media-subnav
76
+ .baseHost=${this.baseHost}
77
+ .config=${this.config}
78
+ class="${this.selectedMenuOption === 'texts'
79
+ ? 'has-focused'
80
+ : 'hidden'}"
81
+ menu="texts"
82
+ .menuItems=${this.menus.texts}
83
+ ></ia-topnav-media-subnav>
84
+ <ia-topnav-media-subnav
85
+ .baseHost=${this.baseHost}
86
+ .config=${this.config}
87
+ class="${this.selectedMenuOption === 'video'
88
+ ? 'has-focused'
89
+ : 'hidden'}"
90
+ menu="video"
91
+ .menuItems=${this.menus.video}
92
+ ></ia-topnav-media-subnav>
93
+ <ia-topnav-media-subnav
94
+ .baseHost=${this.baseHost}
95
+ .config=${this.config}
96
+ class="${this.selectedMenuOption === 'web'
97
+ ? 'has-focused'
98
+ : 'hidden'}"
99
+ menu="web"
100
+ .menuItems=${this.menus.web}
101
+ ></ia-topnav-media-subnav>
102
+ <ia-topnav-media-subnav
103
+ .baseHost=${this.baseHost}
104
+ .config=${this.config}
105
+ class="${this.selectedMenuOption === 'more'
106
+ ? 'has-focused'
107
+ : 'hidden'}"
108
+ menu="more"
109
+ .menuItems=${this.menus.more}
110
+ ></ia-topnav-media-subnav>
111
+ </div>
112
+ </div>
113
+ </div>
114
+ </div>
115
+ `;
116
+ }
117
+ static get styles() {
118
+ return [
119
+ themeStyles,
120
+ css `
121
+ .media-slider-container {
122
+ position: relative;
123
+ }
124
+
125
+ .overflow-clip {
126
+ display: none;
127
+ position: absolute;
128
+ top: 0;
129
+ right: 0;
130
+ left: 0;
131
+ height: 0;
132
+ overflow: hidden;
133
+ transition: height 0.2s ease;
134
+ }
135
+
136
+ .information-menu {
137
+ position: absolute;
138
+ top: 0;
139
+ right: 0;
140
+ left: 0;
141
+ padding: 0;
142
+ height: 31.9rem;
143
+ overflow-x: hidden;
144
+ font-size: 1.4rem;
145
+ background: var(--mediaSliderBg);
146
+ }
147
+
148
+ .open {
149
+ display: block;
150
+ }
151
+
152
+ .hidden {
153
+ display: none;
154
+ }
155
+
156
+ .info-box {
157
+ padding: 1rem;
158
+ }
159
+
160
+ @media (max-width: ${TOPNAV_MOBILE_BREAKPOINT - 1}px) {
161
+ .overflow-clip.open {
162
+ display: block;
163
+ height: 35.8rem;
164
+ left: 4rem;
165
+ top: 0;
166
+ }
167
+ }
168
+
169
+ @media (min-width: ${TOPNAV_MOBILE_BREAKPOINT}px) {
170
+ .overflow-clip {
171
+ display: block;
172
+ }
173
+
174
+ .information-menu {
175
+ left: 0;
176
+ z-index: 3;
177
+ height: auto;
178
+ min-height: 21rem;
179
+ background: var(--mediaSliderDesktopBg);
180
+ transform: translate(0, -100%);
181
+ transition: transform 0.2s ease;
182
+ }
183
+
184
+ .overflow-clip.open {
185
+ height: 22rem;
186
+ }
187
+
188
+ .information-menu.open {
189
+ transform: translate(0, 0);
190
+ }
191
+
192
+ .info-box {
193
+ max-width: 100rem;
194
+ padding: 1.5rem 0;
195
+ margin: 0 auto;
196
+ }
197
+ }
198
+ `,
199
+ ];
200
+ }
201
+ };
202
+ __decorate([
203
+ property({ type: String })
204
+ ], MediaSlider.prototype, "baseHost", void 0);
205
+ __decorate([
206
+ property({ type: Object })
207
+ ], MediaSlider.prototype, "config", void 0);
208
+ __decorate([
209
+ property({ type: Boolean })
210
+ ], MediaSlider.prototype, "mediaSliderOpen", void 0);
211
+ __decorate([
212
+ property({ type: Object })
213
+ ], MediaSlider.prototype, "menus", void 0);
214
+ __decorate([
215
+ property({ type: String })
216
+ ], MediaSlider.prototype, "selectedMenuOption", void 0);
217
+ MediaSlider = __decorate([
218
+ customElement('ia-topnav-media-slider')
219
+ ], MediaSlider);
220
+ export { MediaSlider };
221
+ //# sourceMappingURL=ia-topnav-media-slider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-topnav-media-slider.js","sourceRoot":"","sources":["../../../../src/elements/ia-topnav/ia-topnav-media-slider.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResultGroup, LitElement, PropertyValues, css, html } from 'lit';\nimport './ia-topnav-media-subnav';\nimport KeyboardNavigation from './lib/keyboard-navigation';\nimport { property } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\nimport {\n IATopNavConfig,\n IATopNavMenuConfig,\n TOPNAV_MOBILE_BREAKPOINT,\n} from './models';\nimport { buildTopNavMenus, defaultTopNavConfig } from './data/menus';\nimport themeStyles from '@src/themes/theme-styles';\n\n@customElement('ia-topnav-media-slider')\nexport class MediaSlider extends LitElement {\n @property({ type: String }) baseHost = '';\n @property({ type: Object }) config: IATopNavConfig = defaultTopNavConfig;\n @property({ type: Boolean }) mediaSliderOpen = false;\n @property({ type: Object }) menus: IATopNavMenuConfig = buildTopNavMenus();\n @property({ type: String }) selectedMenuOption = 'texts';\n\n private previousKeydownListener: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((this: HTMLElement, ev: KeyboardEvent) => any) | undefined;\n\n shouldUpdate() {\n const scrollPane = this.shadowRoot\n ? this.shadowRoot.querySelector('.information-menu')\n : null;\n\n if (scrollPane) {\n scrollPane.scrollTop = 0;\n }\n return true;\n }\n\n updated(props: PropertyValues) {\n if (props.has('selectedMenuOption') && this.selectedMenuOption) {\n const container =\n this.shadowRoot?.querySelector('.has-focused')?.shadowRoot;\n if (container) {\n const keyboardNavigation = new KeyboardNavigation(\n container as unknown as HTMLElement,\n this.selectedMenuOption,\n );\n\n if (this.previousKeydownListener) {\n this.removeEventListener('keydown', this.previousKeydownListener);\n }\n this.addEventListener('keydown', keyboardNavigation.handleKeyDown);\n this.previousKeydownListener = keyboardNavigation.handleKeyDown;\n }\n }\n }\n\n render() {\n const sliderDetailsClass = this.mediaSliderOpen ? 'open' : 'closed';\n\n return html`\n <div class=\"media-slider-container\">\n <div class=\"overflow-clip ${sliderDetailsClass}\">\n <div class=\"information-menu ${sliderDetailsClass}\">\n <div class=\"info-box\">\n <ia-topnav-media-subnav\n .baseHost=${this.baseHost}\n .config=${this.config}\n class=\"${this.selectedMenuOption === 'audio'\n ? 'has-focused'\n : 'hidden'}\"\n menu=\"audio\"\n .menuItems=${this.menus.audio}\n ></ia-topnav-media-subnav>\n <ia-topnav-media-subnav\n .baseHost=${this.baseHost}\n .config=${this.config}\n class=\"${this.selectedMenuOption === 'images'\n ? 'has-focused'\n : 'hidden'}\"\n menu=\"images\"\n .menuItems=${this.menus.images}\n ></ia-topnav-media-subnav>\n <ia-topnav-media-subnav\n .baseHost=${this.baseHost}\n .config=${this.config}\n class=\"${this.selectedMenuOption === 'software'\n ? 'has-focused'\n : 'hidden'}\"\n menu=\"software\"\n .menuItems=${this.menus.software}\n ></ia-topnav-media-subnav>\n <ia-topnav-media-subnav\n .baseHost=${this.baseHost}\n .config=${this.config}\n class=\"${this.selectedMenuOption === 'texts'\n ? 'has-focused'\n : 'hidden'}\"\n menu=\"texts\"\n .menuItems=${this.menus.texts}\n ></ia-topnav-media-subnav>\n <ia-topnav-media-subnav\n .baseHost=${this.baseHost}\n .config=${this.config}\n class=\"${this.selectedMenuOption === 'video'\n ? 'has-focused'\n : 'hidden'}\"\n menu=\"video\"\n .menuItems=${this.menus.video}\n ></ia-topnav-media-subnav>\n <ia-topnav-media-subnav\n .baseHost=${this.baseHost}\n .config=${this.config}\n class=\"${this.selectedMenuOption === 'web'\n ? 'has-focused'\n : 'hidden'}\"\n menu=\"web\"\n .menuItems=${this.menus.web}\n ></ia-topnav-media-subnav>\n <ia-topnav-media-subnav\n .baseHost=${this.baseHost}\n .config=${this.config}\n class=\"${this.selectedMenuOption === 'more'\n ? 'has-focused'\n : 'hidden'}\"\n menu=\"more\"\n .menuItems=${this.menus.more}\n ></ia-topnav-media-subnav>\n </div>\n </div>\n </div>\n </div>\n `;\n }\n\n static get styles(): CSSResultGroup {\n return [\n themeStyles,\n css`\n .media-slider-container {\n position: relative;\n }\n\n .overflow-clip {\n display: none;\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n height: 0;\n overflow: hidden;\n transition: height 0.2s ease;\n }\n\n .information-menu {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n padding: 0;\n height: 31.9rem;\n overflow-x: hidden;\n font-size: 1.4rem;\n background: var(--mediaSliderBg);\n }\n\n .open {\n display: block;\n }\n\n .hidden {\n display: none;\n }\n\n .info-box {\n padding: 1rem;\n }\n\n @media (max-width: ${TOPNAV_MOBILE_BREAKPOINT - 1}px) {\n .overflow-clip.open {\n display: block;\n height: 35.8rem;\n left: 4rem;\n top: 0;\n }\n }\n\n @media (min-width: ${TOPNAV_MOBILE_BREAKPOINT}px) {\n .overflow-clip {\n display: block;\n }\n\n .information-menu {\n left: 0;\n z-index: 3;\n height: auto;\n min-height: 21rem;\n background: var(--mediaSliderDesktopBg);\n transform: translate(0, -100%);\n transition: transform 0.2s ease;\n }\n\n .overflow-clip.open {\n height: 22rem;\n }\n\n .information-menu.open {\n transform: translate(0, 0);\n }\n\n .info-box {\n max-width: 100rem;\n padding: 1.5rem 0;\n margin: 0 auto;\n }\n }\n `,\n ];\n }\n}\n"]}
@@ -0,0 +1,20 @@
1
+ import { CSSResultGroup } from 'lit';
2
+ import TrackedElement from './tracked-element.js';
3
+ import './ia-topnav-wayback-slider.js';
4
+ import './ia-topnav-more-slider.js';
5
+ import { IATopNavConfig, IATopNavLink, IATopNavMediaMenu } from './models.js';
6
+ export declare class MediaSubnav extends TrackedElement {
7
+ baseHost: string;
8
+ config: IATopNavConfig;
9
+ menu: '' | 'web' | 'more' | 'audio' | 'images' | 'software' | 'texts' | 'video';
10
+ menuItems: IATopNavMediaMenu;
11
+ private links;
12
+ shouldUpdate(): boolean;
13
+ render(): import("lit").TemplateResult<1>;
14
+ static get defaultLinks(): IATopNavMediaMenu;
15
+ analyticsEvent(title: string): string;
16
+ get iconLinks(): import("lit").TemplateResult<1>[];
17
+ renderLinks(links: IATopNavLink[]): import("lit").TemplateResult<1>[];
18
+ static get styles(): CSSResultGroup;
19
+ }
20
+ //# sourceMappingURL=ia-topnav-media-subnav.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-topnav-media-subnav.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-topnav/ia-topnav-media-subnav.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAa,MAAM,KAAK,CAAC;AAGhD,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAC/C,OAAO,4BAA4B,CAAC;AACpC,OAAO,yBAAyB,CAAC;AAIjC,OAAO,EACL,cAAc,EACd,YAAY,EACZ,iBAAiB,EAElB,MAAM,UAAU,CAAC;AAMlB,qBAEa,WAAY,SAAQ,cAAc;IACjB,QAAQ,SAAM;IACd,MAAM,EAAE,cAAc,CAAuB;IAC7C,IAAI,EAC5B,EAAE,GACF,KAAK,GACL,MAAM,GACN,OAAO,GACP,QAAQ,GACR,UAAU,GACV,OAAO,GACP,OAAO,CAAM;IACW,SAAS,EAAE,iBAAiB,CAC7B;IAE3B,OAAO,CAAC,KAAK,CAA+C;IAE5D,YAAY;IAOZ,MAAM;IA8CN,MAAM,KAAK,YAAY,IAAI,iBAAiB,CAU3C;IAED,cAAc,CAAC,KAAK,EAAE,MAAM;IAI5B,IAAI,SAAS,sCAWZ;IAED,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE;IAejC,MAAM,KAAK,MAAM,IAAI,cAAc,CA8JlC;CACF"}