@internetarchive/ia-topnav 1.3.9 → 1.3.10-webdev-7394.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/.prettierignore +1 -0
  2. package/README.md +7 -7
  3. package/demo/app-root.ts +186 -0
  4. package/demo/index.html +27 -0
  5. package/dist/demo/app-root.d.ts +8 -0
  6. package/dist/demo/app-root.js +181 -0
  7. package/dist/demo/app-root.js.map +1 -0
  8. package/dist/index.d.ts +2 -0
  9. package/dist/index.js +3 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/src/assets/img/hamburger.d.ts +7 -0
  12. package/dist/src/assets/img/hamburger.js +51 -0
  13. package/dist/src/assets/img/hamburger.js.map +1 -0
  14. package/dist/src/assets/img/ia-icon.d.ts +7 -0
  15. package/dist/src/assets/img/ia-icon.js +33 -0
  16. package/dist/src/assets/img/ia-icon.js.map +1 -0
  17. package/dist/src/assets/img/icon-audio.d.ts +2 -0
  18. package/dist/src/assets/img/icon-audio.js +28 -0
  19. package/dist/src/assets/img/icon-audio.js.map +1 -0
  20. package/dist/src/assets/img/icon-close.d.ts +2 -0
  21. package/dist/src/assets/img/icon-close.js +20 -0
  22. package/dist/src/assets/img/icon-close.js.map +1 -0
  23. package/dist/src/assets/img/icon-donate-unpadded.d.ts +2 -0
  24. package/dist/src/assets/img/icon-donate-unpadded.js +19 -0
  25. package/dist/src/assets/img/icon-donate-unpadded.js.map +1 -0
  26. package/dist/src/assets/img/icon-donate.d.ts +2 -0
  27. package/dist/src/assets/img/icon-donate.js +18 -0
  28. package/dist/src/assets/img/icon-donate.js.map +1 -0
  29. package/dist/src/assets/img/icon-ellipses.d.ts +2 -0
  30. package/dist/src/assets/img/icon-ellipses.js +19 -0
  31. package/dist/src/assets/img/icon-ellipses.js.map +1 -0
  32. package/dist/src/assets/img/icon-ia-logo.d.ts +2 -0
  33. package/dist/src/assets/img/icon-ia-logo.js +30 -0
  34. package/dist/src/assets/img/icon-ia-logo.js.map +1 -0
  35. package/dist/src/assets/img/icon-images.d.ts +2 -0
  36. package/dist/src/assets/img/icon-images.js +19 -0
  37. package/dist/src/assets/img/icon-images.js.map +1 -0
  38. package/dist/src/assets/img/icon-search.d.ts +2 -0
  39. package/dist/src/assets/img/icon-search.js +19 -0
  40. package/dist/src/assets/img/icon-search.js.map +1 -0
  41. package/dist/src/assets/img/icon-software.d.ts +2 -0
  42. package/dist/src/assets/img/icon-software.js +18 -0
  43. package/dist/src/assets/img/icon-software.js.map +1 -0
  44. package/dist/src/assets/img/icon-texts.d.ts +2 -0
  45. package/dist/src/assets/img/icon-texts.js +18 -0
  46. package/dist/src/assets/img/icon-texts.js.map +1 -0
  47. package/dist/src/assets/img/icon-upload-unpadded.d.ts +2 -0
  48. package/dist/src/assets/img/icon-upload-unpadded.js +18 -0
  49. package/dist/src/assets/img/icon-upload-unpadded.js.map +1 -0
  50. package/dist/src/assets/img/icon-upload.d.ts +2 -0
  51. package/dist/src/assets/img/icon-upload.js +21 -0
  52. package/dist/src/assets/img/icon-upload.js.map +1 -0
  53. package/dist/src/assets/img/icon-user.d.ts +2 -0
  54. package/dist/src/assets/img/icon-user.js +19 -0
  55. package/dist/src/assets/img/icon-user.js.map +1 -0
  56. package/dist/src/assets/img/icon-video.d.ts +2 -0
  57. package/dist/src/assets/img/icon-video.js +19 -0
  58. package/dist/src/assets/img/icon-video.js.map +1 -0
  59. package/dist/src/assets/img/icon-web.d.ts +2 -0
  60. package/dist/src/assets/img/icon-web.js +19 -0
  61. package/dist/src/assets/img/icon-web.js.map +1 -0
  62. package/dist/src/assets/img/icon.d.ts +5 -0
  63. package/dist/src/assets/img/icon.js +17 -0
  64. package/dist/src/assets/img/icon.js.map +1 -0
  65. package/dist/src/assets/img/icons.d.ts +18 -0
  66. package/dist/src/assets/img/icons.js +33 -0
  67. package/dist/src/assets/img/icons.js.map +1 -0
  68. package/dist/src/assets/img/wordmark-stacked.d.ts +2 -0
  69. package/dist/src/assets/img/wordmark-stacked.js +13 -0
  70. package/dist/src/assets/img/wordmark-stacked.js.map +1 -0
  71. package/dist/src/data/menus.d.ts +20 -0
  72. package/dist/src/data/menus.js +668 -0
  73. package/dist/src/data/menus.js.map +1 -0
  74. package/dist/src/desktop-subnav.d.ts +11 -0
  75. package/dist/src/desktop-subnav.js +55 -0
  76. package/dist/src/desktop-subnav.js.map +1 -0
  77. package/dist/src/dropdown-menu.d.ts +19 -0
  78. package/dist/src/dropdown-menu.js +116 -0
  79. package/dist/src/dropdown-menu.js.map +1 -0
  80. package/dist/src/ia-topnav.d.ts +68 -0
  81. package/dist/src/ia-topnav.js +315 -0
  82. package/dist/src/ia-topnav.js.map +1 -0
  83. package/dist/src/lib/formatUrl.d.ts +2 -0
  84. package/dist/src/lib/formatUrl.js +2 -0
  85. package/dist/src/lib/formatUrl.js.map +1 -0
  86. package/dist/src/lib/keyboard-navigation.d.ts +50 -0
  87. package/dist/src/lib/keyboard-navigation.js +136 -0
  88. package/dist/src/lib/keyboard-navigation.js.map +1 -0
  89. package/dist/src/lib/location-handler.d.ts +1 -0
  90. package/dist/src/lib/location-handler.js +5 -0
  91. package/dist/src/lib/location-handler.js.map +1 -0
  92. package/dist/src/lib/makeBooleanString.d.ts +2 -0
  93. package/dist/src/lib/makeBooleanString.js +12 -0
  94. package/dist/src/lib/makeBooleanString.js.map +1 -0
  95. package/dist/src/lib/query-handler.d.ts +4 -0
  96. package/dist/src/lib/query-handler.js +7 -0
  97. package/dist/src/lib/query-handler.js.map +1 -0
  98. package/dist/src/lib/toSentenceCase.d.ts +2 -0
  99. package/dist/src/lib/toSentenceCase.js +10 -0
  100. package/dist/src/lib/toSentenceCase.js.map +1 -0
  101. package/dist/src/login-button.d.ts +16 -0
  102. package/dist/src/login-button.js +83 -0
  103. package/dist/src/login-button.js.map +1 -0
  104. package/dist/src/media-button.d.ts +24 -0
  105. package/dist/src/media-button.js +119 -0
  106. package/dist/src/media-button.js.map +1 -0
  107. package/dist/src/media-menu.d.ts +20 -0
  108. package/dist/src/media-menu.js +148 -0
  109. package/dist/src/media-menu.js.map +1 -0
  110. package/dist/src/media-slider.d.ts +15 -0
  111. package/dist/src/media-slider.js +139 -0
  112. package/dist/src/media-slider.js.map +1 -0
  113. package/dist/src/media-subnav.d.ts +18 -0
  114. package/dist/src/media-subnav.js +126 -0
  115. package/dist/src/media-subnav.js.map +1 -0
  116. package/dist/src/models.d.ts +51 -0
  117. package/dist/src/models.js +25 -0
  118. package/dist/src/models.js.map +1 -0
  119. package/dist/src/more-slider.d.ts +10 -0
  120. package/dist/src/more-slider.js +50 -0
  121. package/dist/src/more-slider.js.map +1 -0
  122. package/dist/src/nav-search.d.ts +19 -0
  123. package/dist/src/nav-search.js +124 -0
  124. package/dist/src/nav-search.js.map +1 -0
  125. package/dist/src/primary-nav.d.ts +45 -0
  126. package/dist/src/primary-nav.js +280 -0
  127. package/dist/src/primary-nav.js.map +1 -0
  128. package/dist/src/save-page-form.d.ts +10 -0
  129. package/dist/src/save-page-form.js +63 -0
  130. package/dist/src/save-page-form.js.map +1 -0
  131. package/dist/src/search-menu.d.ts +20 -0
  132. package/dist/src/search-menu.js +162 -0
  133. package/dist/src/search-menu.js.map +1 -0
  134. package/dist/src/signed-out-dropdown.d.ts +4 -0
  135. package/dist/src/signed-out-dropdown.js +15 -0
  136. package/dist/src/signed-out-dropdown.js.map +1 -0
  137. package/dist/src/styles/base.d.ts +1 -0
  138. package/dist/src/styles/base.js +48 -0
  139. package/dist/src/styles/base.js.map +1 -0
  140. package/dist/src/styles/desktop-subnav.d.ts +2 -0
  141. package/dist/src/styles/desktop-subnav.js +37 -0
  142. package/dist/src/styles/desktop-subnav.js.map +1 -0
  143. package/dist/src/styles/dropdown-menu.d.ts +2 -0
  144. package/dist/src/styles/dropdown-menu.js +170 -0
  145. package/dist/src/styles/dropdown-menu.js.map +1 -0
  146. package/dist/src/styles/ia-topnav.d.ts +2 -0
  147. package/dist/src/styles/ia-topnav.js +87 -0
  148. package/dist/src/styles/ia-topnav.js.map +1 -0
  149. package/dist/src/styles/login-button.d.ts +2 -0
  150. package/dist/src/styles/login-button.js +82 -0
  151. package/dist/src/styles/login-button.js.map +1 -0
  152. package/dist/src/styles/media-button.d.ts +2 -0
  153. package/dist/src/styles/media-button.js +156 -0
  154. package/dist/src/styles/media-button.js.map +1 -0
  155. package/dist/src/styles/media-menu.d.ts +2 -0
  156. package/dist/src/styles/media-menu.js +66 -0
  157. package/dist/src/styles/media-menu.js.map +1 -0
  158. package/dist/src/styles/media-slider.d.ts +2 -0
  159. package/dist/src/styles/media-slider.js +81 -0
  160. package/dist/src/styles/media-slider.js.map +1 -0
  161. package/dist/src/styles/media-subnav.d.ts +2 -0
  162. package/dist/src/styles/media-subnav.js +159 -0
  163. package/dist/src/styles/media-subnav.js.map +1 -0
  164. package/dist/src/styles/more-slider.d.ts +2 -0
  165. package/dist/src/styles/more-slider.js +15 -0
  166. package/dist/src/styles/more-slider.js.map +1 -0
  167. package/dist/src/styles/nav-search.d.ts +2 -0
  168. package/dist/src/styles/nav-search.js +136 -0
  169. package/dist/src/styles/nav-search.js.map +1 -0
  170. package/dist/src/styles/primary-nav.d.ts +2 -0
  171. package/dist/src/styles/primary-nav.js +310 -0
  172. package/dist/src/styles/primary-nav.js.map +1 -0
  173. package/dist/src/styles/save-page-form.d.ts +2 -0
  174. package/dist/src/styles/save-page-form.js +54 -0
  175. package/dist/src/styles/save-page-form.js.map +1 -0
  176. package/dist/src/styles/search-menu.d.ts +2 -0
  177. package/dist/src/styles/search-menu.js +105 -0
  178. package/dist/src/styles/search-menu.js.map +1 -0
  179. package/dist/src/styles/signed-out-dropdown.d.ts +2 -0
  180. package/dist/src/styles/signed-out-dropdown.js +31 -0
  181. package/dist/src/styles/signed-out-dropdown.js.map +1 -0
  182. package/dist/src/styles/user-menu.d.ts +2 -0
  183. package/dist/src/styles/user-menu.js +31 -0
  184. package/dist/src/styles/user-menu.js.map +1 -0
  185. package/dist/src/styles/wayback-search.d.ts +2 -0
  186. package/dist/src/styles/wayback-search.js +48 -0
  187. package/dist/src/styles/wayback-search.js.map +1 -0
  188. package/dist/src/styles/wayback-slider.d.ts +2 -0
  189. package/dist/src/styles/wayback-slider.js +33 -0
  190. package/dist/src/styles/wayback-slider.js.map +1 -0
  191. package/dist/src/tracked-element.d.ts +5 -0
  192. package/dist/src/tracked-element.js +30 -0
  193. package/dist/src/tracked-element.js.map +1 -0
  194. package/dist/src/user-menu.d.ts +10 -0
  195. package/dist/src/user-menu.js +60 -0
  196. package/dist/src/user-menu.js.map +1 -0
  197. package/dist/src/wayback-search.d.ts +4 -0
  198. package/dist/src/wayback-search.js +14 -0
  199. package/dist/src/wayback-search.js.map +1 -0
  200. package/dist/src/wayback-slider.d.ts +18 -0
  201. package/dist/src/wayback-slider.js +99 -0
  202. package/dist/src/wayback-slider.js.map +1 -0
  203. package/dist/test/assets/img/hamburger.test.d.ts +1 -0
  204. package/dist/test/assets/img/hamburger.test.js +13 -0
  205. package/dist/test/assets/img/hamburger.test.js.map +1 -0
  206. package/dist/test/data/menus.test.d.ts +1 -0
  207. package/dist/test/data/menus.test.js +11 -0
  208. package/dist/test/data/menus.test.js.map +1 -0
  209. package/dist/test/dropdown-menu.test.d.ts +1 -0
  210. package/dist/test/dropdown-menu.test.js +20 -0
  211. package/dist/test/dropdown-menu.test.js.map +1 -0
  212. package/dist/test/ia-icon.test.d.ts +1 -0
  213. package/dist/test/ia-icon.test.js +11 -0
  214. package/dist/test/ia-icon.test.js.map +1 -0
  215. package/dist/test/ia-topnav.test.d.ts +1 -0
  216. package/dist/test/ia-topnav.test.js +232 -0
  217. package/dist/test/ia-topnav.test.js.map +1 -0
  218. package/dist/test/login-button.test.d.ts +1 -0
  219. package/dist/test/login-button.test.js +14 -0
  220. package/dist/test/login-button.test.js.map +1 -0
  221. package/dist/test/media-button.test.d.ts +1 -0
  222. package/dist/test/media-button.test.js +13 -0
  223. package/dist/test/media-button.test.js.map +1 -0
  224. package/dist/test/media-menu.test.d.ts +1 -0
  225. package/dist/test/media-menu.test.js +27 -0
  226. package/dist/test/media-menu.test.js.map +1 -0
  227. package/dist/test/media-slider.test.d.ts +1 -0
  228. package/dist/test/media-slider.test.js +47 -0
  229. package/dist/test/media-slider.test.js.map +1 -0
  230. package/dist/test/more-slider.test.d.ts +1 -0
  231. package/dist/test/more-slider.test.js +17 -0
  232. package/dist/test/more-slider.test.js.map +1 -0
  233. package/dist/test/nav-search.test.d.ts +1 -0
  234. package/dist/test/nav-search.test.js +47 -0
  235. package/dist/test/nav-search.test.js.map +1 -0
  236. package/dist/test/primary-nav.test.d.ts +1 -0
  237. package/dist/test/primary-nav.test.js +55 -0
  238. package/dist/test/primary-nav.test.js.map +1 -0
  239. package/dist/test/save-page-form.test.d.ts +1 -0
  240. package/dist/test/save-page-form.test.js +47 -0
  241. package/dist/test/save-page-form.test.js.map +1 -0
  242. package/dist/test/search-menu.test.d.ts +1 -0
  243. package/dist/test/search-menu.test.js +42 -0
  244. package/dist/test/search-menu.test.js.map +1 -0
  245. package/dist/test/user-menu.test.d.ts +1 -0
  246. package/dist/test/user-menu.test.js +28 -0
  247. package/dist/test/user-menu.test.js.map +1 -0
  248. package/dist/test/wayback-slider.test.d.ts +1 -0
  249. package/dist/test/wayback-slider.test.js +80 -0
  250. package/dist/test/wayback-slider.test.js.map +1 -0
  251. package/eslint.config.mjs +53 -0
  252. package/package.json +47 -37
  253. package/prettier.config.js +9 -0
  254. package/src/assets/img/hamburger.ts +49 -0
  255. package/src/assets/img/{ia-icon.js → ia-icon.ts} +7 -16
  256. package/src/assets/img/{icon-audio.js → icon-audio.ts} +7 -2
  257. package/src/assets/img/icon-close.ts +20 -0
  258. package/src/assets/img/icon-donate-unpadded.ts +19 -0
  259. package/src/assets/img/icon-donate.ts +18 -0
  260. package/src/assets/img/icon-ellipses.ts +19 -0
  261. package/src/assets/img/icon-ia-logo.ts +30 -0
  262. package/src/assets/img/icon-images.ts +19 -0
  263. package/src/assets/img/icon-search.ts +19 -0
  264. package/src/assets/img/icon-software.ts +18 -0
  265. package/src/assets/img/icon-texts.ts +18 -0
  266. package/src/assets/img/{icon-upload-unpadded.js → icon-upload-unpadded.ts} +6 -2
  267. package/src/assets/img/icon-upload.ts +21 -0
  268. package/src/assets/img/icon-user.ts +19 -0
  269. package/src/assets/img/icon-video.ts +19 -0
  270. package/src/assets/img/icon-web.ts +19 -0
  271. package/src/assets/img/icon.ts +8 -0
  272. package/src/assets/img/icons.ts +33 -0
  273. package/src/assets/img/{wordmark-stacked.js → wordmark-stacked.ts} +1 -1
  274. package/src/data/{menus.js → menus.ts} +172 -135
  275. package/src/desktop-subnav.ts +49 -0
  276. package/src/dropdown-menu.ts +106 -0
  277. package/src/{ia-topnav.js → ia-topnav.ts} +130 -127
  278. package/src/lib/formatUrl.ts +2 -0
  279. package/src/lib/{keyboard-navigation.js → keyboard-navigation.ts} +53 -23
  280. package/src/lib/location-handler.ts +5 -0
  281. package/src/lib/makeBooleanString.ts +12 -0
  282. package/src/lib/query-handler.ts +7 -0
  283. package/src/lib/toSentenceCase.ts +10 -0
  284. package/src/{login-button.js → login-button.ts} +27 -31
  285. package/src/{media-button.js → media-button.ts} +39 -49
  286. package/src/media-menu.ts +143 -0
  287. package/src/{media-slider.js → media-slider.ts} +53 -41
  288. package/src/media-subnav.ts +132 -0
  289. package/src/models.ts +114 -0
  290. package/src/more-slider.ts +42 -0
  291. package/src/nav-search.ts +114 -0
  292. package/src/primary-nav.ts +266 -0
  293. package/src/save-page-form.ts +59 -0
  294. package/src/search-menu.ts +156 -0
  295. package/src/signed-out-dropdown.ts +11 -0
  296. package/src/styles/{base.js → base.ts} +2 -2
  297. package/src/styles/{desktop-subnav.js → desktop-subnav.ts} +2 -2
  298. package/src/styles/{dropdown-menu.js → dropdown-menu.ts} +4 -2
  299. package/src/styles/{ia-topnav.js → ia-topnav.ts} +1 -1
  300. package/src/styles/{login-button.js → login-button.ts} +1 -1
  301. package/src/styles/{media-button.js → media-button.ts} +2 -2
  302. package/src/styles/{media-menu.js → media-menu.ts} +1 -1
  303. package/src/styles/{media-slider.js → media-slider.ts} +1 -1
  304. package/src/styles/media-subnav.ts +159 -0
  305. package/src/styles/{more-slider.js → more-slider.ts} +1 -1
  306. package/src/styles/{nav-search.js → nav-search.ts} +2 -2
  307. package/src/styles/{primary-nav.js → primary-nav.ts} +2 -3
  308. package/src/styles/{save-page-form.js → save-page-form.ts} +7 -7
  309. package/src/styles/{search-menu.js → search-menu.ts} +1 -1
  310. package/src/styles/{signed-out-dropdown.js → signed-out-dropdown.ts} +1 -1
  311. package/src/styles/{user-menu.js → user-menu.ts} +1 -1
  312. package/src/styles/{wayback-search.js → wayback-search.ts} +3 -3
  313. package/src/styles/wayback-slider.ts +33 -0
  314. package/src/tracked-element.ts +32 -0
  315. package/src/user-menu.ts +57 -0
  316. package/src/wayback-search.ts +10 -0
  317. package/src/wayback-slider.ts +88 -0
  318. package/ssl/server.crt +22 -0
  319. package/ssl/server.key +28 -0
  320. package/test/assets/img/hamburger.test.ts +18 -0
  321. package/test/data/menus.test.ts +15 -0
  322. package/test/{dropdown-menu.test.js → dropdown-menu.test.ts} +5 -7
  323. package/test/{ia-icon.test.js → ia-icon.test.ts} +6 -4
  324. package/test/ia-topnav.test.ts +344 -0
  325. package/test/login-button.test.ts +19 -0
  326. package/test/media-button.test.ts +19 -0
  327. package/test/{media-menu.test.js → media-menu.test.ts} +14 -12
  328. package/test/media-slider.test.ts +63 -0
  329. package/test/more-slider.test.ts +21 -0
  330. package/test/nav-search.test.ts +70 -0
  331. package/test/primary-nav.test.ts +94 -0
  332. package/test/save-page-form.test.ts +62 -0
  333. package/test/{search-menu.test.js → search-menu.test.ts} +19 -10
  334. package/test/{user-menu.test.js → user-menu.test.ts} +10 -9
  335. package/test/wayback-slider.test.ts +97 -0
  336. package/tsconfig.json +31 -0
  337. package/web-dev-server.config.mjs +32 -0
  338. package/web-test-runner.config.mjs +41 -0
  339. package/.eslintrc +0 -16
  340. package/index.d.ts +0 -109
  341. package/src/assets/img/hamburger.js +0 -38
  342. package/src/assets/img/icon-close.js +0 -16
  343. package/src/assets/img/icon-donate-unpadded.js +0 -16
  344. package/src/assets/img/icon-donate.js +0 -15
  345. package/src/assets/img/icon-ellipses.js +0 -15
  346. package/src/assets/img/icon-ia-logo.js +0 -22
  347. package/src/assets/img/icon-images.js +0 -15
  348. package/src/assets/img/icon-search.js +0 -15
  349. package/src/assets/img/icon-software.js +0 -15
  350. package/src/assets/img/icon-texts.js +0 -15
  351. package/src/assets/img/icon-upload.js +0 -15
  352. package/src/assets/img/icon-user.js +0 -15
  353. package/src/assets/img/icon-video.js +0 -15
  354. package/src/assets/img/icon-web.js +0 -15
  355. package/src/assets/img/icon.js +0 -18
  356. package/src/assets/img/icons.js +0 -33
  357. package/src/desktop-subnav.js +0 -45
  358. package/src/dropdown-menu.js +0 -110
  359. package/src/lib/formatUrl.js +0 -1
  360. package/src/lib/location-handler.js +0 -5
  361. package/src/lib/query-handler.js +0 -7
  362. package/src/lib/toSentenceCase.js +0 -8
  363. package/src/media-menu.js +0 -154
  364. package/src/media-subnav.js +0 -112
  365. package/src/more-slider.js +0 -33
  366. package/src/nav-search.js +0 -111
  367. package/src/primary-nav.js +0 -258
  368. package/src/save-page-form.js +0 -59
  369. package/src/search-menu.js +0 -145
  370. package/src/signed-out-dropdown.js +0 -10
  371. package/src/styles/media-subnav.js +0 -156
  372. package/src/styles/wayback-slider.js +0 -30
  373. package/src/tracked-element.js +0 -29
  374. package/src/user-menu.js +0 -56
  375. package/src/wayback-search.js +0 -18
  376. package/src/wayback-slider.js +0 -87
  377. package/test/assets/img/hamburger.test.js +0 -15
  378. package/test/assets/img/user.test.js +0 -15
  379. package/test/data/menus.test.js +0 -19
  380. package/test/ia-topnav.test.js +0 -273
  381. package/test/login-button.test.js +0 -15
  382. package/test/media-button.test.js +0 -19
  383. package/test/media-slider.test.js +0 -57
  384. package/test/more-slider.test.js +0 -13
  385. package/test/nav-search.test.js +0 -61
  386. package/test/primary-nav.test.js +0 -82
  387. package/test/save-page-form.test.js +0 -35
  388. package/test/wayback-slider.test.js +0 -80
  389. /package/{index.js → index.ts} +0 -0
@@ -0,0 +1,126 @@
1
+ var MediaSubnav_1;
2
+ import { __decorate } from "tslib";
3
+ import { html } from 'lit';
4
+ import { ifDefined } from 'lit/directives/if-defined.js';
5
+ import TrackedElement from './tracked-element';
6
+ import './wayback-slider';
7
+ import './more-slider';
8
+ import mediaSubnavCSS from './styles/media-subnav';
9
+ import toSentenceCase from './lib/toSentenceCase';
10
+ import formatUrl from './lib/formatUrl';
11
+ import { customElement, property } from 'lit/decorators.js';
12
+ import { defaultTopNavConfig } from './data/menus';
13
+ let MediaSubnav = MediaSubnav_1 = class MediaSubnav extends TrackedElement {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.baseHost = '';
17
+ this.config = defaultTopNavConfig;
18
+ this.menu = '';
19
+ this.menuItems = MediaSubnav_1.defaultLinks;
20
+ this.links = MediaSubnav_1.defaultLinks;
21
+ }
22
+ static get styles() {
23
+ return mediaSubnavCSS;
24
+ }
25
+ shouldUpdate() {
26
+ if (this.menuItems) {
27
+ this.links = this.menuItems;
28
+ }
29
+ return true;
30
+ }
31
+ static get defaultLinks() {
32
+ return {
33
+ heading: '',
34
+ iconLinks: [],
35
+ featuredLinks: [],
36
+ links: [],
37
+ mobileAppsLinks: [],
38
+ browserExtensionsLinks: [],
39
+ archiveItLinks: [],
40
+ };
41
+ }
42
+ analyticsEvent(title) {
43
+ var _a;
44
+ return `${(_a = this.config) === null || _a === void 0 ? void 0 : _a.eventCategory}|${toSentenceCase(title)}${toSentenceCase(this.menu)}`;
45
+ }
46
+ get iconLinks() {
47
+ return this.links.iconLinks.map((link) => html `
48
+ <a
49
+ .href="${formatUrl(link.url, this.baseHost)}"
50
+ @click=${this.trackClick}
51
+ data-event-click-tracking="${this.analyticsEvent(link.title)}"
52
+ ><img src="${ifDefined(link.icon)}" loading="lazy" />${link.title}</a
53
+ >
54
+ `);
55
+ }
56
+ renderLinks(links) {
57
+ return links.map((link) => html `
58
+ <li>
59
+ <a
60
+ .href="${formatUrl(link.url, this.baseHost)}"
61
+ @click=${this.trackClick}
62
+ data-event-click-tracking="${this.analyticsEvent(link.title)}"
63
+ >${link.title}</a
64
+ >
65
+ </li>
66
+ `);
67
+ }
68
+ render() {
69
+ if (!this.menu) {
70
+ return html ``;
71
+ }
72
+ if (this.menuItems) {
73
+ this.links = this.menuItems;
74
+ }
75
+ if (this.menu === 'web') {
76
+ return html ` <wayback-slider
77
+ .baseHost=${this.baseHost}
78
+ .config=${this.config}
79
+ .archiveItLinks=${this.menuItems.archiveItLinks}
80
+ .browserExtensionsLinks=${this.menuItems.browserExtensionsLinks}
81
+ .mobileAppsLinks=${this.menuItems.mobileAppsLinks}
82
+ ></wayback-slider>`;
83
+ }
84
+ // if (this.menu === 'more') {
85
+ // return html` <more-slider
86
+ // .baseHost=${this.baseHost}
87
+ // .config=${this.config}
88
+ // .menuItems=${this.menuItems}
89
+ // >
90
+ // </more-slider>`;
91
+ // }
92
+ return html `
93
+ <h3>${this.links.heading}</h3>
94
+ <div class="icon-links">${this.iconLinks}</div>
95
+ <div class="links featured">
96
+ <h4>Featured</h4>
97
+ <ul>
98
+ ${this.renderLinks(this.links.featuredLinks)}
99
+ </ul>
100
+ </div>
101
+ <div class="links top">
102
+ <h4>Top</h4>
103
+ <ul>
104
+ ${this.renderLinks(this.links.links)}
105
+ </ul>
106
+ </div>
107
+ `;
108
+ }
109
+ };
110
+ __decorate([
111
+ property({ type: String })
112
+ ], MediaSubnav.prototype, "baseHost", void 0);
113
+ __decorate([
114
+ property({ type: Object })
115
+ ], MediaSubnav.prototype, "config", void 0);
116
+ __decorate([
117
+ property({ type: String })
118
+ ], MediaSubnav.prototype, "menu", void 0);
119
+ __decorate([
120
+ property({ type: Object })
121
+ ], MediaSubnav.prototype, "menuItems", void 0);
122
+ MediaSubnav = MediaSubnav_1 = __decorate([
123
+ customElement('media-subnav')
124
+ ], MediaSubnav);
125
+ export { MediaSubnav };
126
+ //# sourceMappingURL=media-subnav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-subnav.js","sourceRoot":"","sources":["../../src/media-subnav.ts"],"names":[],"mappings":"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","sourcesContent":["import { html } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport TrackedElement from './tracked-element';\nimport './wayback-slider';\nimport './more-slider';\nimport mediaSubnavCSS from './styles/media-subnav';\nimport toSentenceCase from './lib/toSentenceCase';\nimport formatUrl from './lib/formatUrl';\nimport { customElement, property } from 'lit/decorators.js';\nimport { IATopNavConfig, IATopNavLink, IATopNavMediaMenu } from './models';\nimport { defaultTopNavConfig } from './data/menus';\n\n@customElement('media-subnav')\nexport class MediaSubnav extends TrackedElement {\n @property({ type: String }) baseHost = '';\n @property({ type: Object }) config: IATopNavConfig = defaultTopNavConfig;\n @property({ type: String }) menu:\n | ''\n | 'web'\n | 'more'\n | 'audio'\n | 'images'\n | 'software'\n | 'texts'\n | 'video' = '';\n @property({ type: Object }) menuItems: IATopNavMediaMenu =\n MediaSubnav.defaultLinks;\n\n private links: IATopNavMediaMenu = MediaSubnav.defaultLinks;\n\n static get styles() {\n return mediaSubnavCSS;\n }\n\n shouldUpdate() {\n if (this.menuItems) {\n this.links = this.menuItems;\n }\n return true;\n }\n\n static get defaultLinks(): IATopNavMediaMenu {\n return {\n heading: '',\n iconLinks: [],\n featuredLinks: [],\n links: [],\n mobileAppsLinks: [],\n browserExtensionsLinks: [],\n archiveItLinks: [],\n };\n }\n\n analyticsEvent(title: string) {\n return `${this.config?.eventCategory}|${toSentenceCase(title)}${toSentenceCase(this.menu)}`;\n }\n\n get iconLinks() {\n return this.links.iconLinks.map(\n (link) => html`\n <a\n .href=\"${formatUrl(link.url, this.baseHost)}\"\n @click=${this.trackClick}\n data-event-click-tracking=\"${this.analyticsEvent(link.title)}\"\n ><img src=\"${ifDefined(link.icon)}\" loading=\"lazy\" />${link.title}</a\n >\n `,\n );\n }\n\n renderLinks(links: IATopNavLink[]) {\n return links.map(\n (link) => html`\n <li>\n <a\n .href=\"${formatUrl(link.url, this.baseHost)}\"\n @click=${this.trackClick}\n data-event-click-tracking=\"${this.analyticsEvent(link.title)}\"\n >${link.title}</a\n >\n </li>\n `,\n );\n }\n\n render() {\n if (!this.menu) {\n return html``;\n }\n\n if (this.menuItems) {\n this.links = this.menuItems;\n }\n\n if (this.menu === 'web') {\n return html` <wayback-slider\n .baseHost=${this.baseHost}\n .config=${this.config}\n .archiveItLinks=${this.menuItems.archiveItLinks}\n .browserExtensionsLinks=${this.menuItems.browserExtensionsLinks}\n .mobileAppsLinks=${this.menuItems.mobileAppsLinks}\n ></wayback-slider>`;\n }\n\n // if (this.menu === 'more') {\n // return html` <more-slider\n // .baseHost=${this.baseHost}\n // .config=${this.config}\n // .menuItems=${this.menuItems}\n // >\n // </more-slider>`;\n // }\n\n return html`\n <h3>${this.links.heading}</h3>\n <div class=\"icon-links\">${this.iconLinks}</div>\n <div class=\"links featured\">\n <h4>Featured</h4>\n <ul>\n ${this.renderLinks(this.links.featuredLinks)}\n </ul>\n </div>\n <div class=\"links top\">\n <h4>Top</h4>\n <ul>\n ${this.renderLinks(this.links.links)}\n </ul>\n </div>\n `;\n }\n}\n"]}
@@ -0,0 +1,51 @@
1
+ export interface IATopNavConfig {
2
+ /**
3
+ * Google Analytics event category
4
+ */
5
+ eventCategory?: string;
6
+ /**
7
+ * Copy to display for number of pages archived at the top of the Wayback search form
8
+ *
9
+ * ie. "425 billion"
10
+ */
11
+ waybackPagesArchived?: string;
12
+ /**
13
+ * Array of strings representing the values of options that should be hidden from search options
14
+ */
15
+ hiddenSearchOptions?: string[];
16
+ /**
17
+ * Map from dropdown item ids to any callout text that should be applied beside them
18
+ */
19
+ callouts?: Record<string, string>;
20
+ }
21
+ export interface IATopNavLink {
22
+ title: string;
23
+ url?: string;
24
+ class?: string;
25
+ icon?: string;
26
+ analyticsEvent?: string;
27
+ external?: boolean;
28
+ }
29
+ export interface IATopNavMediaMenu {
30
+ heading: string;
31
+ iconLinks: IATopNavLink[];
32
+ featuredLinks: IATopNavLink[];
33
+ links: IATopNavLink[];
34
+ mobileAppsLinks: IATopNavLink[];
35
+ browserExtensionsLinks: IATopNavLink[];
36
+ archiveItLinks: IATopNavLink[];
37
+ }
38
+ export interface IATopNavMenuConfig {
39
+ audio: IATopNavMediaMenu;
40
+ images: IATopNavMediaMenu;
41
+ more: IATopNavLink[];
42
+ signedOut: IATopNavLink[];
43
+ software: IATopNavMediaMenu;
44
+ texts: IATopNavMediaMenu;
45
+ user: IATopNavLink[];
46
+ userAdmin: IATopNavLink[];
47
+ userAdminFlags: IATopNavLink[];
48
+ video: IATopNavMediaMenu;
49
+ web: IATopNavMediaMenu;
50
+ }
51
+ export type IATopNavSecondIdentitySlotMode = 'allow' | '';
@@ -0,0 +1,25 @@
1
+ export {};
2
+ // export declare class IATopNav extends LitElement {
3
+ // localLinks?: boolean;
4
+ // baseHost?: string;
5
+ // config?: IATopNavConfig;
6
+ // hideSearch?: boolean;
7
+ // mediaBaseHost?: string;
8
+ // menuSliderOpen?: boolean;
9
+ // openMenu?: string;
10
+ // screenName?: string;
11
+ // searchIn?: string;
12
+ // searchQuery?: string;
13
+ // secondIdentitySlotMode?: IATopNavSecondIdentitySlotMode;
14
+ // selectedMenuOption?: string;
15
+ // username?: string;
16
+ // userProfileImagePath?: string;
17
+ // menus: IATopNavMenuConfig;
18
+ // /**
19
+ // * Copy to display for number of pages archived at the top of the Wayback search form
20
+ // *
21
+ // * ie. "425 billion"
22
+ // */
23
+ // waybackPagesArchived?: string;
24
+ // }
25
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":";AA2FA,qDAAqD;AACrD,0BAA0B;AAC1B,uBAAuB;AACvB,6BAA6B;AAC7B,0BAA0B;AAC1B,4BAA4B;AAC5B,8BAA8B;AAC9B,uBAAuB;AACvB,yBAAyB;AACzB,uBAAuB;AACvB,0BAA0B;AAC1B,6DAA6D;AAC7D,iCAAiC;AACjC,uBAAuB;AACvB,mCAAmC;AACnC,+BAA+B;AAC/B,QAAQ;AACR,0FAA0F;AAC1F,OAAO;AACP,yBAAyB;AACzB,QAAQ;AACR,mCAAmC;AACnC,IAAI","sourcesContent":["export interface IATopNavConfig {\n /**\n * Google Analytics event category\n */\n eventCategory?: string;\n\n /**\n * Copy to display for number of pages archived at the top of the Wayback search form\n *\n * ie. \"425 billion\"\n */\n waybackPagesArchived?: string;\n\n /**\n * Array of strings representing the values of options that should be hidden from search options\n */\n hiddenSearchOptions?: string[];\n\n /**\n * Map from dropdown item ids to any callout text that should be applied beside them\n */\n callouts?: Record<string, string>;\n}\n\nexport interface IATopNavLink {\n title: string;\n\n url?: string;\n\n class?: string;\n\n icon?: string;\n\n analyticsEvent?: string;\n\n external?: boolean;\n}\n\n// export interface IATopNavIconLink extends IATopNavLink {\n// /**\n// * Icon URL\n// */\n// icon: string;\n// }\n\n// export interface IATopNavAnalyticsLink extends IATopNavLink {\n// /**\n// * Google analytics event name\n// */\n// analyticsEvent?: string;\n// }\n\n// export interface IATopNavExternalLink extends IATopNavLink {\n// /**\n// * Is the link external or not\n// */\n// external: boolean;\n// }\n\nexport interface IATopNavMediaMenu {\n heading: string;\n iconLinks: IATopNavLink[];\n featuredLinks: IATopNavLink[];\n links: IATopNavLink[];\n mobileAppsLinks: IATopNavLink[];\n browserExtensionsLinks: IATopNavLink[];\n archiveItLinks: IATopNavLink[];\n}\n\n// export interface IATopNavWaybackMenuConfig {\n// mobileAppsLinks: IATopNavLink[];\n// browserExtensionsLinks: IATopNavLink[];\n// archiveItLinks: IATopNavLink[];\n// }\n\nexport interface IATopNavMenuConfig {\n audio: IATopNavMediaMenu;\n images: IATopNavMediaMenu;\n more: IATopNavLink[];\n signedOut: IATopNavLink[];\n software: IATopNavMediaMenu;\n texts: IATopNavMediaMenu;\n user: IATopNavLink[];\n userAdmin: IATopNavLink[];\n userAdminFlags: IATopNavLink[];\n video: IATopNavMediaMenu;\n web: IATopNavMediaMenu;\n}\n\nexport type IATopNavSecondIdentitySlotMode = 'allow' | '';\n\n// export declare class IATopNav extends LitElement {\n// localLinks?: boolean;\n// baseHost?: string;\n// config?: IATopNavConfig;\n// hideSearch?: boolean;\n// mediaBaseHost?: string;\n// menuSliderOpen?: boolean;\n// openMenu?: string;\n// screenName?: string;\n// searchIn?: string;\n// searchQuery?: string;\n// secondIdentitySlotMode?: IATopNavSecondIdentitySlotMode;\n// selectedMenuOption?: string;\n// username?: string;\n// userProfileImagePath?: string;\n// menus: IATopNavMenuConfig;\n// /**\n// * Copy to display for number of pages archived at the top of the Wayback search form\n// *\n// * ie. \"425 billion\"\n// */\n// waybackPagesArchived?: string;\n// }\n"]}
@@ -0,0 +1,10 @@
1
+ import TrackedElement from './tracked-element';
2
+ import { IATopNavConfig, IATopNavLink } from './models';
3
+ export declare class MoreSlider extends TrackedElement {
4
+ baseHost: string;
5
+ config: IATopNavConfig;
6
+ menuItems: IATopNavLink[];
7
+ static get styles(): import("lit").CSSResult;
8
+ analyticsEvent(title: string): string;
9
+ render(): import("lit").TemplateResult<1>;
10
+ }
@@ -0,0 +1,50 @@
1
+ import { __decorate } from "tslib";
2
+ import { html } from 'lit';
3
+ import { customElement, property } from 'lit/decorators.js';
4
+ import TrackedElement from './tracked-element';
5
+ import toSentenceCase from './lib/toSentenceCase';
6
+ import moreSliderCSS from './styles/more-slider';
7
+ import formatUrl from './lib/formatUrl';
8
+ import { defaultTopNavConfig } from './data/menus';
9
+ let MoreSlider = class MoreSlider extends TrackedElement {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.baseHost = '';
13
+ this.config = defaultTopNavConfig;
14
+ this.menuItems = [];
15
+ }
16
+ static get styles() {
17
+ return moreSliderCSS;
18
+ }
19
+ analyticsEvent(title) {
20
+ return `${this.config.eventCategory}|NavMore${toSentenceCase(title)}`;
21
+ }
22
+ render() {
23
+ return html `
24
+ <ul>
25
+ ${this.menuItems.map((item) => html `<li>
26
+ <a
27
+ @click=${this.trackClick}
28
+ href=${formatUrl(item.url, this.baseHost)}
29
+ data-event-click-tracking="${this.analyticsEvent(item.title)}"
30
+ >${item.title}</a
31
+ >
32
+ </li>`)}
33
+ </ul>
34
+ `;
35
+ }
36
+ };
37
+ __decorate([
38
+ property({ type: String })
39
+ ], MoreSlider.prototype, "baseHost", void 0);
40
+ __decorate([
41
+ property({ type: Object })
42
+ ], MoreSlider.prototype, "config", void 0);
43
+ __decorate([
44
+ property({ type: Array })
45
+ ], MoreSlider.prototype, "menuItems", void 0);
46
+ MoreSlider = __decorate([
47
+ customElement('more-slider')
48
+ ], MoreSlider);
49
+ export { MoreSlider };
50
+ //# sourceMappingURL=more-slider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"more-slider.js","sourceRoot":"","sources":["../../src/more-slider.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAC/C,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,aAAa,MAAM,sBAAsB,CAAC;AACjD,OAAO,SAAS,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAG5C,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,cAAc;IAAvC;;QACuB,aAAQ,GAAG,EAAE,CAAC;QACd,WAAM,GAAmB,mBAAmB,CAAC;QAC9C,cAAS,GAAmB,EAAE,CAAC;IA2B5D,CAAC;IAzBC,MAAM,KAAK,MAAM;QACf,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,cAAc,CAAC,KAAa;QAC1B,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,WAAW,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;IACxE,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,SAAS,CAAC,GAAG,CAClB,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAA;;yBAES,IAAI,CAAC,UAAU;uBACjB,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC;6CACZ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;mBACzD,IAAI,CAAC,KAAK;;kBAEX,CACT;;KAEJ,CAAC;IACJ,CAAC;CACF,CAAA;AA7B6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4CAAe;AACd;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAA8C;AAC9C;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;6CAAgC;AAH/C,UAAU;IADtB,aAAa,CAAC,aAAa,CAAC;GAChB,UAAU,CA8BtB","sourcesContent":["import { html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\nimport TrackedElement from './tracked-element';\nimport toSentenceCase from './lib/toSentenceCase';\nimport moreSliderCSS from './styles/more-slider';\nimport formatUrl from './lib/formatUrl';\nimport { IATopNavConfig, IATopNavLink } from './models';\nimport { defaultTopNavConfig } from './data/menus';\n\n@customElement('more-slider')\nexport class MoreSlider extends TrackedElement {\n @property({ type: String }) baseHost = '';\n @property({ type: Object }) config: IATopNavConfig = defaultTopNavConfig;\n @property({ type: Array }) menuItems: IATopNavLink[] = [];\n\n static get styles() {\n return moreSliderCSS;\n }\n\n analyticsEvent(title: string) {\n return `${this.config.eventCategory}|NavMore${toSentenceCase(title)}`;\n }\n\n render() {\n return html`\n <ul>\n ${this.menuItems.map(\n (item) =>\n html`<li>\n <a\n @click=${this.trackClick}\n href=${formatUrl(item.url, this.baseHost)}\n data-event-click-tracking=\"${this.analyticsEvent(item.title)}\"\n >${item.title}</a\n >\n </li>`,\n )}\n </ul>\n `;\n }\n}\n"]}
@@ -0,0 +1,19 @@
1
+ import { nothing } from 'lit';
2
+ import TrackedElement from './tracked-element';
3
+ import { IATopNavConfig } from './models';
4
+ export declare class NavSearch extends TrackedElement {
5
+ baseHost: string;
6
+ config: IATopNavConfig;
7
+ locationHandler: (url: string) => void;
8
+ open: boolean;
9
+ openMenu: string;
10
+ searchIn: string;
11
+ searchQuery: string;
12
+ private queryInput?;
13
+ static get styles(): import("lit").CSSResult;
14
+ search(e: CustomEvent): boolean;
15
+ toggleSearchMenu(): void;
16
+ get searchInsideInput(): import("lit").TemplateResult<1> | typeof nothing;
17
+ get searchEndpoint(): string;
18
+ render(): import("lit").TemplateResult<1>;
19
+ }
@@ -0,0 +1,124 @@
1
+ import { __decorate } from "tslib";
2
+ import { nothing, html } from 'lit';
3
+ import TrackedElement from './tracked-element';
4
+ import navSearchCSS from './styles/nav-search';
5
+ import icons from './assets/img/icons';
6
+ import formatUrl from './lib/formatUrl';
7
+ import { customElement, property, query } from 'lit/decorators.js';
8
+ import { defaultTopNavConfig } from './data/menus';
9
+ let NavSearch = class NavSearch extends TrackedElement {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.baseHost = '';
13
+ this.config = defaultTopNavConfig;
14
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
15
+ this.locationHandler = (url) => { };
16
+ this.open = false;
17
+ this.openMenu = '';
18
+ this.searchIn = '';
19
+ this.searchQuery = '';
20
+ }
21
+ static get styles() {
22
+ return navSearchCSS;
23
+ }
24
+ search(e) {
25
+ var _a;
26
+ const query = (_a = this.queryInput) === null || _a === void 0 ? void 0 : _a.value;
27
+ if (!query) {
28
+ e.preventDefault();
29
+ return false;
30
+ }
31
+ // TV search points to a detail page with a q param instead
32
+ if (this.searchIn === 'TV') {
33
+ this.locationHandler(formatUrl(`/details/tv?q=${query}`, this.baseHost));
34
+ e.preventDefault();
35
+ return false;
36
+ }
37
+ this.trackSubmit(e);
38
+ return true;
39
+ }
40
+ toggleSearchMenu() {
41
+ if (this.openMenu === 'search') {
42
+ return;
43
+ }
44
+ this.dispatchEvent(new CustomEvent('menuToggled', {
45
+ detail: {
46
+ menuName: 'search',
47
+ },
48
+ composed: true,
49
+ bubbles: true,
50
+ }));
51
+ }
52
+ get searchInsideInput() {
53
+ return this.searchIn
54
+ ? html `<input type="hidden" name="sin" value="${this.searchIn}" />`
55
+ : nothing;
56
+ }
57
+ get searchEndpoint() {
58
+ return '/search';
59
+ }
60
+ render() {
61
+ var _a, _b;
62
+ const searchMenuClass = this.open ? 'flex' : 'search-inactive';
63
+ return html `
64
+ <div class="search-activated fade-in ${searchMenuClass}">
65
+ <form
66
+ id="nav-search"
67
+ class="highlight"
68
+ .action=${formatUrl(this.searchEndpoint, this.baseHost)}
69
+ method="get"
70
+ @submit=${this.search}
71
+ data-event-submit-tracking="${(_a = this.config) === null || _a === void 0 ? void 0 : _a.eventCategory}|NavSearchSubmit"
72
+ >
73
+ <input
74
+ type="text"
75
+ name="query"
76
+ class="search-field"
77
+ placeholder="Search"
78
+ autocomplete="off"
79
+ value=${this.searchQuery || ''}
80
+ @focus=${this.toggleSearchMenu}
81
+ />
82
+ ${this.searchInsideInput}
83
+ <button
84
+ type="submit"
85
+ class="search"
86
+ tabindex="-1"
87
+ data-event-click-tracking="${(_b = this.config) === null || _b === void 0 ? void 0 : _b.eventCategory}|NavSearchClose"
88
+ >
89
+ ${icons.search}
90
+ </button>
91
+ </form>
92
+ </div>
93
+ `;
94
+ }
95
+ };
96
+ __decorate([
97
+ property({ type: String })
98
+ ], NavSearch.prototype, "baseHost", void 0);
99
+ __decorate([
100
+ property({ type: Object })
101
+ ], NavSearch.prototype, "config", void 0);
102
+ __decorate([
103
+ property({ type: Object })
104
+ ], NavSearch.prototype, "locationHandler", void 0);
105
+ __decorate([
106
+ property({ type: Boolean })
107
+ ], NavSearch.prototype, "open", void 0);
108
+ __decorate([
109
+ property({ type: String })
110
+ ], NavSearch.prototype, "openMenu", void 0);
111
+ __decorate([
112
+ property({ type: String })
113
+ ], NavSearch.prototype, "searchIn", void 0);
114
+ __decorate([
115
+ property({ type: String })
116
+ ], NavSearch.prototype, "searchQuery", void 0);
117
+ __decorate([
118
+ query('[name=query]')
119
+ ], NavSearch.prototype, "queryInput", void 0);
120
+ NavSearch = __decorate([
121
+ customElement('nav-search')
122
+ ], NavSearch);
123
+ export { NavSearch };
124
+ //# sourceMappingURL=nav-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-search.js","sourceRoot":"","sources":["../../src/nav-search.ts"],"names":[],"mappings":"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","sourcesContent":["import { nothing, html } from 'lit';\n\nimport TrackedElement from './tracked-element';\nimport navSearchCSS from './styles/nav-search';\nimport icons from './assets/img/icons';\nimport formatUrl from './lib/formatUrl';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { defaultTopNavConfig } from './data/menus';\nimport { IATopNavConfig } from './models';\n\n@customElement('nav-search')\nexport class NavSearch extends TrackedElement {\n @property({ type: String }) baseHost = '';\n @property({ type: Object }) config: IATopNavConfig = defaultTopNavConfig;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n @property({ type: Object }) locationHandler = (url: string) => {};\n @property({ type: Boolean }) open = false;\n @property({ type: String }) openMenu = '';\n @property({ type: String }) searchIn = '';\n @property({ type: String }) searchQuery = '';\n\n @query('[name=query]') private queryInput?: HTMLInputElement;\n\n static get styles() {\n return navSearchCSS;\n }\n\n search(e: CustomEvent) {\n const query = this.queryInput?.value;\n\n if (!query) {\n e.preventDefault();\n return false;\n }\n\n // TV search points to a detail page with a q param instead\n if (this.searchIn === 'TV') {\n this.locationHandler(\n formatUrl(`/details/tv?q=${query}` as string & Location, this.baseHost),\n );\n e.preventDefault();\n return false;\n }\n\n this.trackSubmit(e);\n return true;\n }\n\n toggleSearchMenu() {\n if (this.openMenu === 'search') {\n return;\n }\n this.dispatchEvent(\n new CustomEvent('menuToggled', {\n detail: {\n menuName: 'search',\n },\n composed: true,\n bubbles: true,\n }),\n );\n }\n\n get searchInsideInput() {\n return this.searchIn\n ? html`<input type=\"hidden\" name=\"sin\" value=\"${this.searchIn}\" />`\n : nothing;\n }\n\n get searchEndpoint() {\n return '/search';\n }\n\n render() {\n const searchMenuClass = this.open ? 'flex' : 'search-inactive';\n\n return html`\n <div class=\"search-activated fade-in ${searchMenuClass}\">\n <form\n id=\"nav-search\"\n class=\"highlight\"\n .action=${formatUrl(\n this.searchEndpoint as string & Location,\n this.baseHost,\n )}\n method=\"get\"\n @submit=${this.search}\n data-event-submit-tracking=\"${this.config\n ?.eventCategory}|NavSearchSubmit\"\n >\n <input\n type=\"text\"\n name=\"query\"\n class=\"search-field\"\n placeholder=\"Search\"\n autocomplete=\"off\"\n value=${this.searchQuery || ''}\n @focus=${this.toggleSearchMenu}\n />\n ${this.searchInsideInput}\n <button\n type=\"submit\"\n class=\"search\"\n tabindex=\"-1\"\n data-event-click-tracking=\"${this.config\n ?.eventCategory}|NavSearchClose\"\n >\n ${icons.search}\n </button>\n </form>\n </div>\n `;\n }\n}\n"]}
@@ -0,0 +1,45 @@
1
+ import { nothing, PropertyValues } from 'lit';
2
+ import TrackedElement from './tracked-element';
3
+ import './assets/img/hamburger';
4
+ import './login-button';
5
+ import './nav-search';
6
+ import './media-menu';
7
+ import { IATopNavConfig, IATopNavSecondIdentitySlotMode } from './models';
8
+ export declare class PrimaryNav extends TrackedElement {
9
+ mediaBaseHost: string;
10
+ baseHost: string;
11
+ hideSearch: boolean;
12
+ config: IATopNavConfig;
13
+ openMenu: string;
14
+ screenName: string;
15
+ searchIn: string;
16
+ searchQuery: string;
17
+ secondIdentitySlotMode: IATopNavSecondIdentitySlotMode;
18
+ selectedMenuOption: string;
19
+ signedOutMenuOpen: boolean;
20
+ userMenuOpen: boolean;
21
+ mediaMenuAnimate: boolean;
22
+ username: string;
23
+ userProfileImagePath: string;
24
+ currentTab: {
25
+ mediatype: string;
26
+ moveTo: string;
27
+ } | undefined;
28
+ signedOutMenuToggled: unknown;
29
+ static get styles(): import("lit").CSSResult;
30
+ toggleMediaMenu(e: Event): void;
31
+ toggleSearchMenu(e: Event): void;
32
+ toggleUserMenu(e: Event): void;
33
+ updated(props: PropertyValues): typeof nothing | undefined;
34
+ get userIcon(): import("lit").TemplateResult<1>;
35
+ get loginIcon(): import("lit").TemplateResult<1>;
36
+ get searchMenuOpen(): boolean;
37
+ get allowSecondaryIcon(): boolean;
38
+ get searchMenu(): import("lit").TemplateResult<1> | typeof nothing;
39
+ get mobileDonateHeart(): import("lit").TemplateResult<1>;
40
+ get uploadButtonTemplate(): import("lit").TemplateResult<1>;
41
+ get userStateTemplate(): import("lit").TemplateResult<1>;
42
+ get secondLogoSlot(): import("lit").TemplateResult<1> | typeof nothing;
43
+ get secondLogoClass(): "" | "second-logo";
44
+ render(): import("lit").TemplateResult<1>;
45
+ }