@internetarchive/collection-browser 2.7.5-alpha.3 → 2.7.5-alpha1

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 (328) 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 +13 -13
  6. package/dist/index.js +13 -13
  7. package/dist/src/app-root.d.ts +99 -95
  8. package/dist/src/app-root.js +514 -494
  9. package/dist/src/app-root.js.map +1 -1
  10. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  11. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  12. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  13. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  14. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  15. package/dist/src/assets/img/icons/chevron.js +2 -2
  16. package/dist/src/assets/img/icons/contract.d.ts +2 -2
  17. package/dist/src/assets/img/icons/contract.js +2 -2
  18. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  19. package/dist/src/assets/img/icons/empty-query.js +2 -2
  20. package/dist/src/assets/img/icons/expand.d.ts +2 -2
  21. package/dist/src/assets/img/icons/expand.js +2 -2
  22. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  23. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  24. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  25. package/dist/src/assets/img/icons/eye.js +2 -2
  26. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  27. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  28. package/dist/src/assets/img/icons/favorite-unfilled.d.ts +1 -1
  29. package/dist/src/assets/img/icons/favorite-unfilled.js +2 -2
  30. package/dist/src/assets/img/icons/filter.d.ts +2 -2
  31. package/dist/src/assets/img/icons/filter.js +2 -2
  32. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  33. package/dist/src/assets/img/icons/login-required.js +2 -2
  34. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  35. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  36. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  37. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  38. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  39. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  40. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  41. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  42. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  43. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  44. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  45. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  46. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  47. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  48. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  49. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  50. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
  51. package/dist/src/assets/img/icons/mediatype/search.js +2 -2
  52. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  53. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  54. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  55. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  56. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  57. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  58. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  59. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  60. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  61. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  62. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  63. package/dist/src/assets/img/icons/null-result.js +2 -2
  64. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  65. package/dist/src/assets/img/icons/restricted.js +2 -2
  66. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  67. package/dist/src/assets/img/icons/reviews.js +2 -2
  68. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  69. package/dist/src/assets/img/icons/upload.js +2 -2
  70. package/dist/src/assets/img/icons/views.d.ts +1 -1
  71. package/dist/src/assets/img/icons/views.js +2 -2
  72. package/dist/src/circular-activity-indicator.d.ts +5 -5
  73. package/dist/src/circular-activity-indicator.js +17 -17
  74. package/dist/src/collection-browser.d.ts +582 -578
  75. package/dist/src/collection-browser.js +1629 -1614
  76. package/dist/src/collection-browser.js.map +1 -1
  77. package/dist/src/collection-facets/facet-row.d.ts +30 -30
  78. package/dist/src/collection-facets/facet-row.js +118 -118
  79. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  80. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  81. package/dist/src/collection-facets/facets-template.d.ts +13 -13
  82. package/dist/src/collection-facets/facets-template.js +44 -44
  83. package/dist/src/collection-facets/more-facets-content.d.ts +106 -106
  84. package/dist/src/collection-facets/more-facets-content.js +407 -407
  85. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  86. package/dist/src/collection-facets/more-facets-pagination.js +196 -196
  87. package/dist/src/collection-facets/smart-facets/dedupe.d.ts +10 -10
  88. package/dist/src/collection-facets/smart-facets/dedupe.js +33 -33
  89. package/dist/src/collection-facets/smart-facets/heuristics/browser-language-heuristic.d.ts +5 -5
  90. package/dist/src/collection-facets/smart-facets/heuristics/browser-language-heuristic.js +23 -23
  91. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.d.ts +5 -5
  92. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.js +44 -44
  93. package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.d.ts +5 -5
  94. package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.js +172 -172
  95. package/dist/src/collection-facets/smart-facets/models.d.ts +26 -26
  96. package/dist/src/collection-facets/smart-facets/models.js +1 -1
  97. package/dist/src/collection-facets/smart-facets/smart-facet-bar.d.ts +31 -31
  98. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +240 -240
  99. package/dist/src/collection-facets/smart-facets/smart-facet-button.d.ts +11 -11
  100. package/dist/src/collection-facets/smart-facets/smart-facet-button.js +86 -86
  101. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.d.ts +16 -16
  102. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js +100 -100
  103. package/dist/src/collection-facets/smart-facets/smart-facet-equals.d.ts +2 -2
  104. package/dist/src/collection-facets/smart-facets/smart-facet-equals.js +12 -12
  105. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.d.ts +5 -5
  106. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js +15 -15
  107. package/dist/src/collection-facets/toggle-switch.d.ts +41 -41
  108. package/dist/src/collection-facets/toggle-switch.js +94 -94
  109. package/dist/src/collection-facets.d.ts +103 -103
  110. package/dist/src/collection-facets.js +522 -522
  111. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +241 -241
  112. package/dist/src/data-source/collection-browser-data-source-interface.js +1 -1
  113. package/dist/src/data-source/collection-browser-data-source.d.ts +373 -378
  114. package/dist/src/data-source/collection-browser-data-source.js +982 -1012
  115. package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
  116. package/dist/src/data-source/collection-browser-query-state.d.ts +43 -43
  117. package/dist/src/data-source/collection-browser-query-state.js +1 -1
  118. package/dist/src/data-source/models.d.ts +28 -28
  119. package/dist/src/data-source/models.js +8 -8
  120. package/dist/src/empty-placeholder.d.ts +23 -23
  121. package/dist/src/empty-placeholder.js +79 -79
  122. package/dist/src/expanded-date-picker.d.ts +43 -43
  123. package/dist/src/expanded-date-picker.js +109 -109
  124. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  125. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  126. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  127. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  128. package/dist/src/manage/manage-bar.d.ts +35 -30
  129. package/dist/src/manage/manage-bar.js +86 -82
  130. package/dist/src/manage/manage-bar.js.map +1 -1
  131. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  132. package/dist/src/mediatype/mediatype-config.js +91 -91
  133. package/dist/src/models.d.ts +219 -219
  134. package/dist/src/models.js +401 -401
  135. package/dist/src/models.js.map +1 -1
  136. package/dist/src/restoration-state-handler.d.ts +70 -70
  137. package/dist/src/restoration-state-handler.js +363 -363
  138. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  139. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  140. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
  141. package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
  142. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  143. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  144. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  145. package/dist/src/sort-filter-bar/img/list.js +2 -2
  146. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  147. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
  148. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  149. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
  150. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  151. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
  152. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  153. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  154. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  155. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  156. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +223 -223
  157. package/dist/src/sort-filter-bar/sort-filter-bar.js +697 -697
  158. package/dist/src/styles/ia-button.d.ts +2 -2
  159. package/dist/src/styles/ia-button.js +51 -19
  160. package/dist/src/styles/ia-button.js.map +1 -1
  161. package/dist/src/styles/item-image-styles.d.ts +8 -8
  162. package/dist/src/styles/item-image-styles.js +9 -9
  163. package/dist/src/styles/sr-only.d.ts +1 -1
  164. package/dist/src/styles/sr-only.js +2 -2
  165. package/dist/src/tiles/base-tile-component.d.ts +19 -19
  166. package/dist/src/tiles/base-tile-component.js +64 -64
  167. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  168. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  169. package/dist/src/tiles/grid/account-tile.d.ts +18 -18
  170. package/dist/src/tiles/grid/account-tile.js +72 -72
  171. package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
  172. package/dist/src/tiles/grid/collection-tile.js +80 -80
  173. package/dist/src/tiles/grid/item-tile.d.ts +34 -34
  174. package/dist/src/tiles/grid/item-tile.js +158 -158
  175. package/dist/src/tiles/grid/search-tile.d.ts +10 -10
  176. package/dist/src/tiles/grid/search-tile.js +51 -51
  177. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  178. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
  179. package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
  180. package/dist/src/tiles/grid/tile-stats.js +53 -53
  181. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  182. package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
  183. package/dist/src/tiles/hover/tile-hover-pane.d.ts +18 -18
  184. package/dist/src/tiles/hover/tile-hover-pane.js +69 -69
  185. package/dist/src/tiles/image-block.d.ts +18 -18
  186. package/dist/src/tiles/image-block.js +89 -89
  187. package/dist/src/tiles/item-image.d.ts +39 -39
  188. package/dist/src/tiles/item-image.js +154 -154
  189. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
  190. package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
  191. package/dist/src/tiles/list/tile-list-compact.d.ts +19 -19
  192. package/dist/src/tiles/list/tile-list-compact.js +122 -122
  193. package/dist/src/tiles/list/tile-list.d.ts +54 -54
  194. package/dist/src/tiles/list/tile-list.js +323 -323
  195. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  196. package/dist/src/tiles/mediatype-icon.js +47 -47
  197. package/dist/src/tiles/overlay/icon-overlay.d.ts +8 -8
  198. package/dist/src/tiles/overlay/icon-overlay.js +25 -25
  199. package/dist/src/tiles/overlay/text-overlay.d.ts +9 -9
  200. package/dist/src/tiles/overlay/text-overlay.js +31 -31
  201. package/dist/src/tiles/review-block.d.ts +12 -12
  202. package/dist/src/tiles/review-block.js +56 -56
  203. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  204. package/dist/src/tiles/text-snippet-block.js +73 -73
  205. package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
  206. package/dist/src/tiles/tile-dispatcher.js +230 -230
  207. package/dist/src/tiles/tile-display-value-provider.d.ts +47 -47
  208. package/dist/src/tiles/tile-display-value-provider.js +94 -94
  209. package/dist/src/utils/analytics-events.d.ts +28 -28
  210. package/dist/src/utils/analytics-events.js +30 -30
  211. package/dist/src/utils/array-equals.d.ts +4 -4
  212. package/dist/src/utils/array-equals.js +10 -10
  213. package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -11
  214. package/dist/src/utils/collapse-repeated-quotes.js +13 -13
  215. package/dist/src/utils/facet-utils.d.ts +83 -83
  216. package/dist/src/utils/facet-utils.js +145 -145
  217. package/dist/src/utils/format-count.d.ts +7 -7
  218. package/dist/src/utils/format-count.js +76 -76
  219. package/dist/src/utils/format-date.d.ts +2 -2
  220. package/dist/src/utils/format-date.js +25 -25
  221. package/dist/src/utils/format-unit-size.d.ts +2 -2
  222. package/dist/src/utils/format-unit-size.js +33 -33
  223. package/dist/src/utils/local-date-from-utc.d.ts +9 -9
  224. package/dist/src/utils/local-date-from-utc.js +15 -15
  225. package/dist/src/utils/log.d.ts +7 -7
  226. package/dist/src/utils/log.js +15 -15
  227. package/dist/src/utils/resolve-mediatype.d.ts +8 -8
  228. package/dist/src/utils/resolve-mediatype.js +23 -23
  229. package/dist/src/utils/sha1.d.ts +2 -2
  230. package/dist/src/utils/sha1.js +8 -8
  231. package/dist/test/collection-browser.test.d.ts +1 -1
  232. package/dist/test/collection-browser.test.js +1294 -1294
  233. package/dist/test/collection-browser.test.js.map +1 -1
  234. package/dist/test/collection-facets/facet-row.test.d.ts +1 -1
  235. package/dist/test/collection-facets/facet-row.test.js +227 -227
  236. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  237. package/dist/test/collection-facets/facets-template.test.js +91 -91
  238. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  239. package/dist/test/collection-facets/more-facets-content.test.js +141 -141
  240. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  241. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  242. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
  243. package/dist/test/collection-facets/toggle-switch.test.js +73 -73
  244. package/dist/test/collection-facets.test.d.ts +2 -2
  245. package/dist/test/collection-facets.test.js +690 -690
  246. package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -1
  247. package/dist/test/data-source/collection-browser-data-source.test.js +89 -89
  248. package/dist/test/empty-placeholder.test.d.ts +1 -1
  249. package/dist/test/empty-placeholder.test.js +63 -63
  250. package/dist/test/expanded-date-picker.test.d.ts +1 -1
  251. package/dist/test/expanded-date-picker.test.js +95 -95
  252. package/dist/test/icon-overlay.test.d.ts +1 -1
  253. package/dist/test/icon-overlay.test.js +24 -24
  254. package/dist/test/image-block.test.d.ts +1 -1
  255. package/dist/test/image-block.test.js +107 -107
  256. package/dist/test/item-image.test.d.ts +1 -1
  257. package/dist/test/item-image.test.js +85 -85
  258. package/dist/test/manage/manage-bar.test.d.ts +1 -1
  259. package/dist/test/manage/manage-bar.test.js +91 -81
  260. package/dist/test/manage/manage-bar.test.js.map +1 -1
  261. package/dist/test/mediatype-config.test.d.ts +1 -1
  262. package/dist/test/mediatype-config.test.js +16 -16
  263. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  264. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  265. package/dist/test/mocks/mock-search-responses.d.ts +25 -25
  266. package/dist/test/mocks/mock-search-responses.js +942 -942
  267. package/dist/test/mocks/mock-search-service.d.ts +15 -15
  268. package/dist/test/mocks/mock-search-service.js +54 -54
  269. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  270. package/dist/test/restoration-state-handler.test.js +270 -270
  271. package/dist/test/review-block.test.d.ts +1 -1
  272. package/dist/test/review-block.test.js +44 -44
  273. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  274. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  275. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  276. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  277. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  278. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +426 -426
  279. package/dist/test/text-overlay.test.d.ts +1 -1
  280. package/dist/test/text-overlay.test.js +38 -38
  281. package/dist/test/text-snippet-block.test.d.ts +1 -1
  282. package/dist/test/text-snippet-block.test.js +57 -57
  283. package/dist/test/tile-stats.test.d.ts +1 -1
  284. package/dist/test/tile-stats.test.js +81 -81
  285. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  286. package/dist/test/tiles/grid/account-tile.test.js +76 -76
  287. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  288. package/dist/test/tiles/grid/collection-tile.test.js +73 -73
  289. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  290. package/dist/test/tiles/grid/item-tile.test.js +312 -312
  291. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
  292. package/dist/test/tiles/grid/search-tile.test.js +51 -51
  293. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  294. package/dist/test/tiles/hover/hover-pane-controller.test.js +259 -259
  295. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  296. package/dist/test/tiles/hover/tile-hover-pane.test.js +56 -56
  297. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  298. package/dist/test/tiles/list/tile-list-compact.test.js +143 -143
  299. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  300. package/dist/test/tiles/list/tile-list.test.js +297 -297
  301. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  302. package/dist/test/tiles/tile-dispatcher.test.js +100 -100
  303. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
  304. package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
  305. package/dist/test/utils/array-equals.test.d.ts +1 -1
  306. package/dist/test/utils/array-equals.test.js +26 -26
  307. package/dist/test/utils/format-count.test.d.ts +1 -1
  308. package/dist/test/utils/format-count.test.js +23 -23
  309. package/dist/test/utils/format-date.test.d.ts +1 -1
  310. package/dist/test/utils/format-date.test.js +17 -17
  311. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  312. package/dist/test/utils/format-unit-size.test.js +17 -17
  313. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
  314. package/dist/test/utils/local-date-from-utc.test.js +26 -26
  315. package/local.archive.org.cert +86 -86
  316. package/local.archive.org.key +27 -27
  317. package/package.json +1 -1
  318. package/renovate.json +6 -6
  319. package/src/app-root.ts +23 -0
  320. package/src/collection-browser.ts +18 -0
  321. package/src/data-source/collection-browser-data-source.ts +9 -45
  322. package/src/manage/manage-bar.ts +28 -21
  323. package/src/models.ts +2 -2
  324. package/src/styles/ia-button.ts +37 -5
  325. package/test/collection-browser.test.ts +1 -1
  326. package/test/manage/manage-bar.test.ts +12 -0
  327. package/web-dev-server.config.mjs +30 -30
  328. package/web-test-runner.config.mjs +41 -41
@@ -149,18 +149,11 @@ export class CollectionBrowserDataSource
149
149
  */
150
150
  queryErrorMessage?: string;
151
151
 
152
- /**
153
- * Internal property to store the `resolve` function for the most recent
154
- * `initialSearchComplete` promise, allowing us to resolve it at the appropriate time.
155
- */
156
- private _initialSearchCompleteResolver!: (val: boolean) => void;
157
-
158
152
  /**
159
153
  * Internal property to store the private value backing the `initialSearchComplete` getter.
160
154
  */
161
- private _initialSearchCompletePromise: Promise<boolean> = new Promise(res => {
162
- this._initialSearchCompleteResolver = res;
163
- });
155
+ private _initialSearchCompletePromise: Promise<boolean> =
156
+ Promise.resolve(true);
164
157
 
165
158
  /**
166
159
  * @inheritdoc
@@ -186,8 +179,6 @@ export class CollectionBrowserDataSource
186
179
  }
187
180
 
188
181
  hostUpdate(): void {
189
- console.log('host updated');
190
- console.log(`active on host? ${this.activeOnHost}`);
191
182
  // This reactive controller hook is run whenever the host component (collection-browser) performs an update.
192
183
  // We check whether the host's state has changed in a way which should trigger a reset & new results fetch.
193
184
 
@@ -198,22 +189,18 @@ export class CollectionBrowserDataSource
198
189
  this.setSearchResultsLoading(this.searchResultsLoading);
199
190
  this.setFacetsLoading(this.facetsLoading);
200
191
 
201
- console.log(`has search service? ${!!this.host.searchService}`);
202
192
  // Can't perform searches without a search service
203
193
  if (!this.host.searchService) return;
204
194
 
205
195
  // We should only reset if part of the full query state has changed
206
196
  const queryKeyChanged = this.pageFetchQueryKey !== this.previousQueryKey;
207
- console.log(`query key changed? ${queryKeyChanged}`);
208
197
  if (!queryKeyChanged) return;
209
198
 
210
199
  // We should only reset if either:
211
200
  // (a) our state permits a valid search, or
212
- // (b) we have a blank query that we want to show empty results for
213
- const emptyQuery = !this.host.baseQuery;
214
- console.log(`can perform search? ${this.canPerformSearch}`);
215
- console.log(`emptyQuery: ${emptyQuery}`);
216
- if (!(this.canPerformSearch || emptyQuery)) return;
201
+ // (b) we have a blank query that we're showing a placeholder/message for
202
+ const queryIsEmpty = !this.host.baseQuery;
203
+ if (!(this.canPerformSearch || queryIsEmpty)) return;
217
204
 
218
205
  if (this.activeOnHost) this.host.emitQueryStateChanged();
219
206
  this.handleQueryChange();
@@ -243,6 +230,7 @@ export class CollectionBrowserDataSource
243
230
  this.yearHistogramAggregation = undefined;
244
231
  this.pageElements = undefined;
245
232
  this.parentCollections = [];
233
+ this.previousQueryKey = '';
246
234
  this.queryErrorMessage = undefined;
247
235
 
248
236
  this.offset = 0;
@@ -381,28 +369,26 @@ export class CollectionBrowserDataSource
381
369
  * @inheritdoc
382
370
  */
383
371
  async handleQueryChange(): Promise<void> {
384
- console.log('handling query change');
385
- console.log(`suppressFetches: ${this.suppressFetches}`);
386
372
  // Don't react to the change if fetches are suppressed for this data source
387
373
  if (this.suppressFetches) return;
388
374
 
389
375
  this.reset();
390
376
 
391
377
  // Reset the `initialSearchComplete` promise with a new value for the imminent search
378
+ let initialSearchCompleteResolver: (value: boolean) => void;
392
379
  this._initialSearchCompletePromise = new Promise(res => {
393
- this._initialSearchCompleteResolver = res;
380
+ initialSearchCompleteResolver = res;
394
381
  });
395
382
 
396
383
  // Fire the initial page & facet requests
397
384
  this.queryInitialized = true;
398
- console.log('firing requests...');
399
385
  await Promise.all([
400
386
  this.doInitialPageFetch(),
401
387
  this.canFetchFacets ? this.fetchFacets() : null,
402
388
  ]);
403
389
 
404
390
  // Resolve the `initialSearchComplete` promise for this search
405
- this._initialSearchCompleteResolver(true);
391
+ initialSearchCompleteResolver!(true);
406
392
  }
407
393
 
408
394
  /**
@@ -423,15 +409,11 @@ export class CollectionBrowserDataSource
423
409
  * (i.e., they aren't suppressed or already loading, etc.)
424
410
  */
425
411
  private get canFetchFacets(): boolean {
426
- console.log('in canFetchFacets');
427
- console.log(`facetLoadStrategy is ${this.host.facetLoadStrategy}`);
428
- console.log(`profileElement is ${this.host.profileElement}`);
429
412
  // Don't fetch facets if they are suppressed entirely or not required for the current profile page element
430
413
  if (this.host.facetLoadStrategy === 'off') return false;
431
414
  if (FACETLESS_PAGE_ELEMENTS.includes(this.host.profileElement!))
432
415
  return false;
433
416
 
434
- console.log(`facetsReadyToLoad: ${this.facetsReadyToLoad}`);
435
417
  // If facets are to be lazy-loaded, don't fetch them if they are not going to be visible anyway
436
418
  // (wait until they become visible instead)
437
419
  if (this.host.facetLoadStrategy !== 'eager' && !this.facetsReadyToLoad)
@@ -440,11 +422,8 @@ export class CollectionBrowserDataSource
440
422
  // Don't fetch facets again if they are already fetched or pending
441
423
  const facetsAlreadyFetched =
442
424
  Object.keys(this.aggregations ?? {}).length > 0;
443
- console.log(`facetsAlreadyFetched: ${facetsAlreadyFetched}`);
444
- console.log(`facetsLoading: ${this.facetsLoading}`);
445
425
  if (this.facetsLoading || facetsAlreadyFetched) return false;
446
426
 
447
- console.log('canFetchFacets = true');
448
427
  return true;
449
428
  }
450
429
 
@@ -570,8 +549,6 @@ export class CollectionBrowserDataSource
570
549
  * @inheritdoc
571
550
  */
572
551
  get canPerformSearch(): boolean {
573
- console.log('in canPerformSearch');
574
- console.log(`has search service: ${!!this.host.searchService}`);
575
552
  if (!this.host.searchService) return false;
576
553
 
577
554
  const trimmedQuery = this.host.baseQuery?.trim();
@@ -580,12 +557,6 @@ export class CollectionBrowserDataSource
580
557
  const isProfileSearch = !!this.host.withinProfile;
581
558
  const hasProfileElement = !!this.host.profileElement;
582
559
  const isMetadataSearch = this.host.searchType === SearchType.METADATA;
583
- console.log(`hasNonEmptyQuery: ${hasNonEmptyQuery}
584
- isCollectionSearch: ${isCollectionSearch}
585
- isProfileSearch: ${isProfileSearch}
586
- isMetadataSearch: ${isMetadataSearch}
587
- hasProfileElement: ${hasProfileElement}`
588
- );
589
560
 
590
561
  // Metadata searches within a collection/profile are allowed to have no query.
591
562
  // Otherwise, a non-empty query must be set.
@@ -601,7 +572,6 @@ export class CollectionBrowserDataSource
601
572
  * current query is loading
602
573
  */
603
574
  private setSearchResultsLoading(loading: boolean): void {
604
- console.log(`setSearchResultsLoading: ${loading} (active on host: ${this.activeOnHost})`);
605
575
  this.searchResultsLoading = loading;
606
576
  if (this.activeOnHost) {
607
577
  this.host.setSearchResultsLoading(loading);
@@ -612,7 +582,6 @@ export class CollectionBrowserDataSource
612
582
  * Sets the state for whether the facets for a query is loading
613
583
  */
614
584
  private setFacetsLoading(loading: boolean): void {
615
- console.log(`setFacetsLoading: ${loading} (active on host: ${this.activeOnHost})`);
616
585
  this.facetsLoading = loading;
617
586
  if (this.activeOnHost) {
618
587
  this.host.setFacetsLoading(loading);
@@ -934,14 +903,10 @@ export class CollectionBrowserDataSource
934
903
  * the current search state.
935
904
  */
936
905
  private async fetchFacets(): Promise<void> {
937
- console.log('in fetchFacets');
938
- console.log(`can perform search? ${this.canPerformSearch}`);
939
906
  const trimmedQuery = this.host.baseQuery?.trim();
940
907
  if (!this.canPerformSearch) return;
941
908
 
942
909
  const { facetFetchQueryKey } = this;
943
- console.log(`facetFetchQueryKey: ${facetFetchQueryKey}`);
944
- console.log(`fetch in progress? ${this.fetchesInProgress.has(facetFetchQueryKey)}`);
945
910
  if (this.fetchesInProgress.has(facetFetchQueryKey)) return;
946
911
  this.fetchesInProgress.add(facetFetchQueryKey);
947
912
 
@@ -963,7 +928,6 @@ export class CollectionBrowserDataSource
963
928
  'aggregations'
964
929
  );
965
930
 
966
- console.log('sending facet request');
967
931
  const searchResponse = await this.host.searchService?.search(
968
932
  params,
969
933
  this.host.searchType
@@ -17,6 +17,11 @@ export class ManageBar extends LitElement {
17
17
  */
18
18
  @property({ type: String }) label = msg('Select items to remove');
19
19
 
20
+ /**
21
+ * Specifies the context in which the collection browser is being used
22
+ */
23
+ @property({ type: String }) pageContext?: string;
24
+
20
25
  /**
21
26
  * Whether to show the "Select All" button (default false)
22
27
  */
@@ -47,11 +52,22 @@ export class ManageBar extends LitElement {
47
52
  >
48
53
  ${msg('Remove selected items')}
49
54
  </button>
55
+ ${this.pageContext === 'search'
56
+ ? html`
57
+ <button
58
+ class="ia-button warning"
59
+ ?disabled=${!this.removeAllowed}
60
+ @click=${this.itemsManagerClicked}
61
+ >
62
+ ${msg('Item Manager the items')}
63
+ </button>
64
+ `
65
+ : ''}
50
66
  <div class="selection-buttons">
51
67
  ${when(
52
68
  this.showSelectAll,
53
69
  () => html` <button
54
- class="link-styled select-all-btn"
70
+ class="ia-button link select-all-btn"
55
71
  @click=${this.selectAllClicked}
56
72
  >
57
73
  ${msg('Select all')}
@@ -60,7 +76,7 @@ export class ManageBar extends LitElement {
60
76
  ${when(
61
77
  this.showUnselectAll,
62
78
  () => html` <button
63
- class="link-styled unselect-all-btn"
79
+ class="ia-button link unselect-all-btn"
64
80
  @click=${this.unselectAllClicked}
65
81
  >
66
82
  ${msg('Unselect all')}
@@ -80,6 +96,10 @@ export class ManageBar extends LitElement {
80
96
  this.dispatchEvent(new CustomEvent('removeItems'));
81
97
  }
82
98
 
99
+ private itemsManagerClicked(): void {
100
+ this.dispatchEvent(new CustomEvent('itemsManager'));
101
+ }
102
+
83
103
  private selectAllClicked(): void {
84
104
  this.dispatchEvent(new CustomEvent('selectAll'));
85
105
  }
@@ -108,33 +128,20 @@ export class ManageBar extends LitElement {
108
128
 
109
129
  .manage-buttons {
110
130
  display: flex;
131
+ flex-wrap: wrap;
111
132
  align-items: center;
112
133
  column-gap: 5px;
113
134
  }
114
135
 
136
+ .selection-buttons {
137
+ display: inherit;
138
+ }
139
+
115
140
  .ia-button,
116
141
  button {
117
142
  padding: 6px 12px;
118
143
  font-size: 1.4rem;
119
- }
120
-
121
- .ia-button.danger:disabled {
122
- opacity: 0.5;
123
- }
124
-
125
- button.link-styled {
126
- margin: 0;
127
- padding: 6px;
128
- border: 0;
129
- appearance: none;
130
- background: none;
131
- color: var(--ia-theme-link-color, #4b64ff);
132
- font: inherit;
133
- text-decoration: none;
134
- cursor: pointer;
135
- }
136
- button.link-styled:hover {
137
- text-decoration: underline;
144
+ margin: 3px 0;
138
145
  }
139
146
  `;
140
147
  }
package/src/models.ts CHANGED
@@ -236,9 +236,9 @@ export type TileDisplayMode =
236
236
  /**
237
237
  * This is mainly used to set the cookies for the collection display mode.
238
238
  *
239
- * It allows the user to set different modes for different contexts (collection page, search page, etc).
239
+ * It allows the user to set different modes for different contexts (collection page, search page, profile page etc).
240
240
  */
241
- export type CollectionBrowserContext = 'collection' | 'search';
241
+ export type CollectionBrowserContext = 'collection' | 'search' | 'profile';
242
242
 
243
243
  /**
244
244
  * The sort fields shown in the sort filter bar
@@ -16,8 +16,9 @@ const darkButtonFillColor = css`var(--secondaryCTAFill, #333)`;
16
16
  const darkButtonFillColorRGB = css`var(--secondaryCTAFillRGB, 51, 51, 51)`; // RBG format of --secondaryCTAFill
17
17
  const darkButtonBorderColor = css`var(--primaryCTABorder, #979797)`;
18
18
 
19
- const warningButtonBGColor = css`#ee8950`;
20
- const warningButtonBorderColor = css`#ec7939`;
19
+ const warningButtonFillColor = css`var(---primaryWarningFill, #ee8950)`;
20
+ const warningButtonFillColorRGB = css`var(--primaryWarningFillRGB, 238, 137, 80)`; // RBG format of --primaryWarningFill
21
+ const warningButtonBorderColor = css`var(--primaryWarningBorder, #ec7939)`;
21
22
 
22
23
  export default css`
23
24
  .ia-button {
@@ -58,9 +59,12 @@ export default css`
58
59
  .ia-button.transparent {
59
60
  background-color: transparent;
60
61
  }
61
- .ia-button.warning {
62
- background-color: ${warningButtonBGColor}
63
- border-color: ${warningButtonBorderColor};
62
+
63
+ .ia-button.primary:disabled,
64
+ .ia-button.danger:disabled,
65
+ .ia-button.warning:disabled,
66
+ .ia-button.dark:disabled {
67
+ opacity: 0.5;
64
68
  }
65
69
 
66
70
  .ia-button.primary {
@@ -91,6 +95,20 @@ export default css`
91
95
  background-color: rgba(${dangerButtonFillColorRGB}, 0.7);
92
96
  }
93
97
 
98
+ .ia-button.warning {
99
+ background-color: ${warningButtonFillColor};
100
+ border-color: ${warningButtonBorderColor};
101
+ }
102
+ .ia-button.warning:hover {
103
+ background-color: rgba(${warningButtonFillColorRGB}, 0.9);
104
+ }
105
+ .ia-button.warning:focus-visible {
106
+ background-color: rgba(${warningButtonFillColorRGB}, 0.8);
107
+ }
108
+ .ia-button.warning:active {
109
+ background-color: rgba(${warningButtonFillColorRGB}, 0.7);
110
+ }
111
+
94
112
  .ia-button.dark {
95
113
  background-color: ${darkButtonFillColor};
96
114
  border-color: ${darkButtonBorderColor};
@@ -104,4 +122,18 @@ export default css`
104
122
  .ia-button.dark:active {
105
123
  background-color: rgba(${darkButtonFillColorRGB}, 0.7);
106
124
  }
125
+
126
+ .ia-button.link {
127
+ margin: 0;
128
+ padding: 6px;
129
+ border: 0;
130
+ appearance: none;
131
+ background: none;
132
+ color: var(--ia-theme-link-color, #4b64ff);
133
+ text-decoration: none;
134
+ cursor: pointer;
135
+ }
136
+ .ia-button.link:hover {
137
+ text-decoration: underline;
138
+ }
107
139
  `;
@@ -1010,11 +1010,11 @@ describe('Collection Browser', () => {
1010
1010
  const el = await fixture<CollectionBrowser>(
1011
1011
  html`<collection-browser
1012
1012
  .searchService=${searchService}
1013
+ @searchResultsLoadingChanged=${spy}
1013
1014
  ></collection-browser>`
1014
1015
  );
1015
1016
 
1016
1017
  el.baseQuery = 'collection:foo';
1017
- el.addEventListener('searchResultsLoadingChanged', spy);
1018
1018
  await el.updateComplete;
1019
1019
  await el.initialSearchComplete;
1020
1020
 
@@ -31,6 +31,18 @@ describe('Manage bar', () => {
31
31
  expect(el.shadowRoot?.querySelector('.unselect-all-btn')).not.to.exist;
32
32
  });
33
33
 
34
+ it('does not render item manager button except /search/ page', async () => {
35
+ const el = await fixture<ManageBar>(html`<manage-bar></manage-bar>`);
36
+ expect(el.shadowRoot?.querySelector('.ia-button.warning')).not.to.exist;
37
+ });
38
+
39
+ it('render item manager button for /search/ page', async () => {
40
+ const el = await fixture<ManageBar>(
41
+ html`<manage-bar .pageContext=${'search'}></manage-bar>`
42
+ );
43
+ expect(el.shadowRoot?.querySelector('.ia-button.warning')).to.exist;
44
+ });
45
+
34
46
  it('includes Select All button when requested', async () => {
35
47
  const el = await fixture<ManageBar>(
36
48
  html`<manage-bar showSelectAll></manage-bar>`
@@ -1,30 +1,30 @@
1
- // import { hmrPlugin, presets } from '@open-wc/dev-server-hmr';
2
-
3
- /** Use Hot Module replacement by adding --hmr to the start command */
4
- const hmr = process.argv.includes('--hmr');
5
-
6
- export default /** @type {import('@web/dev-server').DevServerConfig} */ ({
7
- nodeResolve: true,
8
- open: '/',
9
- watch: !hmr,
10
-
11
- /** Compile JS for older browsers. Requires @web/dev-server-esbuild plugin */
12
- // esbuildTarget: 'auto'
13
-
14
- /** Set appIndex to enable SPA routing */
15
- // appIndex: 'demo/index.html',
16
-
17
- /** Confgure bare import resolve plugin */
18
- // nodeResolve: {
19
- // exportConditions: ['browser', 'development']
20
- // },
21
-
22
- plugins: [
23
- /** Use Hot Module Replacement by uncommenting. Requires @open-wc/dev-server-hmr plugin */
24
- // hmr && hmrPlugin({ exclude: ['**/*/node_modules/**/*'], presets: [presets.litElement] }),
25
- ],
26
-
27
- http2: true,
28
- sslCert: './local.archive.org.cert',
29
- sslKey: './local.archive.org.key',
30
- });
1
+ // import { hmrPlugin, presets } from '@open-wc/dev-server-hmr';
2
+
3
+ /** Use Hot Module replacement by adding --hmr to the start command */
4
+ const hmr = process.argv.includes('--hmr');
5
+
6
+ export default /** @type {import('@web/dev-server').DevServerConfig} */ ({
7
+ nodeResolve: true,
8
+ open: '/',
9
+ watch: !hmr,
10
+
11
+ /** Compile JS for older browsers. Requires @web/dev-server-esbuild plugin */
12
+ // esbuildTarget: 'auto'
13
+
14
+ /** Set appIndex to enable SPA routing */
15
+ // appIndex: 'demo/index.html',
16
+
17
+ /** Confgure bare import resolve plugin */
18
+ // nodeResolve: {
19
+ // exportConditions: ['browser', 'development']
20
+ // },
21
+
22
+ plugins: [
23
+ /** Use Hot Module Replacement by uncommenting. Requires @open-wc/dev-server-hmr plugin */
24
+ // hmr && hmrPlugin({ exclude: ['**/*/node_modules/**/*'], presets: [presets.litElement] }),
25
+ ],
26
+
27
+ http2: true,
28
+ sslCert: './local.archive.org.cert',
29
+ sslKey: './local.archive.org.key',
30
+ });
@@ -1,41 +1,41 @@
1
- // import { playwrightLauncher } from '@web/test-runner-playwright';
2
-
3
- const filteredLogs = ['Running in dev mode', 'lit-html is in dev mode'];
4
-
5
- export default /** @type {import("@web/test-runner").TestRunnerConfig} */ ({
6
- /** Test files to run */
7
- files: 'dist/test/**/*.test.js',
8
-
9
- /** Resolve bare module imports */
10
- nodeResolve: {
11
- exportConditions: ['browser', 'development'],
12
- },
13
-
14
- /** Filter out lit dev mode logs */
15
- filterBrowserLogs(log) {
16
- for (const arg of log.args) {
17
- if (typeof arg === 'string' && filteredLogs.some(l => arg.includes(l))) {
18
- return false;
19
- }
20
- }
21
- return true;
22
- },
23
-
24
- /** Compile JS for older browsers. Requires @web/dev-server-esbuild plugin */
25
- // esbuildTarget: 'auto',
26
-
27
- /** Amount of browsers to run concurrently */
28
- // concurrentBrowsers: 2,
29
-
30
- /** Amount of test files per browser to test concurrently */
31
- // concurrency: 1,
32
-
33
- /** Browsers to run tests on */
34
- // browsers: [
35
- // playwrightLauncher({ product: 'chromium' }),
36
- // playwrightLauncher({ product: 'firefox' }),
37
- // playwrightLauncher({ product: 'webkit' }),
38
- // ],
39
-
40
- // See documentation for all available options
41
- });
1
+ // import { playwrightLauncher } from '@web/test-runner-playwright';
2
+
3
+ const filteredLogs = ['Running in dev mode', 'lit-html is in dev mode'];
4
+
5
+ export default /** @type {import("@web/test-runner").TestRunnerConfig} */ ({
6
+ /** Test files to run */
7
+ files: 'dist/test/**/*.test.js',
8
+
9
+ /** Resolve bare module imports */
10
+ nodeResolve: {
11
+ exportConditions: ['browser', 'development'],
12
+ },
13
+
14
+ /** Filter out lit dev mode logs */
15
+ filterBrowserLogs(log) {
16
+ for (const arg of log.args) {
17
+ if (typeof arg === 'string' && filteredLogs.some(l => arg.includes(l))) {
18
+ return false;
19
+ }
20
+ }
21
+ return true;
22
+ },
23
+
24
+ /** Compile JS for older browsers. Requires @web/dev-server-esbuild plugin */
25
+ // esbuildTarget: 'auto',
26
+
27
+ /** Amount of browsers to run concurrently */
28
+ // concurrentBrowsers: 2,
29
+
30
+ /** Amount of test files per browser to test concurrently */
31
+ // concurrency: 1,
32
+
33
+ /** Browsers to run tests on */
34
+ // browsers: [
35
+ // playwrightLauncher({ product: 'chromium' }),
36
+ // playwrightLauncher({ product: 'firefox' }),
37
+ // playwrightLauncher({ product: 'webkit' }),
38
+ // ],
39
+
40
+ // See documentation for all available options
41
+ });