@internetarchive/collection-browser 3.3.1-alpha3 → 3.3.2

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 (492) hide show
  1. package/package.json +1 -1
  2. package/dist/index.d.ts +0 -16
  3. package/dist/index.js.map +0 -1
  4. package/dist/src/app-root.d.ts +0 -105
  5. package/dist/src/app-root.js +0 -1076
  6. package/dist/src/app-root.js.map +0 -1
  7. package/dist/src/assets/img/icons/arrow-left.d.ts +0 -2
  8. package/dist/src/assets/img/icons/arrow-left.js +0 -10
  9. package/dist/src/assets/img/icons/arrow-left.js.map +0 -1
  10. package/dist/src/assets/img/icons/arrow-right.d.ts +0 -2
  11. package/dist/src/assets/img/icons/arrow-right.js +0 -10
  12. package/dist/src/assets/img/icons/arrow-right.js.map +0 -1
  13. package/dist/src/assets/img/icons/chevron.d.ts +0 -2
  14. package/dist/src/assets/img/icons/chevron.js +0 -4
  15. package/dist/src/assets/img/icons/chevron.js.map +0 -1
  16. package/dist/src/assets/img/icons/close-circle-dark.d.ts +0 -2
  17. package/dist/src/assets/img/icons/close-circle-dark.js +0 -5
  18. package/dist/src/assets/img/icons/close-circle-dark.js.map +0 -1
  19. package/dist/src/assets/img/icons/contract.d.ts +0 -2
  20. package/dist/src/assets/img/icons/contract.js +0 -9
  21. package/dist/src/assets/img/icons/contract.js.map +0 -1
  22. package/dist/src/assets/img/icons/empty-query.d.ts +0 -2
  23. package/dist/src/assets/img/icons/empty-query.js +0 -5
  24. package/dist/src/assets/img/icons/empty-query.js.map +0 -1
  25. package/dist/src/assets/img/icons/expand.d.ts +0 -2
  26. package/dist/src/assets/img/icons/expand.js +0 -9
  27. package/dist/src/assets/img/icons/expand.js.map +0 -1
  28. package/dist/src/assets/img/icons/eye-closed.d.ts +0 -2
  29. package/dist/src/assets/img/icons/eye-closed.js +0 -5
  30. package/dist/src/assets/img/icons/eye-closed.js.map +0 -1
  31. package/dist/src/assets/img/icons/eye.d.ts +0 -2
  32. package/dist/src/assets/img/icons/eye.js +0 -5
  33. package/dist/src/assets/img/icons/eye.js.map +0 -1
  34. package/dist/src/assets/img/icons/favorite-filled.d.ts +0 -1
  35. package/dist/src/assets/img/icons/favorite-filled.js +0 -10
  36. package/dist/src/assets/img/icons/favorite-filled.js.map +0 -1
  37. package/dist/src/assets/img/icons/favorite-unfilled.d.ts +0 -1
  38. package/dist/src/assets/img/icons/favorite-unfilled.js +0 -9
  39. package/dist/src/assets/img/icons/favorite-unfilled.js.map +0 -1
  40. package/dist/src/assets/img/icons/filter.d.ts +0 -2
  41. package/dist/src/assets/img/icons/filter.js +0 -10
  42. package/dist/src/assets/img/icons/filter.js.map +0 -1
  43. package/dist/src/assets/img/icons/login-required.d.ts +0 -1
  44. package/dist/src/assets/img/icons/login-required.js +0 -18
  45. package/dist/src/assets/img/icons/login-required.js.map +0 -1
  46. package/dist/src/assets/img/icons/mediatype/account.d.ts +0 -1
  47. package/dist/src/assets/img/icons/mediatype/account.js +0 -14
  48. package/dist/src/assets/img/icons/mediatype/account.js.map +0 -1
  49. package/dist/src/assets/img/icons/mediatype/audio.d.ts +0 -1
  50. package/dist/src/assets/img/icons/mediatype/audio.js +0 -14
  51. package/dist/src/assets/img/icons/mediatype/audio.js.map +0 -1
  52. package/dist/src/assets/img/icons/mediatype/collection.d.ts +0 -1
  53. package/dist/src/assets/img/icons/mediatype/collection.js +0 -12
  54. package/dist/src/assets/img/icons/mediatype/collection.js.map +0 -1
  55. package/dist/src/assets/img/icons/mediatype/data.d.ts +0 -1
  56. package/dist/src/assets/img/icons/mediatype/data.js +0 -15
  57. package/dist/src/assets/img/icons/mediatype/data.js.map +0 -1
  58. package/dist/src/assets/img/icons/mediatype/etree.d.ts +0 -1
  59. package/dist/src/assets/img/icons/mediatype/etree.js +0 -14
  60. package/dist/src/assets/img/icons/mediatype/etree.js.map +0 -1
  61. package/dist/src/assets/img/icons/mediatype/film.d.ts +0 -1
  62. package/dist/src/assets/img/icons/mediatype/film.js +0 -14
  63. package/dist/src/assets/img/icons/mediatype/film.js.map +0 -1
  64. package/dist/src/assets/img/icons/mediatype/images.d.ts +0 -1
  65. package/dist/src/assets/img/icons/mediatype/images.js +0 -13
  66. package/dist/src/assets/img/icons/mediatype/images.js.map +0 -1
  67. package/dist/src/assets/img/icons/mediatype/radio.d.ts +0 -1
  68. package/dist/src/assets/img/icons/mediatype/radio.js +0 -15
  69. package/dist/src/assets/img/icons/mediatype/radio.js.map +0 -1
  70. package/dist/src/assets/img/icons/mediatype/search.d.ts +0 -1
  71. package/dist/src/assets/img/icons/mediatype/search.js +0 -14
  72. package/dist/src/assets/img/icons/mediatype/search.js.map +0 -1
  73. package/dist/src/assets/img/icons/mediatype/software.d.ts +0 -1
  74. package/dist/src/assets/img/icons/mediatype/software.js +0 -13
  75. package/dist/src/assets/img/icons/mediatype/software.js.map +0 -1
  76. package/dist/src/assets/img/icons/mediatype/texts.d.ts +0 -1
  77. package/dist/src/assets/img/icons/mediatype/texts.js +0 -13
  78. package/dist/src/assets/img/icons/mediatype/texts.js.map +0 -1
  79. package/dist/src/assets/img/icons/mediatype/tv-commercial.d.ts +0 -1
  80. package/dist/src/assets/img/icons/mediatype/tv-commercial.js +0 -12
  81. package/dist/src/assets/img/icons/mediatype/tv-commercial.js.map +0 -1
  82. package/dist/src/assets/img/icons/mediatype/tv-fact-check.d.ts +0 -1
  83. package/dist/src/assets/img/icons/mediatype/tv-fact-check.js +0 -12
  84. package/dist/src/assets/img/icons/mediatype/tv-fact-check.js.map +0 -1
  85. package/dist/src/assets/img/icons/mediatype/tv-quote.d.ts +0 -1
  86. package/dist/src/assets/img/icons/mediatype/tv-quote.js +0 -12
  87. package/dist/src/assets/img/icons/mediatype/tv-quote.js.map +0 -1
  88. package/dist/src/assets/img/icons/mediatype/tv.d.ts +0 -1
  89. package/dist/src/assets/img/icons/mediatype/tv.js +0 -14
  90. package/dist/src/assets/img/icons/mediatype/tv.js.map +0 -1
  91. package/dist/src/assets/img/icons/mediatype/video.d.ts +0 -1
  92. package/dist/src/assets/img/icons/mediatype/video.js +0 -14
  93. package/dist/src/assets/img/icons/mediatype/video.js.map +0 -1
  94. package/dist/src/assets/img/icons/mediatype/web.d.ts +0 -1
  95. package/dist/src/assets/img/icons/mediatype/web.js +0 -13
  96. package/dist/src/assets/img/icons/mediatype/web.js.map +0 -1
  97. package/dist/src/assets/img/icons/null-result.d.ts +0 -2
  98. package/dist/src/assets/img/icons/null-result.js +0 -5
  99. package/dist/src/assets/img/icons/null-result.js.map +0 -1
  100. package/dist/src/assets/img/icons/quote.d.ts +0 -1
  101. package/dist/src/assets/img/icons/quote.js +0 -7
  102. package/dist/src/assets/img/icons/quote.js.map +0 -1
  103. package/dist/src/assets/img/icons/restricted.d.ts +0 -1
  104. package/dist/src/assets/img/icons/restricted.js +0 -13
  105. package/dist/src/assets/img/icons/restricted.js.map +0 -1
  106. package/dist/src/assets/img/icons/reviews.d.ts +0 -1
  107. package/dist/src/assets/img/icons/reviews.js +0 -11
  108. package/dist/src/assets/img/icons/reviews.js.map +0 -1
  109. package/dist/src/assets/img/icons/upload.d.ts +0 -1
  110. package/dist/src/assets/img/icons/upload.js +0 -12
  111. package/dist/src/assets/img/icons/upload.js.map +0 -1
  112. package/dist/src/assets/img/icons/views.d.ts +0 -1
  113. package/dist/src/assets/img/icons/views.js +0 -11
  114. package/dist/src/assets/img/icons/views.js.map +0 -1
  115. package/dist/src/circular-activity-indicator.d.ts +0 -5
  116. package/dist/src/circular-activity-indicator.js +0 -66
  117. package/dist/src/circular-activity-indicator.js.map +0 -1
  118. package/dist/src/collection-browser.d.ts +0 -684
  119. package/dist/src/collection-browser.js +0 -2567
  120. package/dist/src/collection-browser.js.map +0 -1
  121. package/dist/src/collection-facets/facet-row.d.ts +0 -30
  122. package/dist/src/collection-facets/facet-row.js +0 -265
  123. package/dist/src/collection-facets/facet-row.js.map +0 -1
  124. package/dist/src/collection-facets/facet-tombstone-row.d.ts +0 -5
  125. package/dist/src/collection-facets/facet-tombstone-row.js +0 -43
  126. package/dist/src/collection-facets/facet-tombstone-row.js.map +0 -1
  127. package/dist/src/collection-facets/facets-template.d.ts +0 -13
  128. package/dist/src/collection-facets/facets-template.js +0 -68
  129. package/dist/src/collection-facets/facets-template.js.map +0 -1
  130. package/dist/src/collection-facets/models.d.ts +0 -9
  131. package/dist/src/collection-facets/models.js +0 -10
  132. package/dist/src/collection-facets/models.js.map +0 -1
  133. package/dist/src/collection-facets/more-facets-content.d.ts +0 -109
  134. package/dist/src/collection-facets/more-facets-content.js +0 -547
  135. package/dist/src/collection-facets/more-facets-content.js.map +0 -1
  136. package/dist/src/collection-facets/more-facets-pagination.d.ts +0 -36
  137. package/dist/src/collection-facets/more-facets-pagination.js +0 -264
  138. package/dist/src/collection-facets/more-facets-pagination.js.map +0 -1
  139. package/dist/src/collection-facets/smart-facets/dedupe.d.ts +0 -10
  140. package/dist/src/collection-facets/smart-facets/dedupe.js +0 -35
  141. package/dist/src/collection-facets/smart-facets/dedupe.js.map +0 -1
  142. package/dist/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.d.ts +0 -5
  143. package/dist/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.js +0 -24
  144. package/dist/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.js.map +0 -1
  145. package/dist/src/collection-facets/smart-facets/heuristics/index.d.ts +0 -3
  146. package/dist/src/collection-facets/smart-facets/heuristics/index.js +0 -4
  147. package/dist/src/collection-facets/smart-facets/heuristics/index.js.map +0 -1
  148. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.d.ts +0 -4
  149. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.js +0 -14
  150. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.js.map +0 -1
  151. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.d.ts +0 -6
  152. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.js +0 -68
  153. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.js.map +0 -1
  154. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.d.ts +0 -9
  155. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.js +0 -69
  156. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.js.map +0 -1
  157. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.d.ts +0 -21
  158. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js +0 -76
  159. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js.map +0 -1
  160. package/dist/src/collection-facets/smart-facets/models.d.ts +0 -30
  161. package/dist/src/collection-facets/smart-facets/models.js +0 -2
  162. package/dist/src/collection-facets/smart-facets/models.js.map +0 -1
  163. package/dist/src/collection-facets/smart-facets/smart-facet-bar.d.ts +0 -54
  164. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +0 -383
  165. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js.map +0 -1
  166. package/dist/src/collection-facets/smart-facets/smart-facet-button.d.ts +0 -11
  167. package/dist/src/collection-facets/smart-facets/smart-facet-button.js +0 -133
  168. package/dist/src/collection-facets/smart-facets/smart-facet-button.js.map +0 -1
  169. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.d.ts +0 -28
  170. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js +0 -172
  171. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js.map +0 -1
  172. package/dist/src/collection-facets/smart-facets/smart-facet-equals.d.ts +0 -2
  173. package/dist/src/collection-facets/smart-facets/smart-facet-equals.js +0 -13
  174. package/dist/src/collection-facets/smart-facets/smart-facet-equals.js.map +0 -1
  175. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.d.ts +0 -5
  176. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js +0 -18
  177. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js.map +0 -1
  178. package/dist/src/collection-facets/toggle-switch.d.ts +0 -41
  179. package/dist/src/collection-facets/toggle-switch.js +0 -174
  180. package/dist/src/collection-facets/toggle-switch.js.map +0 -1
  181. package/dist/src/collection-facets.d.ts +0 -113
  182. package/dist/src/collection-facets.js +0 -873
  183. package/dist/src/collection-facets.js.map +0 -1
  184. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +0 -261
  185. package/dist/src/data-source/collection-browser-data-source-interface.js +0 -2
  186. package/dist/src/data-source/collection-browser-data-source-interface.js.map +0 -1
  187. package/dist/src/data-source/collection-browser-data-source.d.ts +0 -400
  188. package/dist/src/data-source/collection-browser-data-source.js +0 -1103
  189. package/dist/src/data-source/collection-browser-data-source.js.map +0 -1
  190. package/dist/src/data-source/collection-browser-query-state.d.ts +0 -49
  191. package/dist/src/data-source/collection-browser-query-state.js +0 -2
  192. package/dist/src/data-source/collection-browser-query-state.js.map +0 -1
  193. package/dist/src/data-source/models.d.ts +0 -32
  194. package/dist/src/data-source/models.js +0 -9
  195. package/dist/src/data-source/models.js.map +0 -1
  196. package/dist/src/empty-placeholder.d.ts +0 -23
  197. package/dist/src/empty-placeholder.js +0 -165
  198. package/dist/src/empty-placeholder.js.map +0 -1
  199. package/dist/src/expanded-date-picker.d.ts +0 -50
  200. package/dist/src/expanded-date-picker.js +0 -182
  201. package/dist/src/expanded-date-picker.js.map +0 -1
  202. package/dist/src/language-code-handler/language-code-handler.d.ts +0 -37
  203. package/dist/src/language-code-handler/language-code-handler.js +0 -27
  204. package/dist/src/language-code-handler/language-code-handler.js.map +0 -1
  205. package/dist/src/language-code-handler/language-code-mapping.d.ts +0 -1
  206. package/dist/src/language-code-handler/language-code-mapping.js +0 -563
  207. package/dist/src/language-code-handler/language-code-mapping.js.map +0 -1
  208. package/dist/src/manage/manage-bar.d.ts +0 -58
  209. package/dist/src/manage/manage-bar.js +0 -237
  210. package/dist/src/manage/manage-bar.js.map +0 -1
  211. package/dist/src/manage/remove-items-modal-content.d.ts +0 -9
  212. package/dist/src/manage/remove-items-modal-content.js +0 -104
  213. package/dist/src/manage/remove-items-modal-content.js.map +0 -1
  214. package/dist/src/mediatype/mediatype-config.d.ts +0 -11
  215. package/dist/src/mediatype/mediatype-config.js +0 -116
  216. package/dist/src/mediatype/mediatype-config.js.map +0 -1
  217. package/dist/src/models.d.ts +0 -302
  218. package/dist/src/models.js +0 -511
  219. package/dist/src/models.js.map +0 -1
  220. package/dist/src/restoration-state-handler.d.ts +0 -75
  221. package/dist/src/restoration-state-handler.js +0 -403
  222. package/dist/src/restoration-state-handler.js.map +0 -1
  223. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +0 -6
  224. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +0 -60
  225. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js.map +0 -1
  226. package/dist/src/sort-filter-bar/alpha-bar.d.ts +0 -21
  227. package/dist/src/sort-filter-bar/alpha-bar.js +0 -241
  228. package/dist/src/sort-filter-bar/alpha-bar.js.map +0 -1
  229. package/dist/src/sort-filter-bar/img/compact.d.ts +0 -1
  230. package/dist/src/sort-filter-bar/img/compact.js +0 -5
  231. package/dist/src/sort-filter-bar/img/compact.js.map +0 -1
  232. package/dist/src/sort-filter-bar/img/list.d.ts +0 -1
  233. package/dist/src/sort-filter-bar/img/list.js +0 -5
  234. package/dist/src/sort-filter-bar/img/list.js.map +0 -1
  235. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +0 -1
  236. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +0 -15
  237. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js.map +0 -1
  238. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +0 -1
  239. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +0 -17
  240. package/dist/src/sort-filter-bar/img/sort-toggle-down.js.map +0 -1
  241. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +0 -1
  242. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +0 -17
  243. package/dist/src/sort-filter-bar/img/sort-toggle-up.js.map +0 -1
  244. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +0 -1
  245. package/dist/src/sort-filter-bar/img/sort-triangle.js +0 -5
  246. package/dist/src/sort-filter-bar/img/sort-triangle.js.map +0 -1
  247. package/dist/src/sort-filter-bar/img/tile.d.ts +0 -1
  248. package/dist/src/sort-filter-bar/img/tile.js +0 -5
  249. package/dist/src/sort-filter-bar/img/tile.js.map +0 -1
  250. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +0 -278
  251. package/dist/src/sort-filter-bar/sort-filter-bar.js +0 -1161
  252. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +0 -1
  253. package/dist/src/styles/ia-button.d.ts +0 -2
  254. package/dist/src/styles/ia-button.js +0 -134
  255. package/dist/src/styles/ia-button.js.map +0 -1
  256. package/dist/src/styles/item-image-styles.d.ts +0 -8
  257. package/dist/src/styles/item-image-styles.js +0 -123
  258. package/dist/src/styles/item-image-styles.js.map +0 -1
  259. package/dist/src/styles/sr-only.d.ts +0 -1
  260. package/dist/src/styles/sr-only.js +0 -18
  261. package/dist/src/styles/sr-only.js.map +0 -1
  262. package/dist/src/tiles/base-tile-component.d.ts +0 -27
  263. package/dist/src/tiles/base-tile-component.js +0 -82
  264. package/dist/src/tiles/base-tile-component.js.map +0 -1
  265. package/dist/src/tiles/collection-browser-loading-tile.d.ts +0 -5
  266. package/dist/src/tiles/collection-browser-loading-tile.js +0 -29
  267. package/dist/src/tiles/collection-browser-loading-tile.js.map +0 -1
  268. package/dist/src/tiles/grid/account-tile.d.ts +0 -18
  269. package/dist/src/tiles/grid/account-tile.js +0 -111
  270. package/dist/src/tiles/grid/account-tile.js.map +0 -1
  271. package/dist/src/tiles/grid/collection-tile.d.ts +0 -15
  272. package/dist/src/tiles/grid/collection-tile.js +0 -160
  273. package/dist/src/tiles/grid/collection-tile.js.map +0 -1
  274. package/dist/src/tiles/grid/item-tile.d.ts +0 -41
  275. package/dist/src/tiles/grid/item-tile.js +0 -321
  276. package/dist/src/tiles/grid/item-tile.js.map +0 -1
  277. package/dist/src/tiles/grid/search-tile.d.ts +0 -10
  278. package/dist/src/tiles/grid/search-tile.js +0 -95
  279. package/dist/src/tiles/grid/search-tile.js.map +0 -1
  280. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +0 -1
  281. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +0 -128
  282. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js.map +0 -1
  283. package/dist/src/tiles/grid/tile-stats.d.ts +0 -58
  284. package/dist/src/tiles/grid/tile-stats.js +0 -204
  285. package/dist/src/tiles/grid/tile-stats.js.map +0 -1
  286. package/dist/src/tiles/hover/hover-pane-controller.d.ts +0 -220
  287. package/dist/src/tiles/hover/hover-pane-controller.js +0 -378
  288. package/dist/src/tiles/hover/hover-pane-controller.js.map +0 -1
  289. package/dist/src/tiles/hover/tile-hover-pane.d.ts +0 -19
  290. package/dist/src/tiles/hover/tile-hover-pane.js +0 -182
  291. package/dist/src/tiles/hover/tile-hover-pane.js.map +0 -1
  292. package/dist/src/tiles/image-block.d.ts +0 -19
  293. package/dist/src/tiles/image-block.js +0 -175
  294. package/dist/src/tiles/image-block.js.map +0 -1
  295. package/dist/src/tiles/item-image.d.ts +0 -40
  296. package/dist/src/tiles/item-image.js +0 -191
  297. package/dist/src/tiles/item-image.js.map +0 -1
  298. package/dist/src/tiles/list/tile-list-compact-header.d.ts +0 -6
  299. package/dist/src/tiles/list/tile-list-compact-header.js +0 -85
  300. package/dist/src/tiles/list/tile-list-compact-header.js.map +0 -1
  301. package/dist/src/tiles/list/tile-list-compact.d.ts +0 -19
  302. package/dist/src/tiles/list/tile-list-compact.js +0 -223
  303. package/dist/src/tiles/list/tile-list-compact.js.map +0 -1
  304. package/dist/src/tiles/list/tile-list.d.ts +0 -54
  305. package/dist/src/tiles/list/tile-list.js +0 -621
  306. package/dist/src/tiles/list/tile-list.js.map +0 -1
  307. package/dist/src/tiles/models.d.ts +0 -1
  308. package/dist/src/tiles/models.js +0 -2
  309. package/dist/src/tiles/models.js.map +0 -1
  310. package/dist/src/tiles/overlay/icon-overlay.d.ts +0 -8
  311. package/dist/src/tiles/overlay/icon-overlay.js +0 -55
  312. package/dist/src/tiles/overlay/icon-overlay.js.map +0 -1
  313. package/dist/src/tiles/overlay/text-overlay.d.ts +0 -9
  314. package/dist/src/tiles/overlay/text-overlay.js +0 -74
  315. package/dist/src/tiles/overlay/text-overlay.js.map +0 -1
  316. package/dist/src/tiles/review-block.d.ts +0 -12
  317. package/dist/src/tiles/review-block.js +0 -134
  318. package/dist/src/tiles/review-block.js.map +0 -1
  319. package/dist/src/tiles/text-snippet-block.d.ts +0 -27
  320. package/dist/src/tiles/text-snippet-block.js +0 -132
  321. package/dist/src/tiles/text-snippet-block.js.map +0 -1
  322. package/dist/src/tiles/tile-dispatcher.d.ts +0 -68
  323. package/dist/src/tiles/tile-dispatcher.js +0 -445
  324. package/dist/src/tiles/tile-dispatcher.js.map +0 -1
  325. package/dist/src/tiles/tile-display-value-provider.d.ts +0 -47
  326. package/dist/src/tiles/tile-display-value-provider.js +0 -95
  327. package/dist/src/tiles/tile-display-value-provider.js.map +0 -1
  328. package/dist/src/tiles/tile-mediatype-icon.d.ts +0 -27
  329. package/dist/src/tiles/tile-mediatype-icon.js +0 -130
  330. package/dist/src/tiles/tile-mediatype-icon.js.map +0 -1
  331. package/dist/src/utils/analytics-events.d.ts +0 -28
  332. package/dist/src/utils/analytics-events.js +0 -31
  333. package/dist/src/utils/analytics-events.js.map +0 -1
  334. package/dist/src/utils/array-equals.d.ts +0 -4
  335. package/dist/src/utils/array-equals.js +0 -11
  336. package/dist/src/utils/array-equals.js.map +0 -1
  337. package/dist/src/utils/collapse-repeated-quotes.d.ts +0 -11
  338. package/dist/src/utils/collapse-repeated-quotes.js +0 -14
  339. package/dist/src/utils/collapse-repeated-quotes.js.map +0 -1
  340. package/dist/src/utils/facet-utils.d.ts +0 -83
  341. package/dist/src/utils/facet-utils.js +0 -152
  342. package/dist/src/utils/facet-utils.js.map +0 -1
  343. package/dist/src/utils/format-count.d.ts +0 -7
  344. package/dist/src/utils/format-count.js +0 -76
  345. package/dist/src/utils/format-count.js.map +0 -1
  346. package/dist/src/utils/format-date.d.ts +0 -16
  347. package/dist/src/utils/format-date.js +0 -33
  348. package/dist/src/utils/format-date.js.map +0 -1
  349. package/dist/src/utils/format-unit-size.d.ts +0 -2
  350. package/dist/src/utils/format-unit-size.js +0 -34
  351. package/dist/src/utils/format-unit-size.js.map +0 -1
  352. package/dist/src/utils/local-date-from-utc.d.ts +0 -9
  353. package/dist/src/utils/local-date-from-utc.js +0 -16
  354. package/dist/src/utils/local-date-from-utc.js.map +0 -1
  355. package/dist/src/utils/log.d.ts +0 -7
  356. package/dist/src/utils/log.js +0 -14
  357. package/dist/src/utils/log.js.map +0 -1
  358. package/dist/src/utils/resolve-mediatype.d.ts +0 -8
  359. package/dist/src/utils/resolve-mediatype.js +0 -24
  360. package/dist/src/utils/resolve-mediatype.js.map +0 -1
  361. package/dist/src/utils/sha1.d.ts +0 -2
  362. package/dist/src/utils/sha1.js +0 -9
  363. package/dist/src/utils/sha1.js.map +0 -1
  364. package/dist/test/collection-browser.test.d.ts +0 -1
  365. package/dist/test/collection-browser.test.js +0 -1711
  366. package/dist/test/collection-browser.test.js.map +0 -1
  367. package/dist/test/collection-facets/facet-row.test.d.ts +0 -1
  368. package/dist/test/collection-facets/facet-row.test.js +0 -274
  369. package/dist/test/collection-facets/facet-row.test.js.map +0 -1
  370. package/dist/test/collection-facets/facets-template.test.d.ts +0 -1
  371. package/dist/test/collection-facets/facets-template.test.js +0 -101
  372. package/dist/test/collection-facets/facets-template.test.js.map +0 -1
  373. package/dist/test/collection-facets/more-facets-content.test.d.ts +0 -1
  374. package/dist/test/collection-facets/more-facets-content.test.js +0 -169
  375. package/dist/test/collection-facets/more-facets-content.test.js.map +0 -1
  376. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +0 -1
  377. package/dist/test/collection-facets/more-facets-pagination.test.js +0 -132
  378. package/dist/test/collection-facets/more-facets-pagination.test.js.map +0 -1
  379. package/dist/test/collection-facets/toggle-switch.test.d.ts +0 -1
  380. package/dist/test/collection-facets/toggle-switch.test.js +0 -96
  381. package/dist/test/collection-facets/toggle-switch.test.js.map +0 -1
  382. package/dist/test/collection-facets.test.d.ts +0 -2
  383. package/dist/test/collection-facets.test.js +0 -745
  384. package/dist/test/collection-facets.test.js.map +0 -1
  385. package/dist/test/data-source/collection-browser-data-source.test.d.ts +0 -1
  386. package/dist/test/data-source/collection-browser-data-source.test.js +0 -102
  387. package/dist/test/data-source/collection-browser-data-source.test.js.map +0 -1
  388. package/dist/test/empty-placeholder.test.d.ts +0 -1
  389. package/dist/test/empty-placeholder.test.js +0 -63
  390. package/dist/test/empty-placeholder.test.js.map +0 -1
  391. package/dist/test/expanded-date-picker.test.d.ts +0 -1
  392. package/dist/test/expanded-date-picker.test.js +0 -130
  393. package/dist/test/expanded-date-picker.test.js.map +0 -1
  394. package/dist/test/icon-overlay.test.d.ts +0 -1
  395. package/dist/test/icon-overlay.test.js +0 -30
  396. package/dist/test/icon-overlay.test.js.map +0 -1
  397. package/dist/test/image-block.test.d.ts +0 -1
  398. package/dist/test/image-block.test.js +0 -218
  399. package/dist/test/image-block.test.js.map +0 -1
  400. package/dist/test/item-image.test.d.ts +0 -1
  401. package/dist/test/item-image.test.js +0 -196
  402. package/dist/test/item-image.test.js.map +0 -1
  403. package/dist/test/manage/manage-bar.test.d.ts +0 -2
  404. package/dist/test/manage/manage-bar.test.js +0 -106
  405. package/dist/test/manage/manage-bar.test.js.map +0 -1
  406. package/dist/test/manage/remove-items-modal-content.test.d.ts +0 -1
  407. package/dist/test/manage/remove-items-modal-content.test.js +0 -65
  408. package/dist/test/manage/remove-items-modal-content.test.js.map +0 -1
  409. package/dist/test/mediatype-config.test.d.ts +0 -1
  410. package/dist/test/mediatype-config.test.js +0 -11
  411. package/dist/test/mediatype-config.test.js.map +0 -1
  412. package/dist/test/mocks/mock-analytics-handler.d.ts +0 -10
  413. package/dist/test/mocks/mock-analytics-handler.js +0 -16
  414. package/dist/test/mocks/mock-analytics-handler.js.map +0 -1
  415. package/dist/test/mocks/mock-search-responses.d.ts +0 -31
  416. package/dist/test/mocks/mock-search-responses.js +0 -1241
  417. package/dist/test/mocks/mock-search-responses.js.map +0 -1
  418. package/dist/test/mocks/mock-search-service.d.ts +0 -16
  419. package/dist/test/mocks/mock-search-service.js +0 -65
  420. package/dist/test/mocks/mock-search-service.js.map +0 -1
  421. package/dist/test/restoration-state-handler.test.d.ts +0 -1
  422. package/dist/test/restoration-state-handler.test.js +0 -375
  423. package/dist/test/restoration-state-handler.test.js.map +0 -1
  424. package/dist/test/review-block.test.d.ts +0 -1
  425. package/dist/test/review-block.test.js +0 -48
  426. package/dist/test/review-block.test.js.map +0 -1
  427. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +0 -1
  428. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +0 -13
  429. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js.map +0 -1
  430. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +0 -1
  431. package/dist/test/sort-filter-bar/alpha-bar.test.js +0 -74
  432. package/dist/test/sort-filter-bar/alpha-bar.test.js.map +0 -1
  433. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +0 -1
  434. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +0 -609
  435. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +0 -1
  436. package/dist/test/text-overlay.test.d.ts +0 -1
  437. package/dist/test/text-overlay.test.js +0 -42
  438. package/dist/test/text-overlay.test.js.map +0 -1
  439. package/dist/test/text-snippet-block.test.d.ts +0 -1
  440. package/dist/test/text-snippet-block.test.js +0 -63
  441. package/dist/test/text-snippet-block.test.js.map +0 -1
  442. package/dist/test/tile-stats.test.d.ts +0 -1
  443. package/dist/test/tile-stats.test.js +0 -128
  444. package/dist/test/tile-stats.test.js.map +0 -1
  445. package/dist/test/tiles/grid/account-tile.test.d.ts +0 -1
  446. package/dist/test/tiles/grid/account-tile.test.js +0 -96
  447. package/dist/test/tiles/grid/account-tile.test.js.map +0 -1
  448. package/dist/test/tiles/grid/collection-tile.test.d.ts +0 -1
  449. package/dist/test/tiles/grid/collection-tile.test.js +0 -96
  450. package/dist/test/tiles/grid/collection-tile.test.js.map +0 -1
  451. package/dist/test/tiles/grid/item-tile.test.d.ts +0 -1
  452. package/dist/test/tiles/grid/item-tile.test.js +0 -427
  453. package/dist/test/tiles/grid/item-tile.test.js.map +0 -1
  454. package/dist/test/tiles/grid/search-tile.test.d.ts +0 -1
  455. package/dist/test/tiles/grid/search-tile.test.js +0 -66
  456. package/dist/test/tiles/grid/search-tile.test.js.map +0 -1
  457. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +0 -1
  458. package/dist/test/tiles/hover/hover-pane-controller.test.js +0 -282
  459. package/dist/test/tiles/hover/hover-pane-controller.test.js.map +0 -1
  460. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +0 -1
  461. package/dist/test/tiles/hover/tile-hover-pane.test.js +0 -57
  462. package/dist/test/tiles/hover/tile-hover-pane.test.js.map +0 -1
  463. package/dist/test/tiles/list/tile-list-compact.test.d.ts +0 -1
  464. package/dist/test/tiles/list/tile-list-compact.test.js +0 -251
  465. package/dist/test/tiles/list/tile-list-compact.test.js.map +0 -1
  466. package/dist/test/tiles/list/tile-list.test.d.ts +0 -1
  467. package/dist/test/tiles/list/tile-list.test.js +0 -469
  468. package/dist/test/tiles/list/tile-list.test.js.map +0 -1
  469. package/dist/test/tiles/tile-dispatcher.test.d.ts +0 -1
  470. package/dist/test/tiles/tile-dispatcher.test.js +0 -153
  471. package/dist/test/tiles/tile-dispatcher.test.js.map +0 -1
  472. package/dist/test/tiles/tile-display-value-provider.test.d.ts +0 -1
  473. package/dist/test/tiles/tile-display-value-provider.test.js +0 -142
  474. package/dist/test/tiles/tile-display-value-provider.test.js.map +0 -1
  475. package/dist/test/tiles/tile-mediatype-icon.test.d.ts +0 -1
  476. package/dist/test/tiles/tile-mediatype-icon.test.js +0 -145
  477. package/dist/test/tiles/tile-mediatype-icon.test.js.map +0 -1
  478. package/dist/test/utils/array-equals.test.d.ts +0 -1
  479. package/dist/test/utils/array-equals.test.js +0 -27
  480. package/dist/test/utils/array-equals.test.js.map +0 -1
  481. package/dist/test/utils/format-count.test.d.ts +0 -1
  482. package/dist/test/utils/format-count.test.js +0 -24
  483. package/dist/test/utils/format-count.test.js.map +0 -1
  484. package/dist/test/utils/format-date.test.d.ts +0 -1
  485. package/dist/test/utils/format-date.test.js +0 -61
  486. package/dist/test/utils/format-date.test.js.map +0 -1
  487. package/dist/test/utils/format-unit-size.test.d.ts +0 -1
  488. package/dist/test/utils/format-unit-size.test.js +0 -18
  489. package/dist/test/utils/format-unit-size.test.js.map +0 -1
  490. package/dist/test/utils/local-date-from-utc.test.d.ts +0 -1
  491. package/dist/test/utils/local-date-from-utc.test.js +0 -27
  492. package/dist/test/utils/local-date-from-utc.test.js.map +0 -1
@@ -1,1711 +0,0 @@
1
- import { aTimeout, expect, fixture } from '@open-wc/testing';
2
- import { html } from 'lit';
3
- import sinon from 'sinon';
4
- import { FilterConstraint, SearchType } from '@internetarchive/search-service';
5
- import '../src/collection-browser';
6
- import { getDefaultSelectedFacets, SortField, } from '../src/models';
7
- import { MockSearchService } from './mocks/mock-search-service';
8
- import { MockAnalyticsHandler } from './mocks/mock-analytics-handler';
9
- import { analyticsActions, analyticsCategories, } from '../src/utils/analytics-events';
10
- /**
11
- * Wait for the next tick of the event loop.
12
- *
13
- * This is necessary in some of the tests because certain collection browser
14
- * updates take more than one tick to render (e.g., date picker & query changes).
15
- * These delays are non-ideal and should eventually be investigated and fixed,
16
- * but they are minor enough that waiting for the next tick is a reasonable
17
- * testing solution for now.
18
- */
19
- const nextTick = () => aTimeout(0);
20
- describe('Collection Browser', () => {
21
- beforeEach(async () => {
22
- // Apparently query params set by one test can bleed into other tests.
23
- // Since collection browser restores its state from certain query params, we need
24
- // to clear these before each test to ensure they run in isolation from one another.
25
- const url = new URL(window.location.href);
26
- const { searchParams } = url;
27
- searchParams.delete('sin');
28
- searchParams.delete('sort');
29
- searchParams.delete('query');
30
- searchParams.delete('page');
31
- searchParams.delete('and[]');
32
- searchParams.delete('not[]');
33
- window.history.replaceState({}, '', url);
34
- });
35
- it('clears selected facets when requested', async () => {
36
- const selectedFacets = getDefaultSelectedFacets();
37
- selectedFacets.creator.foo = { count: 1, key: 'foo', state: 'selected' };
38
- const el = await fixture(html `<collection-browser></collection-browser>`);
39
- el.selectedFacets = selectedFacets;
40
- await el.updateComplete;
41
- el.clearFilters(); // By default, sort is not cleared
42
- expect(el.selectedFacets).to.deep.equal(getDefaultSelectedFacets());
43
- });
44
- it('clears existing filters but not sort by default', async () => {
45
- const el = await fixture(html `<collection-browser></collection-browser>`);
46
- el.selectedSort = 'title';
47
- el.sortDirection = 'asc';
48
- await el.updateComplete;
49
- el.clearFilters(); // By default, sort is not cleared
50
- expect(el.selectedFacets).to.deep.equal(getDefaultSelectedFacets());
51
- expect(el.selectedSort).to.equal('title');
52
- expect(el.sortDirection).to.equal('asc');
53
- expect(el.sortParam).to.deep.equal({
54
- field: 'titleSorter',
55
- direction: 'asc',
56
- });
57
- expect(el.selectedCreatorFilter).to.be.null;
58
- expect(el.selectedTitleFilter).to.be.null;
59
- });
60
- it('clears existing filters for facets & sort via option', async () => {
61
- const el = await fixture(html `<collection-browser></collection-browser>`);
62
- el.selectedSort = 'title';
63
- await el.updateComplete;
64
- el.clearFilters({ sort: true }); // Sort is reset too due to the option
65
- expect(el.selectedFacets).to.deep.equal(getDefaultSelectedFacets());
66
- expect(el.selectedSort).to.equal(SortField.default);
67
- expect(el.sortDirection).to.be.null;
68
- expect(el.sortParam).to.be.null;
69
- expect(el.selectedCreatorFilter).to.be.null;
70
- expect(el.selectedTitleFilter).to.be.null;
71
- });
72
- it('filterBy creator with analytics', async () => {
73
- const mockAnalyticsHandler = new MockAnalyticsHandler();
74
- const el = await fixture(html `<collection-browser .analyticsHandler=${mockAnalyticsHandler}>
75
- </collection-browser>`);
76
- el.searchContext = 'betaSearchService';
77
- el.selectedSort = 'creator';
78
- el.sortDirection = 'asc';
79
- el.selectedCreatorFilter = 'A';
80
- await el.updateComplete;
81
- expect(mockAnalyticsHandler.callCategory).to.equal('betaSearchService');
82
- expect(mockAnalyticsHandler.callAction).to.equal('filterByCreator');
83
- expect(mockAnalyticsHandler.callLabel).to.equal('start-A');
84
- el.clearFilters();
85
- await el.updateComplete;
86
- expect(el.selectedTitleFilter).to.be.null;
87
- expect(mockAnalyticsHandler.callCategory).to.equal('betaSearchService');
88
- expect(mockAnalyticsHandler.callAction).to.equal('filterByCreator');
89
- expect(mockAnalyticsHandler.callLabel).to.equal('clear-A');
90
- });
91
- it('filterBy title with analytics', async () => {
92
- const mockAnalyticsHandler = new MockAnalyticsHandler();
93
- const el = await fixture(html `<collection-browser .analyticsHandler=${mockAnalyticsHandler}>
94
- </collection-browser>`);
95
- el.searchContext = 'beta-search-service';
96
- el.selectedSort = 'title';
97
- el.sortDirection = 'asc';
98
- el.selectedTitleFilter = 'A';
99
- await el.updateComplete;
100
- expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');
101
- expect(mockAnalyticsHandler.callAction).to.equal('filterByTitle');
102
- expect(mockAnalyticsHandler.callLabel).to.equal('start-A');
103
- el.clearFilters();
104
- await el.updateComplete;
105
- expect(el.selectedTitleFilter).to.be.null;
106
- expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');
107
- expect(mockAnalyticsHandler.callAction).to.equal('filterByTitle');
108
- expect(mockAnalyticsHandler.callLabel).to.equal('clear-A');
109
- });
110
- it('selected facets with analytics - not negative facets', async () => {
111
- const mockAnalyticsHandler = new MockAnalyticsHandler();
112
- const mediaTypeBucket = { count: 123, state: 'selected' };
113
- const mockedSelectedFacets = {
114
- subject: {},
115
- lending: {},
116
- mediatype: { data: mediaTypeBucket },
117
- language: {},
118
- creator: {},
119
- collection: {},
120
- year: {},
121
- };
122
- const el = await fixture(html `<collection-browser .analyticsHandler=${mockAnalyticsHandler}>
123
- </collection-browser>`);
124
- el.searchContext = 'search-service';
125
- el.selectedFacets = mockedSelectedFacets;
126
- await el.updateComplete;
127
- el.facetClickHandler(new CustomEvent('facetClick', {
128
- detail: {
129
- facetType: 'mediatype',
130
- bucket: {
131
- key: '',
132
- state: 'selected',
133
- count: 123,
134
- },
135
- negative: false,
136
- },
137
- }));
138
- expect(mockAnalyticsHandler.callCategory).to.equal('search-service');
139
- expect(mockAnalyticsHandler.callAction).to.equal('facetSelected');
140
- expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');
141
- el.facetClickHandler(new CustomEvent('facetClick', {
142
- detail: {
143
- facetType: 'mediatype',
144
- bucket: {
145
- key: '',
146
- state: 'none',
147
- count: 123,
148
- },
149
- negative: false,
150
- },
151
- }));
152
- expect(el.selectedFacets).to.equal(mockedSelectedFacets);
153
- expect(mockAnalyticsHandler.callCategory).to.equal('search-service');
154
- expect(mockAnalyticsHandler.callAction).to.equal('facetDeselected');
155
- expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');
156
- });
157
- it('selected facets with analytics - negative facets', async () => {
158
- const mockAnalyticsHandler = new MockAnalyticsHandler();
159
- const mediaTypeBucket = { count: 123, state: 'selected' };
160
- const mockedSelectedFacets = {
161
- subject: {},
162
- lending: {},
163
- mediatype: { data: mediaTypeBucket },
164
- language: {},
165
- creator: {},
166
- collection: {},
167
- year: {},
168
- };
169
- const el = await fixture(html `<collection-browser .analyticsHandler=${mockAnalyticsHandler}>
170
- </collection-browser>`);
171
- el.searchContext = 'beta-search-service';
172
- el.selectedFacets = mockedSelectedFacets;
173
- await el.updateComplete;
174
- el.facetClickHandler(new CustomEvent('facetClick', {
175
- detail: {
176
- facetType: 'mediatype',
177
- bucket: {
178
- key: '',
179
- state: 'hidden',
180
- count: 123,
181
- },
182
- negative: true,
183
- },
184
- }));
185
- expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');
186
- expect(mockAnalyticsHandler.callAction).to.equal('facetNegativeSelected');
187
- expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');
188
- el.facetClickHandler(new CustomEvent('facetClick', {
189
- detail: {
190
- facetType: 'mediatype',
191
- bucket: {
192
- key: '',
193
- state: 'none',
194
- count: 123,
195
- },
196
- negative: true,
197
- },
198
- }));
199
- expect(el.selectedFacets).to.equal(mockedSelectedFacets);
200
- expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');
201
- expect(mockAnalyticsHandler.callAction).to.equal('facetNegativeDeselected');
202
- expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');
203
- });
204
- it('should render with a sort bar, facets, and infinite scroller', async () => {
205
- var _a, _b, _c;
206
- const searchService = new MockSearchService();
207
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
208
- </collection-browser>`);
209
- el.baseQuery = 'hello';
210
- await el.updateComplete;
211
- await nextTick();
212
- const facets = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('collection-facets');
213
- const sortBar = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('sort-filter-bar');
214
- const infiniteScroller = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('infinite-scroller');
215
- expect(facets, 'facets').to.exist;
216
- expect(sortBar, 'sort bar').to.exist;
217
- expect(infiniteScroller, 'infinite scroller').to.exist;
218
- });
219
- it('queries the search service when given a base query', async () => {
220
- var _a, _b, _c;
221
- const searchService = new MockSearchService();
222
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
223
- </collection-browser>`);
224
- el.baseQuery = 'collection:foo';
225
- await el.updateComplete;
226
- await el.initialSearchComplete;
227
- expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo');
228
- expect((_c = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#big-results-label')) === null || _c === void 0 ? void 0 : _c.textContent).to.contains('Results');
229
- });
230
- it('queries the search service when given a list of identifiers and no query', async () => {
231
- var _a, _b, _c;
232
- const searchService = new MockSearchService();
233
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
234
- </collection-browser>`);
235
- el.identifiers = ['foo', 'bar'];
236
- await el.updateComplete;
237
- await el.initialSearchComplete;
238
- expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.identifiers).to.deep.equal([
239
- 'foo',
240
- 'bar',
241
- ]);
242
- expect((_c = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#big-results-label')) === null || _c === void 0 ? void 0 : _c.textContent).to.contains('Results');
243
- });
244
- it('queries the search service when given a list of identifiers with a query', async () => {
245
- var _a, _b, _c, _d;
246
- const searchService = new MockSearchService();
247
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
248
- </collection-browser>`);
249
- el.baseQuery = 'collection:foo';
250
- el.identifiers = ['foo', 'bar'];
251
- await el.updateComplete;
252
- await el.initialSearchComplete;
253
- expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo');
254
- expect((_b = searchService.searchParams) === null || _b === void 0 ? void 0 : _b.identifiers).to.deep.equal([
255
- 'foo',
256
- 'bar',
257
- ]);
258
- expect((_d = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#big-results-label')) === null || _d === void 0 ? void 0 : _d.textContent).to.contains('Results');
259
- });
260
- it('queries the search service with a metadata search', async () => {
261
- var _a, _b, _c;
262
- const searchService = new MockSearchService();
263
- const el = await fixture(html ` <collection-browser .searchService=${searchService}>
264
- </collection-browser>`);
265
- el.searchType = SearchType.METADATA;
266
- await el.updateComplete;
267
- el.baseQuery = 'collection:foo';
268
- await el.updateComplete;
269
- await el.initialSearchComplete;
270
- expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo');
271
- expect(searchService.searchType).to.equal(SearchType.METADATA);
272
- expect((_c = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#big-results-label')) === null || _c === void 0 ? void 0 : _c.textContent).to.contains('Results');
273
- });
274
- it('can change search type', async () => {
275
- const searchService = new MockSearchService();
276
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
277
- </collection-browser>`);
278
- el.baseQuery = 'collection:foo';
279
- await el.updateComplete;
280
- el.searchType = SearchType.FULLTEXT;
281
- await el.updateComplete;
282
- await el.initialSearchComplete;
283
- expect(searchService.searchType).to.equal(SearchType.FULLTEXT);
284
- });
285
- it('queries the search service with a fulltext search', async () => {
286
- var _a, _b, _c;
287
- const searchService = new MockSearchService();
288
- const el = await fixture(html ` <collection-browser .searchService=${searchService}>
289
- </collection-browser>`);
290
- el.searchType = SearchType.FULLTEXT;
291
- await el.updateComplete;
292
- el.baseQuery = 'collection:foo';
293
- await el.updateComplete;
294
- await el.initialSearchComplete;
295
- expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo');
296
- expect(searchService.searchType).to.equal(SearchType.FULLTEXT);
297
- expect((_c = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#big-results-label')) === null || _c === void 0 ? void 0 : _c.textContent).to.contains('Results');
298
- });
299
- it('queries the search service with a radio search', async () => {
300
- var _a, _b, _c;
301
- const searchService = new MockSearchService();
302
- const el = await fixture(html ` <collection-browser .searchService=${searchService}>
303
- </collection-browser>`);
304
- el.searchType = SearchType.RADIO;
305
- await el.updateComplete;
306
- el.baseQuery = 'collection:foo';
307
- await el.updateComplete;
308
- await el.initialSearchComplete;
309
- expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo');
310
- expect(searchService.searchType).to.equal(SearchType.RADIO);
311
- expect((_c = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#big-results-label')) === null || _c === void 0 ? void 0 : _c.textContent).to.contains('Results');
312
- });
313
- it('queries the search service with a TV search', async () => {
314
- var _a, _b, _c;
315
- const searchService = new MockSearchService();
316
- const el = await fixture(html ` <collection-browser .searchService=${searchService}>
317
- </collection-browser>`);
318
- el.searchType = SearchType.TV;
319
- await el.updateComplete;
320
- el.baseQuery = 'collection:foo';
321
- await el.updateComplete;
322
- await el.initialSearchComplete;
323
- expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo');
324
- expect(searchService.searchType).to.equal(SearchType.TV);
325
- expect((_c = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#big-results-label')) === null || _c === void 0 ? void 0 : _c.textContent).to.contains('Results');
326
- });
327
- it('queries the search service with facets selected/negated', async () => {
328
- var _a, _b;
329
- const searchService = new MockSearchService();
330
- const selectedFacets = {
331
- subject: {
332
- foo: {
333
- key: 'foo',
334
- count: 1,
335
- state: 'selected',
336
- },
337
- bar: {
338
- key: 'bar',
339
- count: 2,
340
- state: 'hidden',
341
- },
342
- },
343
- lending: {},
344
- mediatype: {},
345
- language: {
346
- en: {
347
- key: 'en',
348
- count: 1,
349
- state: 'selected',
350
- },
351
- },
352
- creator: {},
353
- collection: {},
354
- year: {},
355
- };
356
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
357
- </collection-browser>`);
358
- el.baseQuery = 'collection:foo';
359
- el.selectedFacets = selectedFacets;
360
- await el.updateComplete;
361
- await el.initialSearchComplete;
362
- expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo');
363
- expect((_b = searchService.searchParams) === null || _b === void 0 ? void 0 : _b.filters).to.deep.equal({
364
- subject: {
365
- foo: 'inc',
366
- bar: 'exc',
367
- },
368
- language: {
369
- en: 'inc',
370
- },
371
- });
372
- });
373
- it('fails gracefully if no search service provided', async () => {
374
- var _a;
375
- const el = await fixture(html `<collection-browser></collection-browser>`);
376
- el.baseQuery = 'collection:foo';
377
- await el.updateComplete;
378
- // This shouldn't throw an error
379
- expect(el.dataSource.fetchPage(3)).to.exist;
380
- // Should continue showing the empty placeholder
381
- expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('empty-placeholder')).to.exist;
382
- });
383
- it('restores search type from URL param', async () => {
384
- // Add a sin=TXT param to the URL
385
- const url = new URL(window.location.href);
386
- url.searchParams.append('sin', 'TXT');
387
- window.history.replaceState({}, '', url);
388
- const searchService = new MockSearchService();
389
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
390
- </collection-browser>`);
391
- expect(el.searchType).to.equal(SearchType.FULLTEXT);
392
- });
393
- it('does not persist or restore search type from URL param if suppressed', async () => {
394
- // Add a sin=TXT param to the URL
395
- let url = new URL(window.location.href);
396
- url.searchParams.append('sin', 'TXT');
397
- window.history.replaceState({}, '', url);
398
- const searchService = new MockSearchService();
399
- const el = await fixture(html `<collection-browser
400
- .searchService=${searchService}
401
- suppressURLSinParam
402
- >
403
- </collection-browser>`);
404
- url = new URL(window.location.href);
405
- expect(el.searchType).to.equal(SearchType.DEFAULT);
406
- expect(url.searchParams.has('sin')).to.be.false; // Removes existing sin param
407
- el.searchType = SearchType.RADIO;
408
- await el.updateComplete;
409
- url = new URL(window.location.href);
410
- expect(url.searchParams.has('sin')).to.be.false; // Doesn't add sin param
411
- });
412
- it('can construct tile models with many fields present', async () => {
413
- const searchService = new MockSearchService();
414
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
415
- </collection-browser>`);
416
- el.baseQuery = 'many-fields';
417
- await el.updateComplete;
418
- await el.initialSearchComplete;
419
- const cellTemplate = el.cellForIndex(0);
420
- expect(cellTemplate).to.exist;
421
- const cell = await fixture(cellTemplate);
422
- expect(cell).to.exist;
423
- });
424
- it('emits empty results event when search fetches no results', async () => {
425
- const searchService = new MockSearchService();
426
- const emptyResultsSpy = sinon.spy();
427
- const el = await fixture(html `<collection-browser
428
- .searchService=${searchService}
429
- @emptyResults=${emptyResultsSpy}
430
- >
431
- </collection-browser>`);
432
- el.baseQuery = 'no-results';
433
- await el.updateComplete;
434
- await el.initialSearchComplete;
435
- expect(emptyResultsSpy.callCount).to.equal(1);
436
- });
437
- it('emits searchError event when search results in an error', async () => {
438
- const searchService = new MockSearchService();
439
- const searchErrorSpy = sinon.spy();
440
- const el = await fixture(html `<collection-browser
441
- .searchService=${searchService}
442
- @searchError=${searchErrorSpy}
443
- >
444
- </collection-browser>`);
445
- el.baseQuery = 'error';
446
- await el.updateComplete;
447
- await el.initialSearchComplete;
448
- expect(searchErrorSpy.callCount).to.equal(1);
449
- });
450
- it('applies loggedin flag to tile models if needed', async () => {
451
- var _a;
452
- const searchService = new MockSearchService();
453
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
454
- </collection-browser>`);
455
- el.baseQuery = 'loggedin';
456
- await el.updateComplete;
457
- await el.initialSearchComplete;
458
- const cellTemplate = el.cellForIndex(0);
459
- expect(cellTemplate).to.exist;
460
- const cell = await fixture(cellTemplate);
461
- expect(cell).to.exist;
462
- expect((_a = cell.model) === null || _a === void 0 ? void 0 : _a.loginRequired).to.be.true;
463
- });
464
- it('applies no-preview flag to tile models if needed', async () => {
465
- var _a;
466
- const searchService = new MockSearchService();
467
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
468
- </collection-browser>`);
469
- el.baseQuery = 'no-preview';
470
- await el.updateComplete;
471
- await el.initialSearchComplete;
472
- const cellTemplate = el.cellForIndex(0);
473
- expect(cellTemplate).to.exist;
474
- const cell = await fixture(cellTemplate);
475
- expect(cell).to.exist;
476
- expect((_a = cell.model) === null || _a === void 0 ? void 0 : _a.contentWarning).to.be.true;
477
- });
478
- it('both loggedin and no-preview flags can be set simultaneously', async () => {
479
- var _a, _b;
480
- const searchService = new MockSearchService();
481
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
482
- </collection-browser>`);
483
- el.baseQuery = 'loggedin-no-preview';
484
- await el.updateComplete;
485
- await el.initialSearchComplete;
486
- const cellTemplate = el.cellForIndex(0);
487
- expect(cellTemplate).to.exist;
488
- const cell = await fixture(cellTemplate);
489
- expect(cell).to.exist;
490
- expect((_a = cell.model) === null || _a === void 0 ? void 0 : _a.loginRequired).to.be.true;
491
- expect((_b = cell.model) === null || _b === void 0 ? void 0 : _b.contentWarning).to.be.true;
492
- });
493
- it('joins full description array into a single string with line breaks', async () => {
494
- var _a;
495
- const searchService = new MockSearchService();
496
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
497
- </collection-browser>`);
498
- // This query receives an array description like ['line1', 'line2']
499
- el.baseQuery = 'multi-line-description';
500
- await el.updateComplete;
501
- await el.initialSearchComplete;
502
- const cellTemplate = el.cellForIndex(0);
503
- expect(cellTemplate).to.exist;
504
- const cell = await fixture(cellTemplate);
505
- expect(cell).to.exist;
506
- // Actual model description should be joined
507
- expect((_a = cell.model) === null || _a === void 0 ? void 0 : _a.description).to.equal('line1\nline2');
508
- });
509
- it('can change search type', async () => {
510
- var _a;
511
- const searchService = new MockSearchService();
512
- const el = await fixture(html `<collection-browser
513
- .searchService=${searchService}
514
- .searchType=${SearchType.METADATA}
515
- ></collection-browser>`);
516
- el.baseQuery = 'collection:foo';
517
- el.searchType = SearchType.FULLTEXT;
518
- await el.updateComplete;
519
- await el.initialSearchComplete;
520
- expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo');
521
- expect(searchService.searchType).to.equal(SearchType.FULLTEXT);
522
- });
523
- it('trims queries of leading/trailing whitespace', async () => {
524
- var _a;
525
- const searchService = new MockSearchService();
526
- const el = await fixture(html `<collection-browser
527
- .searchService=${searchService}
528
- ></collection-browser>`);
529
- el.baseQuery = ' collection:foo ';
530
- await el.updateComplete;
531
- await el.initialSearchComplete;
532
- expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo');
533
- });
534
- it('shows error message when error response received', async () => {
535
- var _a, _b;
536
- const searchService = new MockSearchService();
537
- const el = await fixture(html `<collection-browser
538
- .searchService=${searchService}
539
- ></collection-browser>`);
540
- el.baseQuery = 'error';
541
- await el.updateComplete;
542
- await el.initialSearchComplete;
543
- const errorPlaceholder = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('empty-placeholder');
544
- const errorDetails = (_b = errorPlaceholder === null || errorPlaceholder === void 0 ? void 0 : errorPlaceholder.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.error-details');
545
- expect(errorDetails).to.exist;
546
- expect(errorDetails.textContent).to.contain('foo');
547
- });
548
- it('shows error message when error response received for a collection', async () => {
549
- var _a, _b;
550
- const searchService = new MockSearchService();
551
- const el = await fixture(html `<collection-browser
552
- .searchService=${searchService}
553
- ></collection-browser>`);
554
- el.withinCollection = 'error';
555
- await el.updateComplete;
556
- await el.initialSearchComplete;
557
- const errorPlaceholder = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('empty-placeholder');
558
- const errorDetails = (_b = errorPlaceholder === null || errorPlaceholder === void 0 ? void 0 : errorPlaceholder.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.error-details');
559
- expect(errorDetails).to.exist;
560
- expect(errorDetails.textContent).to.contain('foo');
561
- });
562
- it('reports malformed response errors to Sentry', async () => {
563
- const sentrySpy = sinon.spy();
564
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
565
- window.Sentry = { captureMessage: sentrySpy };
566
- const searchService = new MockSearchService();
567
- const el = await fixture(html `<collection-browser
568
- .searchService=${searchService}
569
- ></collection-browser>`);
570
- el.baseQuery = 'malformed';
571
- await el.updateComplete;
572
- await el.initialSearchComplete;
573
- expect(sentrySpy.callCount).to.be.greaterThanOrEqual(1);
574
- });
575
- it('adds collection names to cache when present on response', async () => {
576
- const searchService = new MockSearchService();
577
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
578
- </collection-browser>`);
579
- el.baseQuery = 'collection-titles';
580
- await el.updateComplete;
581
- await el.initialSearchComplete;
582
- expect(el.dataSource.collectionTitles.get('foo')).to.equal('Foo Collection');
583
- expect(el.dataSource.collectionTitles.get('bar')).to.equal('Bar Collection');
584
- expect(el.dataSource.collectionTitles.get('baz')).to.equal('Baz Collection');
585
- expect(el.dataSource.collectionTitles.get('boop')).to.equal('Boop Collection');
586
- });
587
- it('adds tv channel aliases to cache when present on response', async () => {
588
- const searchService = new MockSearchService();
589
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
590
- </collection-browser>`);
591
- el.baseQuery = 'channel-aliases';
592
- await el.updateComplete;
593
- await el.initialSearchComplete;
594
- expect(el.dataSource.tvChannelAliases.get('foo')).to.equal('Foo Network');
595
- expect(el.dataSource.tvChannelAliases.get('bar')).to.equal('Bar Network');
596
- });
597
- it('keeps search results from fetch if no change to query or sort param', async () => {
598
- const resultsSpy = sinon.spy();
599
- const searchService = new MockSearchService({
600
- asyncResponse: true,
601
- resultsSpy,
602
- });
603
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
604
- </collection-browser>`);
605
- el.baseQuery = 'with-sort';
606
- el.selectedSort = SortField.date;
607
- el.sortDirection = 'asc';
608
- await el.updateComplete;
609
- await el.dataSource.fetchPage(3);
610
- // If there is no change to the query or sort param during the fetch, the results
611
- // should be read.
612
- expect(resultsSpy.callCount).to.be.greaterThanOrEqual(1);
613
- });
614
- it('discards obsolete search results if sort params changed before arrival', async () => {
615
- const resultsSpy = sinon.spy();
616
- const searchService = new MockSearchService({
617
- asyncResponse: true,
618
- resultsSpy,
619
- });
620
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
621
- </collection-browser>`);
622
- el.baseQuery = 'with-sort';
623
- el.selectedSort = SortField.date;
624
- el.sortDirection = 'asc';
625
- await el.updateComplete;
626
- // We want to spy exclusively on the first set of results, not the second
627
- searchService.asyncResponse = false;
628
- searchService.resultsSpy = () => { };
629
- el.sortDirection = 'desc';
630
- await el.updateComplete;
631
- await el.initialSearchComplete;
632
- // If the different sort param causes the results to be discarded,
633
- // the first results array should never be read.
634
- expect(resultsSpy.callCount).to.equal(0);
635
- });
636
- it('discards obsolete search results if sort param added before arrival', async () => {
637
- const resultsSpy = sinon.spy();
638
- const searchService = new MockSearchService({
639
- asyncResponse: true,
640
- resultsSpy,
641
- });
642
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
643
- </collection-browser>`);
644
- el.baseQuery = 'single-result';
645
- await el.updateComplete;
646
- // We want to spy exclusively on the first set of results, not the second
647
- searchService.asyncResponse = false;
648
- searchService.resultsSpy = () => { };
649
- el.selectedSort = SortField.date;
650
- el.sortDirection = 'asc';
651
- await el.updateComplete;
652
- await el.initialSearchComplete;
653
- // If the different sort param causes the results to be discarded,
654
- // the first results array should never be read.
655
- expect(resultsSpy.callCount).to.equal(0);
656
- });
657
- it('discards obsolete search results if sort param cleared before arrival', async () => {
658
- const resultsSpy = sinon.spy();
659
- const searchService = new MockSearchService({
660
- asyncResponse: true,
661
- resultsSpy,
662
- });
663
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
664
- </collection-browser>`);
665
- el.baseQuery = 'with-sort';
666
- el.selectedSort = SortField.date;
667
- el.sortDirection = 'asc';
668
- await el.updateComplete;
669
- // We want to spy exclusively on the first set of results, not the second
670
- searchService.asyncResponse = false;
671
- searchService.resultsSpy = () => { };
672
- el.selectedSort = SortField.default;
673
- await el.updateComplete;
674
- await el.initialSearchComplete;
675
- // If the different sort param causes the results to be discarded,
676
- // the first results array should never be read.
677
- expect(resultsSpy.callCount).to.equal(0);
678
- });
679
- it('sets sort properties when user changes sort', async () => {
680
- var _a, _b, _c, _d, _e, _f;
681
- const searchService = new MockSearchService();
682
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
683
- </collection-browser>`);
684
- expect(el.selectedSort).to.equal(SortField.default);
685
- el.baseQuery = 'foo';
686
- await el.updateComplete;
687
- await nextTick();
688
- const sortBar = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#content-container sort-filter-bar');
689
- const sortSelector = (_b = sortBar === null || sortBar === void 0 ? void 0 : sortBar.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#desktop-sort-selector');
690
- expect(sortSelector, 'sort bar').to.exist;
691
- // Click the title sorter
692
- (_d = (_c = Array.from(sortSelector.children)
693
- .find(child => { var _a; return ((_a = child.textContent) === null || _a === void 0 ? void 0 : _a.trim()) === 'Title'; })) === null || _c === void 0 ? void 0 : _c.querySelector('button')) === null || _d === void 0 ? void 0 : _d.click();
694
- await el.updateComplete;
695
- expect(el.selectedSort).to.equal(SortField.title);
696
- // Click the creator sorter
697
- (_f = (_e = Array.from(sortSelector.children)
698
- .find(child => { var _a; return ((_a = child.textContent) === null || _a === void 0 ? void 0 : _a.trim()) === 'Creator'; })) === null || _e === void 0 ? void 0 : _e.querySelector('button')) === null || _f === void 0 ? void 0 : _f.click();
699
- await el.updateComplete;
700
- expect(el.selectedSort).to.equal(SortField.creator);
701
- });
702
- it('sets sort filter properties when user selects title filter', async () => {
703
- var _a, _b, _c, _d;
704
- const searchService = new MockSearchService();
705
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
706
- </collection-browser>`);
707
- el.baseQuery = 'first-title';
708
- el.selectedSort = 'title';
709
- el.sortDirection = 'asc';
710
- el.selectedTitleFilter = 'X';
711
- await el.updateComplete;
712
- await el.initialSearchComplete;
713
- expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('first-title');
714
- expect((_d = (_c = (_b = searchService.searchParams) === null || _b === void 0 ? void 0 : _b.filters) === null || _c === void 0 ? void 0 : _c.firstTitle) === null || _d === void 0 ? void 0 : _d.X).to.equal(FilterConstraint.INCLUDE);
715
- });
716
- it('sets sort filter properties when user selects creator filter', async () => {
717
- var _a, _b, _c, _d;
718
- const searchService = new MockSearchService();
719
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
720
- </collection-browser>`);
721
- el.baseQuery = 'first-creator';
722
- el.selectedSort = 'creator';
723
- el.sortDirection = 'asc';
724
- el.selectedCreatorFilter = 'X';
725
- await el.updateComplete;
726
- await el.initialSearchComplete;
727
- expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('first-creator');
728
- expect((_d = (_c = (_b = searchService.searchParams) === null || _b === void 0 ? void 0 : _b.filters) === null || _c === void 0 ? void 0 : _c.firstCreator) === null || _d === void 0 ? void 0 : _d.X).to.equal(FilterConstraint.INCLUDE);
729
- });
730
- it('sets sort filter properties simultaneous with facets and date range', async () => {
731
- var _a, _b;
732
- const searchService = new MockSearchService();
733
- const selectedFacets = {
734
- collection: { foo: { key: 'foo', state: 'selected', count: 1 } },
735
- creator: {},
736
- language: {},
737
- lending: {},
738
- mediatype: {},
739
- subject: {},
740
- year: {},
741
- };
742
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
743
- </collection-browser>`);
744
- el.baseQuery = 'first-creator';
745
- el.selectedSort = 'creator';
746
- el.selectedFacets = selectedFacets;
747
- el.minSelectedDate = '1950';
748
- el.maxSelectedDate = '1970';
749
- el.sortDirection = 'asc';
750
- el.selectedCreatorFilter = 'X';
751
- await el.updateComplete;
752
- await el.initialSearchComplete;
753
- expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('first-creator');
754
- expect((_b = searchService.searchParams) === null || _b === void 0 ? void 0 : _b.filters).to.deep.equal({
755
- collection: {
756
- foo: 'inc',
757
- },
758
- year: {
759
- '1950': 'gte',
760
- '1970': 'lte',
761
- },
762
- firstCreator: {
763
- X: 'inc',
764
- },
765
- });
766
- });
767
- it('applies correct search filter when TV clip filter set to commercials', async () => {
768
- var _a, _b, _c;
769
- const searchService = new MockSearchService();
770
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
771
- </collection-browser>`);
772
- el.baseQuery = 'tv-fields';
773
- el.searchType = SearchType.TV;
774
- el.tvClipFilter = 'commercials';
775
- await el.updateComplete;
776
- await el.initialSearchComplete;
777
- expect((_c = (_b = (_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.ad_id) === null || _c === void 0 ? void 0 : _c['*']).to.equal(FilterConstraint.INCLUDE);
778
- });
779
- it('applies correct search filter when TV clip filter set to factchecks', async () => {
780
- var _a, _b, _c;
781
- const searchService = new MockSearchService();
782
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
783
- </collection-browser>`);
784
- el.baseQuery = 'tv-fields';
785
- el.searchType = SearchType.TV;
786
- el.tvClipFilter = 'factchecks';
787
- await el.updateComplete;
788
- await el.initialSearchComplete;
789
- expect((_c = (_b = (_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.factcheck) === null || _c === void 0 ? void 0 : _c['*']).to.equal(FilterConstraint.INCLUDE);
790
- });
791
- it('applies correct search filter when TV clip filter set to quotes', async () => {
792
- var _a, _b, _c;
793
- const searchService = new MockSearchService();
794
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
795
- </collection-browser>`);
796
- el.baseQuery = 'tv-fields';
797
- el.searchType = SearchType.TV;
798
- el.tvClipFilter = 'quotes';
799
- await el.updateComplete;
800
- await el.initialSearchComplete;
801
- expect((_c = (_b = (_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.clip) === null || _c === void 0 ? void 0 : _c['1']).to.equal(FilterConstraint.INCLUDE);
802
- });
803
- it('resets letter filters when query changes', async () => {
804
- var _a, _b, _c, _d, _e, _f, _g;
805
- const searchService = new MockSearchService();
806
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
807
- </collection-browser>`);
808
- el.baseQuery = 'first-creator';
809
- el.selectedSort = 'creator';
810
- el.sortDirection = 'asc';
811
- el.selectedCreatorFilter = 'X';
812
- await el.updateComplete;
813
- await el.initialSearchComplete;
814
- await nextTick();
815
- expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('first-creator');
816
- expect((_d = (_c = (_b = searchService.searchParams) === null || _b === void 0 ? void 0 : _b.filters) === null || _c === void 0 ? void 0 : _c.firstCreator) === null || _d === void 0 ? void 0 : _d.X).to.equal(FilterConstraint.INCLUDE);
817
- el.baseQuery = 'collection:foo';
818
- await el.updateComplete;
819
- await nextTick();
820
- expect((_e = searchService.searchParams) === null || _e === void 0 ? void 0 : _e.query).to.equal('collection:foo');
821
- expect((_g = (_f = searchService.searchParams) === null || _f === void 0 ? void 0 : _f.filters) === null || _g === void 0 ? void 0 : _g.firstCreator).not.to.exist;
822
- });
823
- it('sets date range query when date picker selection changed', async () => {
824
- var _a, _b, _c;
825
- const searchService = new MockSearchService();
826
- const mockAnalyticsHandler = new MockAnalyticsHandler();
827
- const el = await fixture(html `<collection-browser
828
- .searchService=${searchService}
829
- .analyticsHandler=${mockAnalyticsHandler}
830
- .suppressPlaceholders=${true}
831
- >
832
- </collection-browser>`);
833
- el.baseQuery = 'years'; // Includes year_histogram aggregation in response
834
- el.showHistogramDatePicker = true;
835
- await el.updateComplete;
836
- const facets = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('collection-facets');
837
- await (facets === null || facets === void 0 ? void 0 : facets.updateComplete);
838
- // Wait for the date picker to be rendered (which may take until the next tick)
839
- await nextTick();
840
- const histogram = (_b = facets === null || facets === void 0 ? void 0 : facets.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('histogram-date-range');
841
- expect(histogram, 'histogram exists').to.exist;
842
- // Enter a new min date into the date picker
843
- const minDateInput = (_c = histogram.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#date-min');
844
- const pressEnterEvent = new KeyboardEvent('keyup', {
845
- key: 'Enter',
846
- });
847
- minDateInput.value = '1960';
848
- minDateInput.dispatchEvent(pressEnterEvent);
849
- // Wait for the histogram's update delay
850
- await aTimeout(histogram.updateDelay + 50);
851
- // Ensure that the histogram change propagated to the collection browser's
852
- // date query correctly.
853
- await el.updateComplete;
854
- expect(el.minSelectedDate).to.equal('1960');
855
- expect(el.maxSelectedDate).to.equal('2009');
856
- });
857
- it('sets date range query when monthly date picker selection changed', async () => {
858
- var _a, _b, _c;
859
- const searchService = new MockSearchService();
860
- const el = await fixture(html `<collection-browser
861
- .searchService=${searchService}
862
- .suppressPlaceholders=${true}
863
- >
864
- </collection-browser>`);
865
- el.baseQuery = 'months'; // Includes date_histogram aggregation in response
866
- el.searchType = SearchType.TV;
867
- el.showHistogramDatePicker = true;
868
- await el.updateComplete;
869
- const facets = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('collection-facets');
870
- await (facets === null || facets === void 0 ? void 0 : facets.updateComplete);
871
- // Wait for the date picker to be rendered (which may take until the next tick)
872
- await nextTick();
873
- const histogram = (_b = facets === null || facets === void 0 ? void 0 : facets.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('histogram-date-range');
874
- expect(histogram, 'histogram exists').to.exist;
875
- // Enter a new min date into the date picker
876
- const minDateInput = (_c = histogram.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#date-min');
877
- const pressEnterEvent = new KeyboardEvent('keyup', {
878
- key: 'Enter',
879
- });
880
- minDateInput.value = '2001-02';
881
- minDateInput.dispatchEvent(pressEnterEvent);
882
- // Wait for the histogram's update delay
883
- await aTimeout(histogram.updateDelay + 50);
884
- // Ensure that the histogram change propagated to the collection browser's
885
- // date query correctly.
886
- await el.updateComplete;
887
- expect(el.minSelectedDate).to.equal('2001-02');
888
- expect(el.maxSelectedDate).to.equal('2002-12');
889
- });
890
- it('emits event when results start and end loading', async () => {
891
- var _a, _b, _c, _d;
892
- const spy = sinon.spy();
893
- const searchService = new MockSearchService();
894
- const el = await fixture(html `<collection-browser
895
- .searchService=${searchService}
896
- @searchResultsLoadingChanged=${spy}
897
- ></collection-browser>`);
898
- spy.resetHistory();
899
- el.baseQuery = 'collection:foo';
900
- await el.updateComplete;
901
- await el.initialSearchComplete;
902
- // Should initially emit loading=true, then later emit loading=false
903
- expect(spy.callCount).to.equal(2);
904
- expect((_b = (_a = spy.firstCall.firstArg) === null || _a === void 0 ? void 0 : _a.detail) === null || _b === void 0 ? void 0 : _b.loading).to.equal(true);
905
- expect((_d = (_c = spy.secondCall.firstArg) === null || _c === void 0 ? void 0 : _c.detail) === null || _d === void 0 ? void 0 : _d.loading).to.equal(false);
906
- });
907
- it('collapses extra set of quotes around href field', async () => {
908
- var _a;
909
- const searchService = new MockSearchService();
910
- const el = await fixture(html `<collection-browser
911
- .searchService=${searchService}
912
- .baseNavigationUrl=${''}
913
- ></collection-browser>`);
914
- el.baseQuery = 'extra-quoted-href';
915
- await el.updateComplete;
916
- await el.initialSearchComplete;
917
- await el.updateComplete;
918
- await aTimeout(50);
919
- // Original href q param starts/ends with %22%22, but should be collapsed to %22 before render
920
- expect((_a = el.dataSource.getTileModelAt(0)) === null || _a === void 0 ? void 0 : _a.href).to.equal('/details/foo?q=%22quoted+query%22');
921
- });
922
- it('sets default sort from collection metadata', async () => {
923
- var _a;
924
- const searchService = new MockSearchService();
925
- const el = await fixture(html `<collection-browser
926
- .searchService=${searchService}
927
- .baseNavigationUrl=${''}
928
- ></collection-browser>`);
929
- el.withinCollection = 'default-sort';
930
- await el.updateComplete;
931
- await el.initialSearchComplete;
932
- await el.updateComplete;
933
- await aTimeout(50);
934
- const sortBar = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('sort-filter-bar');
935
- expect(sortBar).to.exist;
936
- expect(sortBar.defaultSortField).to.equal(SortField.title);
937
- expect(sortBar.defaultSortDirection).to.equal('asc');
938
- expect(sortBar.selectedSort).to.equal(SortField.default);
939
- expect(sortBar.sortDirection).to.be.null;
940
- });
941
- it('sets default sort from collection metadata in "-field" format', async () => {
942
- var _a;
943
- const searchService = new MockSearchService();
944
- const el = await fixture(html `<collection-browser
945
- .searchService=${searchService}
946
- .baseNavigationUrl=${''}
947
- ></collection-browser>`);
948
- el.withinCollection = 'default-sort-concise';
949
- await el.updateComplete;
950
- await el.initialSearchComplete;
951
- await el.updateComplete;
952
- await aTimeout(50);
953
- const sortBar = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('sort-filter-bar');
954
- expect(sortBar).to.exist;
955
- expect(sortBar.defaultSortField).to.equal(SortField.dateadded);
956
- expect(sortBar.defaultSortDirection).to.equal('desc');
957
- expect(sortBar.selectedSort).to.equal(SortField.default);
958
- expect(sortBar.sortDirection).to.be.null;
959
- });
960
- it('falls back to weekly views default sorting on profiles when tab not set', async () => {
961
- const el = await fixture(html `<collection-browser
962
- .withinProfile=${'@foobar'}
963
- ></collection-browser>`);
964
- el.applyDefaultProfileSort();
965
- expect(el.defaultSortParam).to.deep.equal({
966
- field: 'week',
967
- direction: 'desc',
968
- });
969
- });
970
- it('uses relevance sort as default when a query is set', async () => {
971
- var _a;
972
- const searchService = new MockSearchService();
973
- const el = await fixture(html `<collection-browser
974
- .searchService=${searchService}
975
- .baseNavigationUrl=${''}
976
- ></collection-browser>`);
977
- el.withinCollection = 'default-sort';
978
- el.baseQuery = 'default-sort';
979
- await el.updateComplete;
980
- await el.initialSearchComplete;
981
- await el.updateComplete;
982
- await aTimeout(50);
983
- const sortBar = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('sort-filter-bar');
984
- expect(sortBar).to.exist;
985
- expect(sortBar.defaultSortField).to.equal(SortField.relevance);
986
- expect(sortBar.defaultSortDirection).to.be.null;
987
- expect(sortBar.selectedSort).to.equal(SortField.default);
988
- expect(sortBar.sortDirection).to.be.null;
989
- });
990
- it('uses date favorited sort as default when targeting fav- collection', async () => {
991
- var _a;
992
- const searchService = new MockSearchService();
993
- const el = await fixture(html `<collection-browser
994
- .searchService=${searchService}
995
- .baseNavigationUrl=${''}
996
- ></collection-browser>`);
997
- el.withinCollection = 'fav-sort';
998
- await el.updateComplete;
999
- await el.initialSearchComplete;
1000
- await el.updateComplete;
1001
- await aTimeout(50);
1002
- const sortBar = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('sort-filter-bar');
1003
- expect(sortBar).to.exist;
1004
- expect(sortBar.defaultSortField).to.equal(SortField.datefavorited);
1005
- expect(sortBar.defaultSortDirection).to.equal('desc');
1006
- expect(sortBar.selectedSort).to.equal(SortField.default);
1007
- expect(sortBar.sortDirection).to.be.null;
1008
- });
1009
- it('scrolls to page', async () => {
1010
- var _a;
1011
- const searchService = new MockSearchService();
1012
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
1013
- </collection-browser>`);
1014
- // Infinite scroller won't exist unless there's a base query.
1015
- // First ensure that we don't throw errors when it doesn't exist.
1016
- await el.goToPage(1);
1017
- // And make sure it correctly calls scrollToCell when the
1018
- // infinite scroller does exist.
1019
- el.baseQuery = 'collection:foo';
1020
- await el.updateComplete;
1021
- await nextTick();
1022
- const infiniteScroller = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('infinite-scroller');
1023
- expect(infiniteScroller).to.exist;
1024
- const oldScrollToCell = infiniteScroller.scrollToCell;
1025
- const spy = sinon.spy();
1026
- infiniteScroller.scrollToCell = spy;
1027
- await el.goToPage(1);
1028
- expect(spy.callCount, 'scroll to page fires once').to.equal(1);
1029
- infiniteScroller.scrollToCell = oldScrollToCell;
1030
- });
1031
- it('shows mobile facets in mobile view', async () => {
1032
- var _a, _b;
1033
- const searchService = new MockSearchService();
1034
- const el = await fixture(html `<collection-browser
1035
- .searchService=${searchService}
1036
- .mobileBreakpoint=${9999}
1037
- ></collection-browser>`);
1038
- el.baseQuery = 'collection:foo';
1039
- await el.updateComplete;
1040
- const contentContainer = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#content-container');
1041
- el.handleResize({
1042
- target: contentContainer,
1043
- contentRect: contentContainer.getBoundingClientRect(),
1044
- borderBoxSize: [],
1045
- contentBoxSize: [],
1046
- devicePixelContentBoxSize: [],
1047
- });
1048
- await el.updateComplete;
1049
- const mobileFacets = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#mobile-filter-collapse');
1050
- expect(mobileFacets).to.exist;
1051
- });
1052
- it('fires analytics when mobile facets toggled', async () => {
1053
- var _a, _b;
1054
- const searchService = new MockSearchService();
1055
- const analyticsHandler = new MockAnalyticsHandler();
1056
- const el = await fixture(html `<collection-browser
1057
- .searchService=${searchService}
1058
- .analyticsHandler=${analyticsHandler}
1059
- .searchContext=${'foobar-context'}
1060
- .mobileBreakpoint=${9999}
1061
- ></collection-browser>`);
1062
- el.baseQuery = 'collection:foo';
1063
- await el.updateComplete;
1064
- const contentContainer = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#content-container');
1065
- el.handleResize({
1066
- target: contentContainer,
1067
- contentRect: contentContainer.getBoundingClientRect(),
1068
- borderBoxSize: [],
1069
- contentBoxSize: [],
1070
- devicePixelContentBoxSize: [],
1071
- });
1072
- await el.updateComplete;
1073
- const mobileFacets = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#mobile-filter-collapse');
1074
- expect(mobileFacets).to.exist;
1075
- // We set up a Promise to wait for the 'toggle' event on the collapser,
1076
- // which is what triggers the analytics.
1077
- let facetsToggled = new Promise(resolve => {
1078
- mobileFacets.addEventListener('toggle', resolve);
1079
- });
1080
- // Open the mobile facets accordion & check analytics
1081
- const mobileFacetsHeader = mobileFacets.querySelector('summary');
1082
- expect(mobileFacetsHeader).to.exist;
1083
- mobileFacetsHeader.click();
1084
- await facetsToggled;
1085
- expect(analyticsHandler.callCategory).to.equal('foobar-context');
1086
- expect(analyticsHandler.callAction).to.equal(analyticsActions.mobileFacetsToggled);
1087
- expect(analyticsHandler.callLabel).to.equal('open');
1088
- // Close the mobile facets accordion & check analytics
1089
- facetsToggled = new Promise(resolve => {
1090
- mobileFacets.addEventListener('toggle', resolve);
1091
- });
1092
- mobileFacetsHeader.click();
1093
- await facetsToggled;
1094
- expect(analyticsHandler.callCategory).to.equal('foobar-context');
1095
- expect(analyticsHandler.callAction).to.equal(analyticsActions.mobileFacetsToggled);
1096
- expect(analyticsHandler.callLabel).to.equal('closed');
1097
- });
1098
- it('sets parent collections to prop when searching a collection', async () => {
1099
- const searchService = new MockSearchService();
1100
- const el = await fixture(html `<collection-browser
1101
- .searchService=${searchService}
1102
- .withinCollection=${'fake'}
1103
- ></collection-browser>`);
1104
- el.baseQuery = 'parent-collections';
1105
- await el.updateComplete;
1106
- await el.initialSearchComplete;
1107
- await aTimeout(0);
1108
- expect(el.dataSource.parentCollections).to.deep.equal(['foo', 'bar']);
1109
- });
1110
- it('recognizes TV collections', async () => {
1111
- const searchService = new MockSearchService();
1112
- const el = await fixture(html `<collection-browser
1113
- .searchService=${searchService}
1114
- .withinCollection=${'TV-FOO'}
1115
- ></collection-browser>`);
1116
- el.baseQuery = 'tv-collection';
1117
- await el.updateComplete;
1118
- await el.initialSearchComplete;
1119
- await aTimeout(0);
1120
- expect(el.isTVCollection).to.be.true;
1121
- });
1122
- it('refreshes when certain properties change - with some analytics event sampling', async () => {
1123
- var _a;
1124
- const mockAnalyticsHandler = new MockAnalyticsHandler();
1125
- const searchService = new MockSearchService();
1126
- const el = await fixture(html `<collection-browser
1127
- .analyticsHandler=${mockAnalyticsHandler}
1128
- .searchService=${searchService}
1129
- ></collection-browser>`);
1130
- const infiniteScrollerRefreshSpy = sinon.spy();
1131
- // Infinite scroller won't exist unless there's a base query
1132
- el.baseQuery = 'collection:foo';
1133
- await el.updateComplete;
1134
- await nextTick();
1135
- const infiniteScroller = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('infinite-scroller');
1136
- infiniteScroller.reload = infiniteScrollerRefreshSpy;
1137
- expect(infiniteScrollerRefreshSpy.called).to.be.false;
1138
- expect(infiniteScrollerRefreshSpy.callCount).to.equal(0);
1139
- // testing: `loggedIn`
1140
- el.loggedIn = true;
1141
- await el.updateComplete;
1142
- expect(infiniteScrollerRefreshSpy.called, 'Infinite Scroller Refresh').to.be
1143
- .true;
1144
- expect(infiniteScrollerRefreshSpy.callCount, 'Infinite Scroller Refresh call count').to.equal(1);
1145
- el.loggedIn = false;
1146
- await el.updateComplete;
1147
- expect(infiniteScrollerRefreshSpy.callCount, '2nd Infinite Scroller Refresh').to.equal(2);
1148
- // testing: `displayMode`
1149
- el.displayMode = 'list-compact';
1150
- el.searchContext = 'beta-search';
1151
- await el.updateComplete;
1152
- expect(infiniteScrollerRefreshSpy.callCount, '3rd Infinite Scroller Refresh').to.equal(3);
1153
- expect(mockAnalyticsHandler.callCategory).to.equal('beta-search');
1154
- expect(mockAnalyticsHandler.callAction).to.equal('displayMode');
1155
- expect(mockAnalyticsHandler.callLabel).to.equal('list-compact');
1156
- el.displayMode = 'list-detail';
1157
- await el.updateComplete;
1158
- expect(infiniteScrollerRefreshSpy.callCount, '4th Infinite Scroller Refresh').to.equal(4);
1159
- expect(mockAnalyticsHandler.callCategory).to.equal('beta-search');
1160
- expect(mockAnalyticsHandler.callAction).to.equal('displayMode');
1161
- expect(mockAnalyticsHandler.callLabel).to.equal('list-detail');
1162
- // testing: `baseNavigationUrl`
1163
- el.baseNavigationUrl = 'https://funtestsite.com';
1164
- await el.updateComplete;
1165
- expect(infiniteScrollerRefreshSpy.callCount, '5th Infinite Scroller Refresh').to.equal(5);
1166
- // testing: `baseImageUrl`
1167
- el.baseImageUrl = 'https://funtestsiteforimages.com';
1168
- await el.updateComplete;
1169
- expect(infiniteScrollerRefreshSpy.callCount, '6th Infinite Scroller Refresh').to.equal(6);
1170
- });
1171
- it('query the search service for single result', async () => {
1172
- var _a, _b;
1173
- const searchService = new MockSearchService();
1174
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
1175
- </collection-browser>`);
1176
- el.baseQuery = 'single-result';
1177
- await el.updateComplete;
1178
- await el.initialSearchComplete;
1179
- expect((_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#big-results-label')) === null || _b === void 0 ? void 0 : _b.textContent).to.contains('Result');
1180
- });
1181
- it('`searchContext` prop helps describe where component is being used', async () => {
1182
- const el = await fixture(html `<collection-browser></collection-browser>`);
1183
- expect(el.searchContext).to.equal(analyticsCategories.default);
1184
- el.searchContext = 'unicorn-search';
1185
- await el.updateComplete;
1186
- expect(el.searchContext).to.equal('unicorn-search');
1187
- // property is reflected as attribute
1188
- expect(el.getAttribute('searchcontext')).to.equal('unicorn-search');
1189
- });
1190
- it('respects the initial set of URL parameters for a general search', async () => {
1191
- var _a, _b, _c, _d, _e, _f;
1192
- const url = new URL(window.location.href);
1193
- const { searchParams } = url;
1194
- searchParams.set('query', 'foo');
1195
- searchParams.set('sin', 'TXT');
1196
- searchParams.set('sort', 'title');
1197
- searchParams.append('not[]', 'mediatype:"data"');
1198
- searchParams.append('and[]', 'subject:"baz"');
1199
- searchParams.append('and[]', 'firstTitle:X');
1200
- searchParams.append('and[]', 'year:[2000 TO 2010]');
1201
- window.history.replaceState({}, '', url);
1202
- const searchService = new MockSearchService();
1203
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
1204
- </collection-browser>`);
1205
- await el.initialSearchComplete;
1206
- await el.updateComplete;
1207
- expect(el.baseQuery).to.equal('foo');
1208
- expect(el.searchType).to.equal(SearchType.FULLTEXT);
1209
- expect(el.selectedSort).to.equal(SortField.title);
1210
- expect((_c = (_b = (_a = el.selectedFacets) === null || _a === void 0 ? void 0 : _a.mediatype) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.state).to.equal('hidden');
1211
- expect((_f = (_e = (_d = el.selectedFacets) === null || _d === void 0 ? void 0 : _d.subject) === null || _e === void 0 ? void 0 : _e.baz) === null || _f === void 0 ? void 0 : _f.state).to.equal('selected');
1212
- expect(el.selectedTitleFilter).to.equal('X');
1213
- expect(el.minSelectedDate).to.equal('2000');
1214
- expect(el.maxSelectedDate).to.equal('2010');
1215
- });
1216
- it('respects the initial set of URL parameters within a collection', async () => {
1217
- var _a, _b, _c, _d, _e, _f;
1218
- const url = new URL(window.location.href);
1219
- const { searchParams } = url;
1220
- searchParams.set('query', 'foo');
1221
- searchParams.set('sin', 'TXT');
1222
- searchParams.set('sort', 'title');
1223
- searchParams.append('not[]', 'mediatype:"data"');
1224
- searchParams.append('and[]', 'subject:"baz"');
1225
- searchParams.append('and[]', 'firstTitle:X');
1226
- searchParams.append('and[]', 'year:[2000 TO 2010]');
1227
- window.history.replaceState({}, '', url);
1228
- const searchService = new MockSearchService();
1229
- const el = await fixture(html `<collection-browser
1230
- .searchService=${searchService}
1231
- .withinCollection=${'foobar'}
1232
- >
1233
- </collection-browser>`);
1234
- await el.initialSearchComplete;
1235
- await el.updateComplete;
1236
- expect(el.withinCollection).to.equal('foobar');
1237
- expect(el.baseQuery).to.equal('foo');
1238
- expect(el.searchType).to.equal(SearchType.FULLTEXT);
1239
- expect(el.selectedSort).to.equal(SortField.title);
1240
- expect((_c = (_b = (_a = el.selectedFacets) === null || _a === void 0 ? void 0 : _a.mediatype) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.state).to.equal('hidden');
1241
- expect((_f = (_e = (_d = el.selectedFacets) === null || _d === void 0 ? void 0 : _d.subject) === null || _e === void 0 ? void 0 : _e.baz) === null || _f === void 0 ? void 0 : _f.state).to.equal('selected');
1242
- expect(el.selectedTitleFilter).to.equal('X');
1243
- expect(el.minSelectedDate).to.equal('2000');
1244
- expect(el.maxSelectedDate).to.equal('2010');
1245
- });
1246
- it('respects the initial set of URL parameters within a profile page', async () => {
1247
- var _a, _b, _c, _d, _e, _f;
1248
- const url = new URL(window.location.href);
1249
- const { searchParams } = url;
1250
- searchParams.set('query', 'foo');
1251
- searchParams.append('not[]', 'mediatype:"data"');
1252
- searchParams.append('and[]', 'subject:"baz"');
1253
- searchParams.append('and[]', 'firstTitle:X');
1254
- searchParams.append('and[]', 'year:[2000 TO 2010]');
1255
- window.history.replaceState({}, '', url);
1256
- const searchService = new MockSearchService();
1257
- const el = await fixture(html `<collection-browser
1258
- .searchService=${searchService}
1259
- .withinProfile=${'@foobar'}
1260
- .profileElement=${'uploads'}
1261
- >
1262
- </collection-browser>`);
1263
- await el.initialSearchComplete;
1264
- await el.updateComplete;
1265
- expect(el.withinProfile).to.equal('@foobar');
1266
- expect(el.profileElement).to.equal('uploads');
1267
- expect(el.baseQuery).to.equal('foo');
1268
- expect(el.searchType).to.equal(SearchType.DEFAULT);
1269
- expect((_c = (_b = (_a = el.selectedFacets) === null || _a === void 0 ? void 0 : _a.mediatype) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.state).to.equal('hidden');
1270
- expect((_f = (_e = (_d = el.selectedFacets) === null || _d === void 0 ? void 0 : _d.subject) === null || _e === void 0 ? void 0 : _e.baz) === null || _f === void 0 ? void 0 : _f.state).to.equal('selected');
1271
- expect(el.selectedTitleFilter).to.equal('X');
1272
- expect(el.minSelectedDate).to.equal('2000');
1273
- expect(el.maxSelectedDate).to.equal('2010');
1274
- });
1275
- it('clears filters except sort when query changes for a general search', async () => {
1276
- var _a, _b, _c, _d;
1277
- const url = new URL(window.location.href);
1278
- const { searchParams } = url;
1279
- searchParams.set('query', 'foo');
1280
- searchParams.set('sin', 'TXT');
1281
- searchParams.set('sort', 'title');
1282
- searchParams.append('not[]', 'mediatype:"data"');
1283
- searchParams.append('and[]', 'subject:"baz"');
1284
- searchParams.append('and[]', 'firstTitle:X');
1285
- searchParams.append('and[]', 'year:[2000 TO 2010]');
1286
- window.history.replaceState({}, '', url);
1287
- const searchService = new MockSearchService();
1288
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
1289
- </collection-browser>`);
1290
- await el.initialSearchComplete;
1291
- await el.updateComplete;
1292
- el.baseQuery = 'bar';
1293
- await el.updateComplete;
1294
- expect(el.baseQuery).to.equal('bar');
1295
- expect(el.searchType).to.equal(SearchType.FULLTEXT);
1296
- expect(el.selectedSort).to.equal(SortField.title);
1297
- expect((_b = (_a = el.selectedFacets) === null || _a === void 0 ? void 0 : _a.mediatype) === null || _b === void 0 ? void 0 : _b.data).not.to.exist;
1298
- expect((_d = (_c = el.selectedFacets) === null || _c === void 0 ? void 0 : _c.subject) === null || _d === void 0 ? void 0 : _d.baz).not.to.exist;
1299
- expect(el.selectedTitleFilter).not.to.exist;
1300
- expect(el.minSelectedDate).not.to.exist;
1301
- expect(el.maxSelectedDate).not.to.exist;
1302
- });
1303
- it('clears filters except sort when query changes within a collection', async () => {
1304
- var _a, _b, _c, _d;
1305
- const url = new URL(window.location.href);
1306
- const { searchParams } = url;
1307
- searchParams.set('query', 'foo');
1308
- searchParams.set('sin', 'TXT');
1309
- searchParams.set('sort', 'title');
1310
- searchParams.append('not[]', 'mediatype:"data"');
1311
- searchParams.append('and[]', 'subject:"baz"');
1312
- searchParams.append('and[]', 'firstTitle:X');
1313
- searchParams.append('and[]', 'year:[2000 TO 2010]');
1314
- window.history.replaceState({}, '', url);
1315
- const searchService = new MockSearchService();
1316
- const el = await fixture(html `<collection-browser
1317
- .searchService=${searchService}
1318
- .withinCollection=${'foobar'}
1319
- >
1320
- </collection-browser>`);
1321
- el.baseQuery = 'bar';
1322
- await el.updateComplete;
1323
- expect(el.withinCollection).to.equal('foobar');
1324
- expect(el.baseQuery).to.equal('bar');
1325
- expect(el.searchType).to.equal(SearchType.FULLTEXT);
1326
- expect(el.selectedSort).to.equal(SortField.title);
1327
- expect((_b = (_a = el.selectedFacets) === null || _a === void 0 ? void 0 : _a.mediatype) === null || _b === void 0 ? void 0 : _b.data).not.to.exist;
1328
- expect((_d = (_c = el.selectedFacets) === null || _c === void 0 ? void 0 : _c.subject) === null || _d === void 0 ? void 0 : _d.baz).not.to.exist;
1329
- expect(el.selectedTitleFilter).not.to.exist;
1330
- expect(el.minSelectedDate).not.to.exist;
1331
- expect(el.maxSelectedDate).not.to.exist;
1332
- });
1333
- it('clears filters *including* sort when target collection changes', async () => {
1334
- var _a, _b, _c, _d;
1335
- const url = new URL(window.location.href);
1336
- const { searchParams } = url;
1337
- searchParams.set('query', 'foo');
1338
- searchParams.set('sin', 'TXT');
1339
- searchParams.set('sort', 'title');
1340
- searchParams.append('not[]', 'mediatype:"data"');
1341
- searchParams.append('and[]', 'subject:"baz"');
1342
- searchParams.append('and[]', 'firstTitle:X');
1343
- searchParams.append('and[]', 'year:[2000 TO 2010]');
1344
- window.history.replaceState({}, '', url);
1345
- const searchService = new MockSearchService();
1346
- const el = await fixture(html `<collection-browser
1347
- .searchService=${searchService}
1348
- .withinCollection=${'foobar'}
1349
- >
1350
- </collection-browser>`);
1351
- el.withinCollection = 'bar';
1352
- await el.updateComplete;
1353
- expect(el.withinCollection).to.equal('bar');
1354
- expect(el.baseQuery).to.equal('foo');
1355
- expect(el.searchType).to.equal(SearchType.FULLTEXT);
1356
- expect(el.selectedSort).to.equal(SortField.default);
1357
- expect((_b = (_a = el.selectedFacets) === null || _a === void 0 ? void 0 : _a.mediatype) === null || _b === void 0 ? void 0 : _b.data).not.to.exist;
1358
- expect((_d = (_c = el.selectedFacets) === null || _c === void 0 ? void 0 : _c.subject) === null || _d === void 0 ? void 0 : _d.baz).not.to.exist;
1359
- expect(el.selectedTitleFilter).not.to.exist;
1360
- expect(el.minSelectedDate).not.to.exist;
1361
- expect(el.maxSelectedDate).not.to.exist;
1362
- });
1363
- it('correctly retrieves web archive hits', async () => {
1364
- var _a, _b, _c;
1365
- const searchService = new MockSearchService();
1366
- const el = await fixture(html `<collection-browser
1367
- .searchService=${searchService}
1368
- .withinProfile=${'@foo'}
1369
- .profileElement=${'web_archives'}
1370
- >
1371
- </collection-browser>`);
1372
- el.baseQuery = 'web-archive';
1373
- await el.updateComplete;
1374
- await el.initialSearchComplete;
1375
- await nextTick();
1376
- console.log('\n\n*****\n\n*****\n\n', el.dataSource.getAllPages(), '\n\n*****\n\n*****\n\n');
1377
- expect(el.dataSource.totalResults, 'total results').to.equal(1);
1378
- expect((_a = el.dataSource.getTileModelAt(0)) === null || _a === void 0 ? void 0 : _a.title).to.equal('https://example.com');
1379
- expect((_c = (_b = el.dataSource.getTileModelAt(0)) === null || _b === void 0 ? void 0 : _b.captureDates) === null || _c === void 0 ? void 0 : _c.length, 'capture dates').to.equal(1);
1380
- });
1381
- it('shows dropdown accordion in facet sidebar when opt-in strategy is specified', async () => {
1382
- var _a;
1383
- const searchService = new MockSearchService();
1384
- const el = await fixture(html `<collection-browser
1385
- .searchService=${searchService}
1386
- facetLoadStrategy=${'opt-in'}
1387
- >
1388
- </collection-browser>`);
1389
- el.baseQuery = 'foo';
1390
- await el.updateComplete;
1391
- await el.initialSearchComplete;
1392
- const facetsDropdown = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.desktop-facets-dropdown');
1393
- expect(facetsDropdown).to.exist;
1394
- });
1395
- it('shows temporarily unavailable message when facets suppressed', async () => {
1396
- var _a, _b;
1397
- const searchService = new MockSearchService();
1398
- const el = await fixture(html `<collection-browser
1399
- .searchService=${searchService}
1400
- facetLoadStrategy=${'off'}
1401
- >
1402
- </collection-browser>`);
1403
- el.baseQuery = 'foo';
1404
- await el.updateComplete;
1405
- await el.initialSearchComplete;
1406
- const facetsMsg = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.facets-message');
1407
- expect(facetsMsg).to.exist;
1408
- expect((_b = facetsMsg === null || facetsMsg === void 0 ? void 0 : facetsMsg.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Facets are temporarily unavailable.');
1409
- });
1410
- it('shows manage bar interface instead of sort bar when in manage view', async () => {
1411
- var _a, _b, _c, _d;
1412
- const searchService = new MockSearchService();
1413
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
1414
- </collection-browser>`);
1415
- el.baseQuery = 'foo';
1416
- await el.updateComplete;
1417
- await el.initialSearchComplete;
1418
- el.isManageView = true;
1419
- await el.updateComplete;
1420
- expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('manage-bar')).to.exist;
1421
- expect((_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('sort-filter-bar')).not.to.exist;
1422
- el.isManageView = false;
1423
- await el.updateComplete;
1424
- expect((_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('manage-bar')).not.to.exist;
1425
- expect((_d = el.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('sort-filter-bar')).to.exist;
1426
- });
1427
- it('switches to grid display mode when manage view activated', async () => {
1428
- const searchService = new MockSearchService();
1429
- const el = await fixture(html `<collection-browser
1430
- .searchService=${searchService}
1431
- .baseQuery=${'foo'}
1432
- .displayMode=${'list-detail'}
1433
- >
1434
- </collection-browser>`);
1435
- el.isManageView = true;
1436
- await el.updateComplete;
1437
- expect(el.displayMode).to.equal('grid');
1438
- });
1439
- it('can remove all checked tiles', async () => {
1440
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
1441
- const searchService = new MockSearchService();
1442
- const el = await fixture(html `<collection-browser
1443
- .searchService=${searchService}
1444
- .baseNavigationUrl=${''}
1445
- >
1446
- </collection-browser>`);
1447
- el.baseQuery = 'foo';
1448
- el.pageSize = 1; // To hit the edge case of a page break while offsetting tiles
1449
- await el.updateComplete;
1450
- await el.initialSearchComplete;
1451
- el.isManageView = true;
1452
- await el.updateComplete;
1453
- const infiniteScroller = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('infinite-scroller');
1454
- expect(infiniteScroller).to.exist;
1455
- let tiles = (_b = infiniteScroller.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelectorAll('tile-dispatcher');
1456
- expect(tiles).to.exist;
1457
- expect(tiles === null || tiles === void 0 ? void 0 : tiles.length).to.equal(2);
1458
- const firstTile = tiles[0];
1459
- const firstTileLink = (_c = firstTile.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('a[href]');
1460
- expect((_d = firstTile.model) === null || _d === void 0 ? void 0 : _d.identifier).to.equal('foo');
1461
- expect(firstTileLink).to.exist;
1462
- // No effect if no tiles checked
1463
- el.removeCheckedTiles();
1464
- await el.updateComplete;
1465
- tiles = (_e = infiniteScroller.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelectorAll('tile-dispatcher');
1466
- expect(tiles).to.exist;
1467
- expect(tiles === null || tiles === void 0 ? void 0 : tiles.length).to.equal(2);
1468
- // Check the first tile
1469
- firstTileLink.click();
1470
- expect((_f = firstTile.model) === null || _f === void 0 ? void 0 : _f.checked).to.be.true;
1471
- // Remove checked tiles and verify that we only kept the second tile
1472
- el.removeCheckedTiles();
1473
- await el.updateComplete;
1474
- expect((_g = el === null || el === void 0 ? void 0 : el.dataSource) === null || _g === void 0 ? void 0 : _g.size, 'data source count').to.equal(1);
1475
- tiles = (_j = (_h = el.shadowRoot) === null || _h === void 0 ? void 0 : _h.querySelector('infinite-scroller').shadowRoot) === null || _j === void 0 ? void 0 : _j.querySelectorAll('tile-dispatcher');
1476
- expect(tiles).to.exist;
1477
- expect(tiles.length, 'tile count after `el.removeCheckedTiles()`').to.equal(1);
1478
- });
1479
- it('can check/uncheck all tiles', async () => {
1480
- const searchService = new MockSearchService();
1481
- const el = await fixture(html `<collection-browser
1482
- .searchService=${searchService}
1483
- .baseNavigationUrl=${''}
1484
- >
1485
- </collection-browser>`);
1486
- el.baseQuery = 'foo';
1487
- await el.updateComplete;
1488
- await el.initialSearchComplete;
1489
- el.isManageView = true;
1490
- await el.updateComplete;
1491
- expect(el.dataSource.checkedTileModels.length).to.equal(0);
1492
- expect(el.dataSource.uncheckedTileModels.length).to.equal(2);
1493
- el.dataSource.checkAllTiles();
1494
- expect(el.dataSource.checkedTileModels.length).to.equal(2);
1495
- expect(el.dataSource.uncheckedTileModels.length).to.equal(0);
1496
- el.dataSource.uncheckAllTiles();
1497
- expect(el.dataSource.checkedTileModels.length).to.equal(0);
1498
- expect(el.dataSource.uncheckedTileModels.length).to.equal(2);
1499
- });
1500
- it('emits event when manage view state changes', async () => {
1501
- var _a, _b;
1502
- const spy = sinon.spy();
1503
- const searchService = new MockSearchService();
1504
- const el = await fixture(html `<collection-browser
1505
- .searchService=${searchService}
1506
- .baseNavigationUrl=${''}
1507
- @manageModeChanged=${spy}
1508
- ></collection-browser>`);
1509
- el.isManageView = true;
1510
- await el.updateComplete;
1511
- expect(spy.callCount).to.equal(1);
1512
- expect((_a = spy.args[0][0]) === null || _a === void 0 ? void 0 : _a.detail).to.be.true;
1513
- el.isManageView = false;
1514
- await el.updateComplete;
1515
- expect(spy.callCount).to.equal(2);
1516
- expect((_b = spy.args[1][0]) === null || _b === void 0 ? void 0 : _b.detail).to.be.false;
1517
- });
1518
- it('emits event when item removal requested', async () => {
1519
- var _a, _b, _c, _d, _e;
1520
- const spy = sinon.spy();
1521
- const searchService = new MockSearchService();
1522
- const el = await fixture(html `<collection-browser
1523
- .searchService=${searchService}
1524
- .baseNavigationUrl=${''}
1525
- @itemRemovalRequested=${spy}
1526
- >
1527
- </collection-browser>`);
1528
- el.baseQuery = 'foo';
1529
- await el.updateComplete;
1530
- await el.initialSearchComplete;
1531
- el.isManageView = true;
1532
- await el.updateComplete;
1533
- const infiniteScroller = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('infinite-scroller');
1534
- expect(infiniteScroller).to.exist;
1535
- const tiles = (_b = infiniteScroller.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelectorAll('tile-dispatcher');
1536
- expect(tiles).to.exist.and.have.length(2);
1537
- const firstTile = tiles[0];
1538
- const firstTileLink = (_c = firstTile.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('a[href]');
1539
- expect((_d = firstTile.model) === null || _d === void 0 ? void 0 : _d.identifier).to.equal('foo');
1540
- expect(firstTileLink).to.exist;
1541
- // Check the first tile
1542
- firstTileLink.click();
1543
- await el.updateComplete;
1544
- const manageBar = (_e = el.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector('manage-bar');
1545
- expect(manageBar).to.exist;
1546
- // Emit remove event from manage bar
1547
- manageBar.dispatchEvent(new CustomEvent('removeItems'));
1548
- await el.updateComplete;
1549
- expect(spy.callCount).to.equal(1);
1550
- expect(spy.args[0].length).to.equal(1);
1551
- expect(spy.args[0][0].detail.items[0]).to.equal('foo');
1552
- });
1553
- it('disables manage view when manage bar cancelled', async () => {
1554
- var _a;
1555
- const searchService = new MockSearchService();
1556
- const el = await fixture(html `<collection-browser
1557
- .searchService=${searchService}
1558
- .baseNavigationUrl=${''}
1559
- >
1560
- </collection-browser>`);
1561
- el.baseQuery = 'foo';
1562
- await el.updateComplete;
1563
- await el.initialSearchComplete;
1564
- el.isManageView = true;
1565
- await el.updateComplete;
1566
- const manageBar = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('manage-bar');
1567
- expect(manageBar).to.exist;
1568
- // Emit remove event from manage bar
1569
- manageBar.dispatchEvent(new CustomEvent('cancel'));
1570
- await el.updateComplete;
1571
- expect(el.isManageView).to.be.false;
1572
- });
1573
- it('enable/disable manage view delete button when you selectAll/unselectAll', async () => {
1574
- var _a, _b, _c, _d;
1575
- const searchService = new MockSearchService();
1576
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
1577
- </collection-browser>`);
1578
- el.baseQuery = 'foo';
1579
- await el.updateComplete;
1580
- await el.initialSearchComplete;
1581
- el.isManageView = true;
1582
- await el.updateComplete;
1583
- const manageBar = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('manage-bar');
1584
- expect(manageBar).to.exist;
1585
- // disable button exists
1586
- expect((_b = manageBar === null || manageBar === void 0 ? void 0 : manageBar.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.danger:disabled')).to.be
1587
- .exist;
1588
- // Emit remove event from manage bar
1589
- manageBar.dispatchEvent(new CustomEvent('selectAll'));
1590
- await el.updateComplete;
1591
- // disable button does not exists
1592
- expect((_c = manageBar === null || manageBar === void 0 ? void 0 : manageBar.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.danger:disabled')).to.be.not
1593
- .exist;
1594
- // Emit remove event from manage bar
1595
- manageBar.dispatchEvent(new CustomEvent('unselectAll'));
1596
- await el.updateComplete;
1597
- // disable button exists again
1598
- expect((_d = manageBar === null || manageBar === void 0 ? void 0 : manageBar.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('.danger:disabled')).to.be
1599
- .exist;
1600
- });
1601
- it('shows Blurring checkbox for admin users', async () => {
1602
- var _a;
1603
- const searchService = new MockSearchService();
1604
- const el = await fixture(html `<collection-browser
1605
- .baseNavigationUrl=${''}
1606
- .searchService=${searchService}
1607
- >
1608
- </collection-browser>`);
1609
- el.baseQuery = 'archive-org-user-loggedin';
1610
- await el.updateComplete;
1611
- await el.initialSearchComplete;
1612
- const blurringCheck = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#tile-blur-check');
1613
- expect(blurringCheck).to.exist;
1614
- expect(blurringCheck.checked).to.be.true;
1615
- });
1616
- it('unchecks Blurring checkbox for admin users with blurring preference off', async () => {
1617
- var _a;
1618
- const searchService = new MockSearchService();
1619
- const el = await fixture(html `<collection-browser
1620
- .baseNavigationUrl=${''}
1621
- .searchService=${searchService}
1622
- >
1623
- </collection-browser>`);
1624
- el.baseQuery = 'archive-org-user-loggedin-noblur';
1625
- await el.updateComplete;
1626
- await el.initialSearchComplete;
1627
- const blurringCheck = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#tile-blur-check');
1628
- expect(blurringCheck).to.exist;
1629
- expect(blurringCheck.checked).to.be.false;
1630
- });
1631
- it('toggles blur state when Blurring checkbox is toggled', async () => {
1632
- var _a, _b, _c;
1633
- const searchService = new MockSearchService();
1634
- const el = await fixture(html `<collection-browser
1635
- .baseNavigationUrl=${''}
1636
- .searchService=${searchService}
1637
- >
1638
- </collection-browser>`);
1639
- el.baseQuery = 'archive-org-user-loggedin';
1640
- await el.updateComplete;
1641
- await el.initialSearchComplete;
1642
- const blurringCheck = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#tile-blur-check');
1643
- expect(blurringCheck).to.exist;
1644
- blurringCheck.dispatchEvent(new PointerEvent('click'));
1645
- await el.updateComplete;
1646
- const infiniteScroller = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('infinite-scroller');
1647
- const firstTile = (_c = infiniteScroller === null || infiniteScroller === void 0 ? void 0 : infiniteScroller.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('tile-dispatcher');
1648
- expect(firstTile.suppressBlurring).to.be.true;
1649
- });
1650
- it('applies loans tab properties to sort bar', async () => {
1651
- var _a;
1652
- const searchService = new MockSearchService();
1653
- const el = await fixture(html `<collection-browser
1654
- .baseNavigationUrl=${''}
1655
- .searchService=${searchService}
1656
- .enableSortOptionsSlot=${true}
1657
- >
1658
- </collection-browser>`);
1659
- el.baseQuery = 'collection:foo';
1660
- await el.updateComplete;
1661
- await aTimeout(10);
1662
- const sortBar = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('sort-filter-bar');
1663
- expect(sortBar === null || sortBar === void 0 ? void 0 : sortBar.enableSortOptionsSlot, 'show loans in sort bar').to.be.true;
1664
- expect(el.enableSortOptionsSlot, 'collection browser is loans tab').to.be
1665
- .true;
1666
- const loansTabSlot = sortBar.querySelector('slot[name="sort-options"]');
1667
- expect(loansTabSlot).to.exist;
1668
- });
1669
- it('can suppress presence of result count', async () => {
1670
- var _a;
1671
- const searchService = new MockSearchService();
1672
- const el = await fixture(html `<collection-browser
1673
- .searchService=${searchService}
1674
- suppressResultCount
1675
- ></collection-browser>`);
1676
- el.baseQuery = 'collection:foo';
1677
- await el.updateComplete;
1678
- await el.initialSearchComplete;
1679
- const resultCount = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#results-total');
1680
- expect(resultCount).not.to.exist;
1681
- });
1682
- it('can suppress presence of result tiles', async () => {
1683
- var _a;
1684
- const searchService = new MockSearchService();
1685
- const el = await fixture(html `<collection-browser
1686
- .searchService=${searchService}
1687
- suppressResultTiles
1688
- ></collection-browser>`);
1689
- el.baseQuery = 'collection:foo';
1690
- await el.updateComplete;
1691
- const infiniteScroller = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('infinite-scroller');
1692
- expect(infiniteScroller).not.to.exist;
1693
- });
1694
- it('fetch larger result on search page for admin user to manage items', async () => {
1695
- const resultsSpy = sinon.spy();
1696
- const searchService = new MockSearchService({
1697
- asyncResponse: true,
1698
- resultsSpy,
1699
- });
1700
- const el = await fixture(html `<collection-browser .searchService=${searchService}>
1701
- </collection-browser>`);
1702
- const numberOfPages = 15;
1703
- el.baseQuery = 'jack';
1704
- el.isManageView = true;
1705
- await el.dataSource.fetchPage(1, numberOfPages);
1706
- await el.updateComplete;
1707
- const initialResults = el.dataSource.getAllPages();
1708
- expect(Object.keys(initialResults).length).to.deep.equal(numberOfPages);
1709
- });
1710
- });
1711
- //# sourceMappingURL=collection-browser.test.js.map