@internetarchive/collection-browser 1.14.17-beta.5 → 1.14.18-alpha.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 (352) hide show
  1. package/.editorconfig +29 -29
  2. package/.husky/pre-commit +4 -4
  3. package/LICENSE +661 -661
  4. package/README.md +83 -83
  5. package/dist/index.d.ts +12 -11
  6. package/dist/index.js +12 -11
  7. package/dist/index.js.map +1 -1
  8. package/dist/src/app-root.d.ts +83 -83
  9. package/dist/src/app-root.js +438 -489
  10. package/dist/src/app-root.js.map +1 -1
  11. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  12. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  13. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  14. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  15. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  16. package/dist/src/assets/img/icons/chevron.js +2 -2
  17. package/dist/src/assets/img/icons/contract.d.ts +2 -2
  18. package/dist/src/assets/img/icons/contract.js +2 -2
  19. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  20. package/dist/src/assets/img/icons/empty-query.js +2 -2
  21. package/dist/src/assets/img/icons/expand.d.ts +2 -2
  22. package/dist/src/assets/img/icons/expand.js +2 -2
  23. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  24. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  25. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  26. package/dist/src/assets/img/icons/eye.js +2 -2
  27. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  28. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  29. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  30. package/dist/src/assets/img/icons/login-required.js +2 -2
  31. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  32. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  33. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  34. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  35. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  36. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  37. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  38. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  39. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  40. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  41. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  42. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  43. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  44. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  45. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  46. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  47. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
  48. package/dist/src/assets/img/icons/mediatype/search.js +2 -2
  49. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  50. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  51. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  52. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  53. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  54. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  55. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  56. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  57. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  58. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  59. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  60. package/dist/src/assets/img/icons/null-result.js +2 -2
  61. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  62. package/dist/src/assets/img/icons/restricted.js +2 -2
  63. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  64. package/dist/src/assets/img/icons/reviews.js +2 -2
  65. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  66. package/dist/src/assets/img/icons/upload.js +2 -2
  67. package/dist/src/assets/img/icons/views.d.ts +1 -1
  68. package/dist/src/assets/img/icons/views.js +2 -2
  69. package/dist/src/circular-activity-indicator.d.ts +5 -5
  70. package/dist/src/circular-activity-indicator.js +17 -17
  71. package/dist/src/collection-browser.d.ts +384 -406
  72. package/dist/src/collection-browser.js +1342 -1363
  73. package/dist/src/collection-browser.js.map +1 -1
  74. package/dist/src/collection-facets/facet-row.d.ts +30 -30
  75. package/dist/src/collection-facets/facet-row.js +114 -114
  76. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  77. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  78. package/dist/src/collection-facets/facets-template.d.ts +17 -17
  79. package/dist/src/collection-facets/facets-template.js +114 -114
  80. package/dist/src/collection-facets/more-facets-content.d.ts +70 -70
  81. package/dist/src/collection-facets/more-facets-content.js +354 -369
  82. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  83. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  84. package/dist/src/collection-facets/more-facets-pagination.js +196 -196
  85. package/dist/src/collection-facets/toggle-switch.d.ts +41 -41
  86. package/dist/src/collection-facets/toggle-switch.js +94 -94
  87. package/dist/src/collection-facets.d.ts +103 -103
  88. package/dist/src/collection-facets.js +513 -510
  89. package/dist/src/collection-facets.js.map +1 -1
  90. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +217 -0
  91. package/dist/src/data-source/collection-browser-data-source-interface.js +2 -0
  92. package/dist/src/data-source/collection-browser-data-source-interface.js.map +1 -0
  93. package/dist/src/data-source/collection-browser-data-source.d.ts +352 -434
  94. package/dist/src/data-source/collection-browser-data-source.js +911 -800
  95. package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
  96. package/dist/src/data-source/collection-browser-query-state.d.ts +43 -0
  97. package/dist/src/data-source/collection-browser-query-state.js +2 -0
  98. package/dist/src/data-source/collection-browser-query-state.js.map +1 -0
  99. package/dist/src/data-source/models.d.ts +28 -62
  100. package/dist/src/data-source/models.js +8 -1
  101. package/dist/src/data-source/models.js.map +1 -1
  102. package/dist/src/empty-placeholder.d.ts +23 -23
  103. package/dist/src/empty-placeholder.js +74 -74
  104. package/dist/src/expanded-date-picker.d.ts +43 -43
  105. package/dist/src/expanded-date-picker.js +109 -109
  106. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  107. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  108. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  109. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  110. package/dist/src/manage/manage-bar.d.ts +26 -26
  111. package/dist/src/manage/manage-bar.js +53 -53
  112. package/dist/src/manage/manage-bar.js.map +1 -1
  113. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  114. package/dist/src/mediatype/mediatype-config.js +91 -91
  115. package/dist/src/models.d.ts +197 -180
  116. package/dist/src/models.js +380 -269
  117. package/dist/src/models.js.map +1 -1
  118. package/dist/src/restoration-state-handler.d.ts +70 -70
  119. package/dist/src/restoration-state-handler.js +355 -355
  120. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  121. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  122. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
  123. package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
  124. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  125. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  126. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  127. package/dist/src/sort-filter-bar/img/list.js +2 -2
  128. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  129. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
  130. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  131. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
  132. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  133. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
  134. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  135. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  136. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  137. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  138. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +210 -210
  139. package/dist/src/sort-filter-bar/sort-filter-bar.js +653 -652
  140. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  141. package/dist/src/styles/item-image-styles.d.ts +8 -8
  142. package/dist/src/styles/item-image-styles.js +9 -9
  143. package/dist/src/styles/sr-only.d.ts +1 -1
  144. package/dist/src/styles/sr-only.js +2 -2
  145. package/dist/src/tiles/base-tile-component.d.ts +19 -19
  146. package/dist/src/tiles/base-tile-component.js +63 -63
  147. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  148. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  149. package/dist/src/tiles/grid/account-tile.d.ts +18 -18
  150. package/dist/src/tiles/grid/account-tile.js +72 -72
  151. package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
  152. package/dist/src/tiles/grid/collection-tile.js +80 -80
  153. package/dist/src/tiles/grid/item-tile.d.ts +28 -27
  154. package/dist/src/tiles/grid/item-tile.js +162 -135
  155. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  156. package/dist/src/tiles/grid/search-tile.d.ts +10 -10
  157. package/dist/src/tiles/grid/search-tile.js +51 -51
  158. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  159. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
  160. package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
  161. package/dist/src/tiles/grid/tile-stats.js +58 -53
  162. package/dist/src/tiles/grid/tile-stats.js.map +1 -1
  163. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  164. package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
  165. package/dist/src/tiles/hover/tile-hover-pane.d.ts +15 -15
  166. package/dist/src/tiles/hover/tile-hover-pane.js +38 -38
  167. package/dist/src/tiles/image-block.d.ts +17 -17
  168. package/dist/src/tiles/image-block.js +73 -73
  169. package/dist/src/tiles/item-image.d.ts +39 -36
  170. package/dist/src/tiles/item-image.js +155 -127
  171. package/dist/src/tiles/item-image.js.map +1 -1
  172. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
  173. package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
  174. package/dist/src/tiles/list/tile-list-compact.d.ts +15 -15
  175. package/dist/src/tiles/list/tile-list-compact.js +115 -115
  176. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  177. package/dist/src/tiles/list/tile-list.d.ts +47 -46
  178. package/dist/src/tiles/list/tile-list.js +327 -296
  179. package/dist/src/tiles/list/tile-list.js.map +1 -1
  180. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  181. package/dist/src/tiles/mediatype-icon.js +47 -47
  182. package/dist/src/tiles/overlay/icon-overlay.d.ts +10 -10
  183. package/dist/src/tiles/overlay/icon-overlay.js +40 -40
  184. package/dist/src/tiles/overlay/icon-text-overlay.d.ts +9 -9
  185. package/dist/src/tiles/overlay/icon-text-overlay.js +38 -38
  186. package/dist/src/tiles/overlay/text-overlay.d.ts +10 -10
  187. package/dist/src/tiles/overlay/text-overlay.js +42 -42
  188. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  189. package/dist/src/tiles/text-snippet-block.js +73 -73
  190. package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
  191. package/dist/src/tiles/tile-dispatcher.js +232 -231
  192. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  193. package/dist/src/tiles/tile-display-value-provider.d.ts +47 -43
  194. package/dist/src/tiles/tile-display-value-provider.js +94 -80
  195. package/dist/src/tiles/tile-display-value-provider.js.map +1 -1
  196. package/dist/src/utils/analytics-events.d.ts +25 -25
  197. package/dist/src/utils/analytics-events.js +27 -27
  198. package/dist/src/utils/array-equals.d.ts +4 -4
  199. package/dist/src/utils/array-equals.js +10 -10
  200. package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -0
  201. package/dist/src/utils/collapse-repeated-quotes.js +14 -0
  202. package/dist/src/utils/collapse-repeated-quotes.js.map +1 -0
  203. package/dist/src/utils/format-count.d.ts +7 -7
  204. package/dist/src/utils/format-count.js +76 -76
  205. package/dist/src/utils/format-date.d.ts +2 -2
  206. package/dist/src/utils/format-date.js +25 -25
  207. package/dist/src/utils/format-unit-size.d.ts +2 -2
  208. package/dist/src/utils/format-unit-size.js +33 -33
  209. package/dist/src/utils/local-date-from-utc.d.ts +9 -9
  210. package/dist/src/utils/local-date-from-utc.js +15 -15
  211. package/dist/src/utils/log.d.ts +7 -0
  212. package/dist/src/utils/log.js +16 -0
  213. package/dist/src/utils/log.js.map +1 -0
  214. package/dist/src/utils/resolve-mediatype.d.ts +8 -0
  215. package/dist/src/utils/resolve-mediatype.js +24 -0
  216. package/dist/src/utils/resolve-mediatype.js.map +1 -0
  217. package/dist/src/utils/sha1.d.ts +2 -2
  218. package/dist/src/utils/sha1.js +8 -8
  219. package/dist/test/collection-browser.test.d.ts +1 -1
  220. package/dist/test/collection-browser.test.js +1211 -1149
  221. package/dist/test/collection-browser.test.js.map +1 -1
  222. package/dist/test/collection-facets/facet-row.test.d.ts +1 -1
  223. package/dist/test/collection-facets/facet-row.test.js +203 -203
  224. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  225. package/dist/test/collection-facets/facets-template.test.js +105 -105
  226. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  227. package/dist/test/collection-facets/more-facets-content.test.js +133 -133
  228. package/dist/test/collection-facets/more-facets-content.test.js.map +1 -1
  229. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  230. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  231. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
  232. package/dist/test/collection-facets/toggle-switch.test.js +73 -73
  233. package/dist/test/collection-facets.test.d.ts +2 -2
  234. package/dist/test/collection-facets.test.js +653 -648
  235. package/dist/test/collection-facets.test.js.map +1 -1
  236. package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -0
  237. package/dist/test/data-source/collection-browser-data-source.test.js +80 -0
  238. package/dist/test/data-source/collection-browser-data-source.test.js.map +1 -0
  239. package/dist/test/empty-placeholder.test.d.ts +1 -1
  240. package/dist/test/empty-placeholder.test.js +63 -63
  241. package/dist/test/expanded-date-picker.test.d.ts +1 -1
  242. package/dist/test/expanded-date-picker.test.js +95 -95
  243. package/dist/test/icon-overlay.test.d.ts +1 -1
  244. package/dist/test/icon-overlay.test.js +24 -24
  245. package/dist/test/image-block.test.d.ts +1 -1
  246. package/dist/test/image-block.test.js +48 -48
  247. package/dist/test/item-image.test.d.ts +1 -1
  248. package/dist/test/item-image.test.js +85 -86
  249. package/dist/test/item-image.test.js.map +1 -1
  250. package/dist/test/manage/manage-bar.test.d.ts +1 -1
  251. package/dist/test/manage/manage-bar.test.js +72 -72
  252. package/dist/test/mediatype-config.test.d.ts +1 -1
  253. package/dist/test/mediatype-config.test.js +16 -16
  254. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  255. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  256. package/dist/test/mocks/mock-search-responses.d.ts +24 -21
  257. package/dist/test/mocks/mock-search-responses.js +840 -709
  258. package/dist/test/mocks/mock-search-responses.js.map +1 -1
  259. package/dist/test/mocks/mock-search-service.d.ts +15 -15
  260. package/dist/test/mocks/mock-search-service.js +53 -50
  261. package/dist/test/mocks/mock-search-service.js.map +1 -1
  262. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  263. package/dist/test/restoration-state-handler.test.js +270 -270
  264. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  265. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  266. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  267. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  268. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  269. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +418 -418
  270. package/dist/test/text-overlay.test.d.ts +1 -1
  271. package/dist/test/text-overlay.test.js +48 -48
  272. package/dist/test/text-snippet-block.test.d.ts +1 -1
  273. package/dist/test/text-snippet-block.test.js +57 -57
  274. package/dist/test/tile-stats.test.d.ts +1 -1
  275. package/dist/test/tile-stats.test.js +95 -33
  276. package/dist/test/tile-stats.test.js.map +1 -1
  277. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  278. package/dist/test/tiles/grid/account-tile.test.js +76 -76
  279. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  280. package/dist/test/tiles/grid/collection-tile.test.js +73 -73
  281. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  282. package/dist/test/tiles/grid/item-tile.test.js +298 -254
  283. package/dist/test/tiles/grid/item-tile.test.js.map +1 -1
  284. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
  285. package/dist/test/tiles/grid/search-tile.test.js +51 -51
  286. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  287. package/dist/test/tiles/hover/hover-pane-controller.test.js +259 -258
  288. package/dist/test/tiles/hover/hover-pane-controller.test.js.map +1 -1
  289. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  290. package/dist/test/tiles/hover/tile-hover-pane.test.js +13 -13
  291. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  292. package/dist/test/tiles/list/tile-list-compact.test.js +143 -143
  293. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  294. package/dist/test/tiles/list/tile-list.test.js +283 -239
  295. package/dist/test/tiles/list/tile-list.test.js.map +1 -1
  296. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  297. package/dist/test/tiles/tile-dispatcher.test.js +106 -94
  298. package/dist/test/tiles/tile-dispatcher.test.js.map +1 -1
  299. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
  300. package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
  301. package/dist/test/utils/array-equals.test.d.ts +1 -1
  302. package/dist/test/utils/array-equals.test.js +26 -26
  303. package/dist/test/utils/format-count.test.d.ts +1 -1
  304. package/dist/test/utils/format-count.test.js +23 -23
  305. package/dist/test/utils/format-date.test.d.ts +1 -1
  306. package/dist/test/utils/format-date.test.js +17 -17
  307. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  308. package/dist/test/utils/format-unit-size.test.js +17 -17
  309. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
  310. package/dist/test/utils/local-date-from-utc.test.js +26 -26
  311. package/index.ts +3 -5
  312. package/local.archive.org.cert +86 -86
  313. package/local.archive.org.key +27 -27
  314. package/package.json +3 -4
  315. package/renovate.json +6 -6
  316. package/src/app-root.ts +30 -85
  317. package/src/collection-browser.ts +112 -139
  318. package/src/collection-facets/more-facets-content.ts +0 -19
  319. package/src/collection-facets.ts +6 -4
  320. package/src/data-source/collection-browser-data-source-interface.ts +272 -0
  321. package/src/data-source/collection-browser-data-source.ts +314 -379
  322. package/src/data-source/collection-browser-query-state.ts +54 -0
  323. package/src/data-source/models.ts +8 -45
  324. package/src/manage/manage-bar.ts +1 -1
  325. package/src/models.ts +164 -3
  326. package/src/sort-filter-bar/sort-filter-bar.ts +2 -1
  327. package/src/tiles/grid/item-tile.ts +36 -1
  328. package/src/tiles/grid/tile-stats.ts +12 -7
  329. package/src/tiles/item-image.ts +28 -0
  330. package/src/tiles/list/tile-list-compact.ts +1 -1
  331. package/src/tiles/list/tile-list.ts +43 -5
  332. package/src/tiles/tile-dispatcher.ts +2 -1
  333. package/src/tiles/tile-display-value-provider.ts +20 -2
  334. package/src/utils/collapse-repeated-quotes.ts +13 -0
  335. package/src/utils/log.ts +16 -0
  336. package/src/utils/resolve-mediatype.ts +26 -0
  337. package/test/collection-browser.test.ts +161 -50
  338. package/test/collection-facets/more-facets-content.test.ts +4 -2
  339. package/test/collection-facets.test.ts +5 -0
  340. package/test/data-source/collection-browser-data-source.test.ts +103 -0
  341. package/test/item-image.test.ts +34 -36
  342. package/test/mocks/mock-search-responses.ts +144 -0
  343. package/test/mocks/mock-search-service.ts +6 -0
  344. package/test/tile-stats.test.ts +104 -0
  345. package/test/tiles/grid/item-tile.test.ts +55 -0
  346. package/test/tiles/hover/hover-pane-controller.test.ts +19 -17
  347. package/test/tiles/list/tile-list.test.ts +55 -0
  348. package/test/tiles/tile-dispatcher.test.ts +13 -0
  349. package/tsconfig.json +21 -21
  350. package/web-dev-server.config.mjs +30 -30
  351. package/web-test-runner.config.mjs +41 -41
  352. package/types/sentry.d.ts +0 -1
@@ -1,332 +1,376 @@
1
- /* eslint-disable import/no-duplicates */
2
- import { expect, fixture } from '@open-wc/testing';
3
- import { html } from 'lit';
4
- import '../../../src/tiles/list/tile-list';
5
- describe('List Tile', () => {
6
- it('should render initial component', async () => {
7
- var _a, _b, _c;
8
- const el = await fixture(html `<tile-list .model=${{}}></tile-list>`);
9
- const listContainer = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#list-line');
10
- const itemTitle = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#title');
11
- const imageBlock = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('image-block');
12
- expect(listContainer).to.exist;
13
- expect(itemTitle).to.exist;
14
- expect(imageBlock).to.exist;
15
- });
16
- it('should render the mobile template if below mobile breakpoint', async () => {
17
- var _a, _b, _c;
1
+ /* eslint-disable import/no-duplicates */
2
+ import { expect, fixture } from '@open-wc/testing';
3
+ import { html } from 'lit';
4
+ import '../../../src/tiles/list/tile-list';
5
+ describe('List Tile', () => {
6
+ it('should render initial component', async () => {
7
+ var _a, _b, _c;
8
+ const el = await fixture(html `<tile-list .model=${{}}></tile-list>`);
9
+ const listContainer = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#list-line');
10
+ const itemTitle = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#title');
11
+ const imageBlock = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('image-block');
12
+ expect(listContainer).to.exist;
13
+ expect(itemTitle).to.exist;
14
+ expect(imageBlock).to.exist;
15
+ });
16
+ it('should render the mobile template if below mobile breakpoint', async () => {
17
+ var _a, _b, _c;
18
18
  const el = await fixture(html `
19
19
  <tile-list .mobileBreakpoint=${500} .currentWidth=${400}> </tile-list>
20
- `);
21
- const listContainer = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('list-line');
22
- const topLine = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.getElementById('list-line-top');
23
- const bottomLine = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.getElementById('list-line-bottom');
24
- expect(listContainer).to.exist;
25
- expect(listContainer === null || listContainer === void 0 ? void 0 : listContainer.classList.contains('mobile')).to.be.true;
26
- expect(topLine).to.exist;
27
- expect(bottomLine).to.exist;
28
- });
29
- it('should render title link with model href if provided', async () => {
30
- var _a;
20
+ `);
21
+ const listContainer = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('list-line');
22
+ const topLine = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.getElementById('list-line-top');
23
+ const bottomLine = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.getElementById('list-line-bottom');
24
+ expect(listContainer).to.exist;
25
+ expect(listContainer === null || listContainer === void 0 ? void 0 : listContainer.classList.contains('mobile')).to.be.true;
26
+ expect(topLine).to.exist;
27
+ expect(bottomLine).to.exist;
28
+ });
29
+ it('should render title link with model href if provided', async () => {
30
+ var _a;
31
31
  const el = await fixture(html `
32
32
  <tile-list
33
33
  .baseNavigationUrl=${''}
34
34
  .model=${{ title: 'foo', href: '/foo/bar' }}
35
35
  ></tile-list>
36
- `);
37
- const title = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#title > a');
38
- expect(title).to.exist;
39
- expect(title === null || title === void 0 ? void 0 : title.getAttribute('href')).to.equal('/foo/bar');
40
- });
41
- it('should render with creator element but not dates', async () => {
42
- var _a, _b;
36
+ `);
37
+ const title = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#title > a');
38
+ expect(title).to.exist;
39
+ expect(title === null || title === void 0 ? void 0 : title.getAttribute('href')).to.equal('/foo/bar');
40
+ });
41
+ it('should render with creator element but not dates', async () => {
42
+ var _a, _b;
43
43
  const el = await fixture(html `
44
44
  <tile-list .model=${{ creators: ['someone'] }}></tile-list>
45
- `);
46
- const creator = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#creator');
47
- const datesLine = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#dates-line');
48
- expect(creator).to.exist;
49
- expect(datesLine === null || datesLine === void 0 ? void 0 : datesLine.children.length).to.equal(0);
50
- });
51
- it('should render with snippet block when it has snippets', async () => {
52
- var _a;
45
+ `);
46
+ const creator = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#creator');
47
+ const datesLine = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#dates-line');
48
+ expect(creator).to.exist;
49
+ expect(datesLine === null || datesLine === void 0 ? void 0 : datesLine.children.length).to.equal(0);
50
+ });
51
+ it('should render with snippet block when it has snippets', async () => {
52
+ var _a;
53
53
  const el = await fixture(html `
54
54
  <tile-list .model=${{ snippets: ['some {{{snippet}}} text'] }}>
55
55
  </tile-list>
56
- `);
57
- const snippetBlock = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('text-snippet-block');
58
- expect(snippetBlock).to.exist;
59
- });
60
- it('should not render snippet block when no snippets are present', async () => {
61
- var _a;
62
- const el = await fixture(html `<tile-list></tile-list>`);
63
- const snippetBlock = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('text-snippet-block');
64
- expect(snippetBlock).to.not.exist;
65
- });
66
- it('should not render suppressed collections', async () => {
67
- var _a;
56
+ `);
57
+ const snippetBlock = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('text-snippet-block');
58
+ expect(snippetBlock).to.exist;
59
+ });
60
+ it('should not render snippet block when no snippets are present', async () => {
61
+ var _a;
62
+ const el = await fixture(html `<tile-list></tile-list>`);
63
+ const snippetBlock = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('text-snippet-block');
64
+ expect(snippetBlock).to.not.exist;
65
+ });
66
+ it('should not render suppressed collections', async () => {
67
+ var _a;
68
68
  const el = await fixture(html `
69
69
  <tile-list
70
70
  .model=${{ collections: ['deemphasize', 'community', 'foo'] }}
71
71
  .baseNavigationUrl=${'base'}
72
72
  >
73
73
  </tile-list>
74
- `);
75
- const collectionsRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('collections');
76
- expect(collectionsRow).to.exist;
77
- const collectionLinks = collectionsRow === null || collectionsRow === void 0 ? void 0 : collectionsRow.querySelectorAll('a[href]');
78
- expect(collectionLinks === null || collectionLinks === void 0 ? void 0 : collectionLinks.length).to.equal(1);
79
- expect(collectionLinks === null || collectionLinks === void 0 ? void 0 : collectionLinks.item(0).getAttribute('href')).to.equal('base/details/foo');
80
- });
81
- it('should not render fav- collections', async () => {
82
- var _a;
74
+ `);
75
+ const collectionsRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('collections');
76
+ expect(collectionsRow).to.exist;
77
+ const collectionLinks = collectionsRow === null || collectionsRow === void 0 ? void 0 : collectionsRow.querySelectorAll('a[href]');
78
+ expect(collectionLinks === null || collectionLinks === void 0 ? void 0 : collectionLinks.length).to.equal(1);
79
+ expect(collectionLinks === null || collectionLinks === void 0 ? void 0 : collectionLinks.item(0).getAttribute('href')).to.equal('base/details/foo');
80
+ });
81
+ it('should not render fav- collections', async () => {
82
+ var _a;
83
83
  const el = await fixture(html `
84
84
  <tile-list
85
85
  .model=${{ collections: ['fav-foo', 'bar'] }}
86
86
  .baseNavigationUrl=${'base'}
87
87
  >
88
88
  </tile-list>
89
- `);
90
- const collectionsRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('collections');
91
- expect(collectionsRow).to.exist;
92
- const collectionLinks = collectionsRow === null || collectionsRow === void 0 ? void 0 : collectionsRow.querySelectorAll('a[href]');
93
- expect(collectionLinks === null || collectionLinks === void 0 ? void 0 : collectionLinks.length).to.equal(1);
94
- expect(collectionLinks === null || collectionLinks === void 0 ? void 0 : collectionLinks.item(0).getAttribute('href')).to.equal('base/details/bar');
95
- });
96
- it('should render weekly views when sorting by week', async () => {
97
- var _a, _b;
89
+ `);
90
+ const collectionsRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('collections');
91
+ expect(collectionsRow).to.exist;
92
+ const collectionLinks = collectionsRow === null || collectionsRow === void 0 ? void 0 : collectionsRow.querySelectorAll('a[href]');
93
+ expect(collectionLinks === null || collectionLinks === void 0 ? void 0 : collectionLinks.length).to.equal(1);
94
+ expect(collectionLinks === null || collectionLinks === void 0 ? void 0 : collectionLinks.item(0).getAttribute('href')).to.equal('base/details/bar');
95
+ });
96
+ it('should render weekly views when sorting by week', async () => {
97
+ var _a, _b;
98
98
  const el = await fixture(html `
99
99
  <tile-list
100
100
  .model=${{ viewCount: 50, weeklyViewCount: 10 }}
101
101
  .sortParam=${{ field: 'week', direction: 'desc' }}
102
102
  >
103
103
  </tile-list>
104
- `);
105
- const viewsRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('views-line');
106
- expect(viewsRow).to.exist;
107
- expect((_b = viewsRow === null || viewsRow === void 0 ? void 0 : viewsRow.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Views: 10');
108
- });
109
- it('should render published date when sorting by it', async () => {
110
- var _a, _b;
111
- const model = {
112
- dateAdded: new Date(2010, 0, 2),
113
- dateArchived: new Date(2011, 0, 2),
114
- datePublished: new Date(2012, 0, 2),
115
- dateReviewed: new Date(2013, 0, 2),
116
- };
104
+ `);
105
+ const viewsRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('views-line');
106
+ expect(viewsRow).to.exist;
107
+ expect((_b = viewsRow === null || viewsRow === void 0 ? void 0 : viewsRow.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Views: 10');
108
+ });
109
+ it('should render published date when sorting by it', async () => {
110
+ var _a, _b;
111
+ const model = {
112
+ dateAdded: new Date(2010, 0, 2),
113
+ dateArchived: new Date(2011, 0, 2),
114
+ datePublished: new Date(2012, 0, 2),
115
+ dateReviewed: new Date(2013, 0, 2),
116
+ };
117
117
  const el = await fixture(html `
118
118
  <tile-list
119
119
  .model=${model}
120
120
  .sortParam=${{ field: 'date', direction: 'desc' }}
121
121
  >
122
122
  </tile-list>
123
- `);
124
- const dateRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('dates-line');
125
- expect(dateRow).to.exist;
126
- expect((_b = dateRow === null || dateRow === void 0 ? void 0 : dateRow.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.contain('Published: Jan 02, 2012');
127
- });
128
- it('should render added date when sorting by it', async () => {
129
- var _a, _b;
130
- const model = {
131
- dateAdded: new Date(2010, 0, 2),
132
- dateArchived: new Date(2011, 0, 2),
133
- datePublished: new Date(2012, 0, 2),
134
- dateReviewed: new Date(2013, 0, 2),
135
- };
123
+ `);
124
+ const dateRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('dates-line');
125
+ expect(dateRow).to.exist;
126
+ expect((_b = dateRow === null || dateRow === void 0 ? void 0 : dateRow.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.contain('Published: Jan 02, 2012');
127
+ });
128
+ it('should render added date when sorting by it', async () => {
129
+ var _a, _b;
130
+ const model = {
131
+ dateAdded: new Date(2010, 0, 2),
132
+ dateArchived: new Date(2011, 0, 2),
133
+ datePublished: new Date(2012, 0, 2),
134
+ dateReviewed: new Date(2013, 0, 2),
135
+ };
136
136
  const el = await fixture(html `
137
137
  <tile-list
138
138
  .model=${model}
139
139
  .sortParam=${{ field: 'addeddate', direction: 'desc' }}
140
140
  >
141
141
  </tile-list>
142
- `);
143
- const dateRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('dates-line');
144
- expect(dateRow).to.exist;
145
- expect((_b = dateRow === null || dateRow === void 0 ? void 0 : dateRow.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.contain('Added: Jan 02, 2010');
146
- });
147
- it('should render archived date when sorting by it', async () => {
148
- var _a, _b;
149
- const model = {
150
- dateAdded: new Date(2010, 0, 2),
151
- dateArchived: new Date(2011, 0, 2),
152
- datePublished: new Date(2012, 0, 2),
153
- dateReviewed: new Date(2013, 0, 2),
154
- };
142
+ `);
143
+ const dateRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('dates-line');
144
+ expect(dateRow).to.exist;
145
+ expect((_b = dateRow === null || dateRow === void 0 ? void 0 : dateRow.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.contain('Added: Jan 02, 2010');
146
+ });
147
+ it('should render archived date when sorting by it', async () => {
148
+ var _a, _b;
149
+ const model = {
150
+ dateAdded: new Date(2010, 0, 2),
151
+ dateArchived: new Date(2011, 0, 2),
152
+ datePublished: new Date(2012, 0, 2),
153
+ dateReviewed: new Date(2013, 0, 2),
154
+ };
155
155
  const el = await fixture(html `
156
156
  <tile-list
157
157
  .model=${model}
158
158
  .sortParam=${{ field: 'publicdate', direction: 'desc' }}
159
159
  >
160
160
  </tile-list>
161
- `);
162
- const dateRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('dates-line');
163
- expect(dateRow).to.exist;
164
- expect((_b = dateRow === null || dateRow === void 0 ? void 0 : dateRow.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.contain('Archived: Jan 02, 2011');
165
- });
166
- it('should render reviewed date when sorting by it', async () => {
167
- var _a, _b;
168
- const model = {
169
- dateAdded: new Date(2010, 0, 2),
170
- dateArchived: new Date(2011, 0, 2),
171
- datePublished: new Date(2012, 0, 2),
172
- dateReviewed: new Date(2013, 0, 2),
173
- };
161
+ `);
162
+ const dateRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('dates-line');
163
+ expect(dateRow).to.exist;
164
+ expect((_b = dateRow === null || dateRow === void 0 ? void 0 : dateRow.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.contain('Archived: Jan 02, 2011');
165
+ });
166
+ it('should render reviewed date when sorting by it', async () => {
167
+ var _a, _b;
168
+ const model = {
169
+ dateAdded: new Date(2010, 0, 2),
170
+ dateArchived: new Date(2011, 0, 2),
171
+ datePublished: new Date(2012, 0, 2),
172
+ dateReviewed: new Date(2013, 0, 2),
173
+ };
174
174
  const el = await fixture(html `
175
175
  <tile-list
176
176
  .model=${model}
177
177
  .sortParam=${{ field: 'reviewdate', direction: 'desc' }}
178
178
  >
179
179
  </tile-list>
180
- `);
181
- const dateRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('dates-line');
182
- expect(dateRow).to.exist;
183
- expect((_b = dateRow === null || dateRow === void 0 ? void 0 : dateRow.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.contain('Reviewed: Jan 02, 2013');
184
- });
185
- it('should only show the year for a date published of Jan 1 at midnight', async () => {
186
- var _a, _b;
187
- const model = {
188
- datePublished: new Date(2012, 0, 1, 0, 0, 0, 0),
189
- };
180
+ `);
181
+ const dateRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('dates-line');
182
+ expect(dateRow).to.exist;
183
+ expect((_b = dateRow === null || dateRow === void 0 ? void 0 : dateRow.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.contain('Reviewed: Jan 02, 2013');
184
+ });
185
+ it('should only show the year for a date published of Jan 1 at midnight', async () => {
186
+ var _a, _b;
187
+ const model = {
188
+ datePublished: new Date(2012, 0, 1, 0, 0, 0, 0),
189
+ };
190
190
  const el = await fixture(html `
191
191
  <tile-list
192
192
  .model=${model}
193
193
  .sortParam=${{ field: 'date', direction: 'desc' }}
194
194
  >
195
195
  </tile-list>
196
- `);
197
- const dateRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('dates-line');
198
- expect(dateRow).to.exist;
199
- expect((_b = dateRow === null || dateRow === void 0 ? void 0 : dateRow.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.contain('Published: 2012');
200
- });
201
- it('should show full date added/archived/reviewed, even on Jan 1 at midnight', async () => {
202
- var _a, _b, _c, _d, _e, _f;
203
- const model = {
204
- dateAdded: new Date(2010, 0, 1, 0, 0, 0, 0),
205
- dateArchived: new Date(2011, 0, 1, 0, 0, 0, 0),
206
- datePublished: new Date(2012, 0, 1, 0, 0, 0, 0),
207
- dateReviewed: new Date(2013, 0, 1, 0, 0, 0, 0),
208
- };
196
+ `);
197
+ const dateRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('dates-line');
198
+ expect(dateRow).to.exist;
199
+ expect((_b = dateRow === null || dateRow === void 0 ? void 0 : dateRow.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.contain('Published: 2012');
200
+ });
201
+ it('should show full date added/archived/reviewed, even on Jan 1 at midnight', async () => {
202
+ var _a, _b, _c, _d, _e, _f;
203
+ const model = {
204
+ dateAdded: new Date(2010, 0, 1, 0, 0, 0, 0),
205
+ dateArchived: new Date(2011, 0, 1, 0, 0, 0, 0),
206
+ datePublished: new Date(2012, 0, 1, 0, 0, 0, 0),
207
+ dateReviewed: new Date(2013, 0, 1, 0, 0, 0, 0),
208
+ };
209
209
  const el = await fixture(html `
210
210
  <tile-list
211
211
  .model=${model}
212
212
  .sortParam=${{ field: 'addeddate', direction: 'desc' }}
213
213
  >
214
214
  </tile-list>
215
- `);
216
- let dateRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('dates-line');
217
- expect(dateRow).to.exist;
218
- expect((_b = dateRow === null || dateRow === void 0 ? void 0 : dateRow.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.contain('Added: Jan 01, 2010');
219
- el.sortParam = { field: 'publicdate', direction: 'desc' };
220
- await el.updateComplete;
221
- dateRow = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.getElementById('dates-line');
222
- expect(dateRow).to.exist;
223
- expect((_d = dateRow === null || dateRow === void 0 ? void 0 : dateRow.textContent) === null || _d === void 0 ? void 0 : _d.trim()).to.contain('Archived: Jan 01, 2011');
224
- el.sortParam = { field: 'reviewdate', direction: 'desc' };
225
- await el.updateComplete;
226
- dateRow = (_e = el.shadowRoot) === null || _e === void 0 ? void 0 : _e.getElementById('dates-line');
227
- expect(dateRow).to.exist;
228
- expect((_f = dateRow === null || dateRow === void 0 ? void 0 : dateRow.textContent) === null || _f === void 0 ? void 0 : _f.trim()).to.contain('Reviewed: Jan 01, 2013');
229
- });
230
- it('should render links to /search pages (not search.php) for subject, creator, and source', async () => {
231
- var _a, _b, _c;
232
- const model = {
233
- subjects: ['foo'],
234
- creators: ['bar'],
235
- source: 'baz',
236
- };
215
+ `);
216
+ let dateRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('dates-line');
217
+ expect(dateRow).to.exist;
218
+ expect((_b = dateRow === null || dateRow === void 0 ? void 0 : dateRow.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.contain('Added: Jan 01, 2010');
219
+ el.sortParam = { field: 'publicdate', direction: 'desc' };
220
+ await el.updateComplete;
221
+ dateRow = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.getElementById('dates-line');
222
+ expect(dateRow).to.exist;
223
+ expect((_d = dateRow === null || dateRow === void 0 ? void 0 : dateRow.textContent) === null || _d === void 0 ? void 0 : _d.trim()).to.contain('Archived: Jan 01, 2011');
224
+ el.sortParam = { field: 'reviewdate', direction: 'desc' };
225
+ await el.updateComplete;
226
+ dateRow = (_e = el.shadowRoot) === null || _e === void 0 ? void 0 : _e.getElementById('dates-line');
227
+ expect(dateRow).to.exist;
228
+ expect((_f = dateRow === null || dateRow === void 0 ? void 0 : dateRow.textContent) === null || _f === void 0 ? void 0 : _f.trim()).to.contain('Reviewed: Jan 01, 2013');
229
+ });
230
+ it('should render links to /search pages (not search.php) for subject, creator, and source', async () => {
231
+ var _a, _b, _c;
232
+ const model = {
233
+ subjects: ['foo'],
234
+ creators: ['bar'],
235
+ source: 'baz',
236
+ };
237
237
  const el = await fixture(html `
238
238
  <tile-list .model=${model}></tile-list>
239
- `);
240
- const subjectLink = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#topics a[href]');
241
- expect(subjectLink).to.exist;
242
- expect(subjectLink === null || subjectLink === void 0 ? void 0 : subjectLink.getAttribute('href')).to.equal(`/search?query=${encodeURIComponent('subject:"foo"')}`);
243
- const creatorLink = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#creator a[href]');
244
- expect(creatorLink).to.exist;
245
- expect(creatorLink === null || creatorLink === void 0 ? void 0 : creatorLink.getAttribute('href')).to.equal(`/search?query=${encodeURIComponent('creator:"bar"')}`);
246
- const sourceLink = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#source a[href]');
247
- expect(sourceLink).to.exist;
248
- expect(sourceLink === null || sourceLink === void 0 ? void 0 : sourceLink.getAttribute('href')).to.equal(`/search?query=${encodeURIComponent('source:"baz"')}`);
249
- });
250
- it('should render multi-line descriptions with spaces b/w lines', async () => {
251
- var _a, _b;
239
+ `);
240
+ const subjectLink = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#topics a[href]');
241
+ expect(subjectLink).to.exist;
242
+ expect(subjectLink === null || subjectLink === void 0 ? void 0 : subjectLink.getAttribute('href')).to.equal(`/search?query=${encodeURIComponent('subject:"foo"')}`);
243
+ const creatorLink = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#creator a[href]');
244
+ expect(creatorLink).to.exist;
245
+ expect(creatorLink === null || creatorLink === void 0 ? void 0 : creatorLink.getAttribute('href')).to.equal(`/search?query=${encodeURIComponent('creator:"bar"')}`);
246
+ const sourceLink = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#source a[href]');
247
+ expect(sourceLink).to.exist;
248
+ expect(sourceLink === null || sourceLink === void 0 ? void 0 : sourceLink.getAttribute('href')).to.equal(`/search?query=${encodeURIComponent('source:"baz"')}`);
249
+ });
250
+ it('should render multi-line descriptions with spaces b/w lines', async () => {
251
+ var _a, _b;
252
252
  const el = await fixture(html `
253
253
  <tile-list .model=${{ description: 'line1\nline2' }}> </tile-list>
254
- `);
255
- const descriptionBlock = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('description');
256
- expect(descriptionBlock).to.exist;
257
- expect((_b = descriptionBlock === null || descriptionBlock === void 0 ? void 0 : descriptionBlock.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('line1 line2'); // line break replaced by space
258
- });
259
- it('should render mediatype icon as link to corresponding mediatype collection details', async () => {
260
- var _a;
261
- const model = {
262
- mediatype: 'texts',
263
- };
254
+ `);
255
+ const descriptionBlock = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('description');
256
+ expect(descriptionBlock).to.exist;
257
+ expect((_b = descriptionBlock === null || descriptionBlock === void 0 ? void 0 : descriptionBlock.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('line1 line2'); // line break replaced by space
258
+ });
259
+ it('should render mediatype icon as link to corresponding mediatype collection details', async () => {
260
+ var _a;
261
+ const model = {
262
+ mediatype: 'texts',
263
+ };
264
264
  const el = await fixture(html `
265
265
  <tile-list
266
266
  .baseNavigationUrl=${'https://archive.org'}
267
267
  .model=${model}
268
268
  ></tile-list>
269
- `);
270
- const mediatypeLink = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('a#icon-right');
271
- expect(mediatypeLink).to.exist;
272
- expect(mediatypeLink === null || mediatypeLink === void 0 ? void 0 : mediatypeLink.getAttribute('href')).to.equal(`https://archive.org/details/texts`);
273
- });
274
- it('should render mediatype icon as link even with empty baseNavigationUrl', async () => {
275
- var _a;
276
- const model = {
277
- mediatype: 'texts',
278
- };
269
+ `);
270
+ const mediatypeLink = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('a#icon-right');
271
+ expect(mediatypeLink).to.exist;
272
+ expect(mediatypeLink === null || mediatypeLink === void 0 ? void 0 : mediatypeLink.getAttribute('href')).to.equal(`https://archive.org/details/texts`);
273
+ });
274
+ it('should render mediatype icon as link even with empty baseNavigationUrl', async () => {
275
+ var _a;
276
+ const model = {
277
+ mediatype: 'texts',
278
+ };
279
279
  const el = await fixture(html `
280
280
  <tile-list .baseNavigationUrl=${''} .model=${model}></tile-list>
281
- `);
282
- const mediatypeLink = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('a#icon-right');
283
- expect(mediatypeLink).to.exist;
284
- expect(mediatypeLink === null || mediatypeLink === void 0 ? void 0 : mediatypeLink.getAttribute('href')).to.equal(`/details/texts`);
285
- });
286
- it('should render collection mediatype icon as link to search page', async () => {
287
- var _a;
288
- const model = {
289
- mediatype: 'collection',
290
- };
281
+ `);
282
+ const mediatypeLink = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('a#icon-right');
283
+ expect(mediatypeLink).to.exist;
284
+ expect(mediatypeLink === null || mediatypeLink === void 0 ? void 0 : mediatypeLink.getAttribute('href')).to.equal(`/details/texts`);
285
+ });
286
+ it('should render collection mediatype icon as link to search page', async () => {
287
+ var _a;
288
+ const model = {
289
+ mediatype: 'collection',
290
+ };
291
291
  const el = await fixture(html `
292
292
  <tile-list
293
293
  .baseNavigationUrl=${'https://archive.org'}
294
294
  .model=${model}
295
295
  ></tile-list>
296
- `);
297
- const mediatypeLink = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('a#icon-right');
298
- expect(mediatypeLink).to.exist;
299
- expect(mediatypeLink === null || mediatypeLink === void 0 ? void 0 : mediatypeLink.getAttribute('href')).to.equal(`https://archive.org/search?query=mediatype:collection&sort=-downloads`);
300
- });
301
- it('should not render account mediatype icon as link', async () => {
302
- var _a;
303
- const model = {
304
- mediatype: 'account',
305
- };
296
+ `);
297
+ const mediatypeLink = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('a#icon-right');
298
+ expect(mediatypeLink).to.exist;
299
+ expect(mediatypeLink === null || mediatypeLink === void 0 ? void 0 : mediatypeLink.getAttribute('href')).to.equal(`https://archive.org/search?query=mediatype:collection&sort=-downloads`);
300
+ });
301
+ it('should not render account mediatype icon as link', async () => {
302
+ var _a;
303
+ const model = {
304
+ mediatype: 'account',
305
+ };
306
306
  const el = await fixture(html `
307
307
  <tile-list
308
308
  .baseNavigationUrl=${'https://archive.org'}
309
309
  .model=${model}
310
310
  ></tile-list>
311
- `);
312
- const mediatypeLink = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('a#icon-right');
313
- expect(mediatypeLink).to.exist;
314
- expect(mediatypeLink === null || mediatypeLink === void 0 ? void 0 : mediatypeLink.getAttribute('href')).not.to.exist;
315
- });
316
- it('should render date added for accounts', async () => {
317
- var _a, _b;
311
+ `);
312
+ const mediatypeLink = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('a#icon-right');
313
+ expect(mediatypeLink).to.exist;
314
+ expect(mediatypeLink === null || mediatypeLink === void 0 ? void 0 : mediatypeLink.getAttribute('href')).not.to.exist;
315
+ });
316
+ it('should render date added for accounts', async () => {
317
+ var _a, _b;
318
318
  const el = await fixture(html `
319
319
  <tile-list
320
- .model=${{
321
- mediatype: 'account',
322
- dateAdded: new Date('2015-05-05T00:00:00'),
320
+ .model=${{
321
+ mediatype: 'account',
322
+ dateAdded: new Date('2015-05-05T00:00:00'),
323
323
  }}
324
324
  >
325
325
  </tile-list>
326
- `);
327
- const creatorBlock = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('creator');
328
- expect(creatorBlock).to.exist;
329
- expect((_b = creatorBlock === null || creatorBlock === void 0 ? void 0 : creatorBlock.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Archivist since 2015');
330
- });
331
- });
326
+ `);
327
+ const creatorBlock = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('creator');
328
+ expect(creatorBlock).to.exist;
329
+ expect((_b = creatorBlock === null || creatorBlock === void 0 ? void 0 : creatorBlock.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Archivist since 2015');
330
+ });
331
+ it('should render web capture date links if present', async () => {
332
+ var _a, _b, _c, _d, _e;
333
+ const captureDates = [
334
+ new Date('2010-01-02T12:34:56Z'),
335
+ new Date('2011-02-03T12:43:21Z'),
336
+ ];
337
+ const el = await fixture(html `
338
+ <tile-list
339
+ .model=${{
340
+ identifier: 'foo',
341
+ title: 'https://example.com/',
342
+ captureDates,
343
+ }}
344
+ ></tile-list>
345
+ `);
346
+ const captureDatesUl = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.capture-dates');
347
+ expect(captureDatesUl, 'capture dates container').to.exist;
348
+ expect(captureDatesUl === null || captureDatesUl === void 0 ? void 0 : captureDatesUl.children.length).to.equal(2);
349
+ const firstDateLink = (_b = captureDatesUl === null || captureDatesUl === void 0 ? void 0 : captureDatesUl.children[0]) === null || _b === void 0 ? void 0 : _b.querySelector('a[href]');
350
+ expect(firstDateLink, 'first date link').to.exist;
351
+ expect(firstDateLink === null || firstDateLink === void 0 ? void 0 : firstDateLink.getAttribute('href')).to.equal('https://web.archive.org/web/20100102123456/https%3A%2F%2Fexample.com%2F');
352
+ expect((_c = firstDateLink === null || firstDateLink === void 0 ? void 0 : firstDateLink.textContent) === null || _c === void 0 ? void 0 : _c.trim()).to.equal('Jan 02, 2010');
353
+ const secondDateLink = (_d = captureDatesUl === null || captureDatesUl === void 0 ? void 0 : captureDatesUl.children[1]) === null || _d === void 0 ? void 0 : _d.querySelector('a[href]');
354
+ expect(secondDateLink, 'second date link').to.exist;
355
+ expect(secondDateLink === null || secondDateLink === void 0 ? void 0 : secondDateLink.getAttribute('href')).to.equal('https://web.archive.org/web/20110203124321/https%3A%2F%2Fexample.com%2F');
356
+ expect((_e = secondDateLink === null || secondDateLink === void 0 ? void 0 : secondDateLink.textContent) === null || _e === void 0 ? void 0 : _e.trim()).to.equal('Feb 03, 2011');
357
+ });
358
+ it('should not render web captures if no title is present', async () => {
359
+ var _a;
360
+ const captureDates = [
361
+ new Date('2010-01-02T12:34:56Z'),
362
+ new Date('2011-02-03T12:43:21Z'),
363
+ ];
364
+ const el = await fixture(html `
365
+ <tile-list
366
+ .model=${{
367
+ identifier: 'foo',
368
+ captureDates,
369
+ }}
370
+ ></tile-list>
371
+ `);
372
+ const captureDatesUl = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.capture-dates');
373
+ expect(captureDatesUl).not.to.exist;
374
+ });
375
+ });
332
376
  //# sourceMappingURL=tile-list.test.js.map