@internetarchive/collection-browser 2.7.5-alpha.4 → 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 -1013
  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 +8 -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();
@@ -382,28 +369,26 @@ export class CollectionBrowserDataSource
382
369
  * @inheritdoc
383
370
  */
384
371
  async handleQueryChange(): Promise<void> {
385
- console.log('handling query change');
386
- console.log(`suppressFetches: ${this.suppressFetches}`);
387
372
  // Don't react to the change if fetches are suppressed for this data source
388
373
  if (this.suppressFetches) return;
389
374
 
390
375
  this.reset();
391
376
 
392
377
  // Reset the `initialSearchComplete` promise with a new value for the imminent search
378
+ let initialSearchCompleteResolver: (value: boolean) => void;
393
379
  this._initialSearchCompletePromise = new Promise(res => {
394
- this._initialSearchCompleteResolver = res;
380
+ initialSearchCompleteResolver = res;
395
381
  });
396
382
 
397
383
  // Fire the initial page & facet requests
398
384
  this.queryInitialized = true;
399
- console.log('firing requests...');
400
385
  await Promise.all([
401
386
  this.doInitialPageFetch(),
402
387
  this.canFetchFacets ? this.fetchFacets() : null,
403
388
  ]);
404
389
 
405
390
  // Resolve the `initialSearchComplete` promise for this search
406
- this._initialSearchCompleteResolver(true);
391
+ initialSearchCompleteResolver!(true);
407
392
  }
408
393
 
409
394
  /**
@@ -424,15 +409,11 @@ export class CollectionBrowserDataSource
424
409
  * (i.e., they aren't suppressed or already loading, etc.)
425
410
  */
426
411
  private get canFetchFacets(): boolean {
427
- console.log('in canFetchFacets');
428
- console.log(`facetLoadStrategy is ${this.host.facetLoadStrategy}`);
429
- console.log(`profileElement is ${this.host.profileElement}`);
430
412
  // Don't fetch facets if they are suppressed entirely or not required for the current profile page element
431
413
  if (this.host.facetLoadStrategy === 'off') return false;
432
414
  if (FACETLESS_PAGE_ELEMENTS.includes(this.host.profileElement!))
433
415
  return false;
434
416
 
435
- console.log(`facetsReadyToLoad: ${this.facetsReadyToLoad}`);
436
417
  // If facets are to be lazy-loaded, don't fetch them if they are not going to be visible anyway
437
418
  // (wait until they become visible instead)
438
419
  if (this.host.facetLoadStrategy !== 'eager' && !this.facetsReadyToLoad)
@@ -441,11 +422,8 @@ export class CollectionBrowserDataSource
441
422
  // Don't fetch facets again if they are already fetched or pending
442
423
  const facetsAlreadyFetched =
443
424
  Object.keys(this.aggregations ?? {}).length > 0;
444
- console.log(`facetsAlreadyFetched: ${facetsAlreadyFetched}`);
445
- console.log(`facetsLoading: ${this.facetsLoading}`);
446
425
  if (this.facetsLoading || facetsAlreadyFetched) return false;
447
426
 
448
- console.log('canFetchFacets = true');
449
427
  return true;
450
428
  }
451
429
 
@@ -571,8 +549,6 @@ export class CollectionBrowserDataSource
571
549
  * @inheritdoc
572
550
  */
573
551
  get canPerformSearch(): boolean {
574
- console.log('in canPerformSearch');
575
- console.log(`has search service: ${!!this.host.searchService}`);
576
552
  if (!this.host.searchService) return false;
577
553
 
578
554
  const trimmedQuery = this.host.baseQuery?.trim();
@@ -581,12 +557,6 @@ export class CollectionBrowserDataSource
581
557
  const isProfileSearch = !!this.host.withinProfile;
582
558
  const hasProfileElement = !!this.host.profileElement;
583
559
  const isMetadataSearch = this.host.searchType === SearchType.METADATA;
584
- console.log(`hasNonEmptyQuery: ${hasNonEmptyQuery}
585
- isCollectionSearch: ${isCollectionSearch}
586
- isProfileSearch: ${isProfileSearch}
587
- isMetadataSearch: ${isMetadataSearch}
588
- hasProfileElement: ${hasProfileElement}`
589
- );
590
560
 
591
561
  // Metadata searches within a collection/profile are allowed to have no query.
592
562
  // Otherwise, a non-empty query must be set.
@@ -602,7 +572,6 @@ export class CollectionBrowserDataSource
602
572
  * current query is loading
603
573
  */
604
574
  private setSearchResultsLoading(loading: boolean): void {
605
- console.log(`setSearchResultsLoading: ${loading} (active on host: ${this.activeOnHost})`);
606
575
  this.searchResultsLoading = loading;
607
576
  if (this.activeOnHost) {
608
577
  this.host.setSearchResultsLoading(loading);
@@ -613,7 +582,6 @@ export class CollectionBrowserDataSource
613
582
  * Sets the state for whether the facets for a query is loading
614
583
  */
615
584
  private setFacetsLoading(loading: boolean): void {
616
- console.log(`setFacetsLoading: ${loading} (active on host: ${this.activeOnHost})`);
617
585
  this.facetsLoading = loading;
618
586
  if (this.activeOnHost) {
619
587
  this.host.setFacetsLoading(loading);
@@ -935,14 +903,10 @@ export class CollectionBrowserDataSource
935
903
  * the current search state.
936
904
  */
937
905
  private async fetchFacets(): Promise<void> {
938
- console.log('in fetchFacets');
939
- console.log(`can perform search? ${this.canPerformSearch}`);
940
906
  const trimmedQuery = this.host.baseQuery?.trim();
941
907
  if (!this.canPerformSearch) return;
942
908
 
943
909
  const { facetFetchQueryKey } = this;
944
- console.log(`facetFetchQueryKey: ${facetFetchQueryKey}`);
945
- console.log(`fetch in progress? ${this.fetchesInProgress.has(facetFetchQueryKey)}`);
946
910
  if (this.fetchesInProgress.has(facetFetchQueryKey)) return;
947
911
  this.fetchesInProgress.add(facetFetchQueryKey);
948
912
 
@@ -964,7 +928,6 @@ export class CollectionBrowserDataSource
964
928
  'aggregations'
965
929
  );
966
930
 
967
- console.log('sending facet request');
968
931
  const searchResponse = await this.host.searchService?.search(
969
932
  params,
970
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
+ });