@internetarchive/collection-browser 1.14.17-beta.5 → 1.14.18-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (352) hide show
  1. package/.editorconfig +29 -29
  2. package/.husky/pre-commit +4 -4
  3. package/LICENSE +661 -661
  4. package/README.md +83 -83
  5. package/dist/index.d.ts +12 -11
  6. package/dist/index.js +12 -11
  7. package/dist/index.js.map +1 -1
  8. package/dist/src/app-root.d.ts +83 -83
  9. package/dist/src/app-root.js +438 -489
  10. package/dist/src/app-root.js.map +1 -1
  11. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  12. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  13. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  14. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  15. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  16. package/dist/src/assets/img/icons/chevron.js +2 -2
  17. package/dist/src/assets/img/icons/contract.d.ts +2 -2
  18. package/dist/src/assets/img/icons/contract.js +2 -2
  19. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  20. package/dist/src/assets/img/icons/empty-query.js +2 -2
  21. package/dist/src/assets/img/icons/expand.d.ts +2 -2
  22. package/dist/src/assets/img/icons/expand.js +2 -2
  23. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  24. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  25. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  26. package/dist/src/assets/img/icons/eye.js +2 -2
  27. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  28. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  29. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  30. package/dist/src/assets/img/icons/login-required.js +2 -2
  31. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  32. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  33. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  34. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  35. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  36. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  37. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  38. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  39. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  40. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  41. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  42. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  43. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  44. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  45. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  46. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  47. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
  48. package/dist/src/assets/img/icons/mediatype/search.js +2 -2
  49. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  50. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  51. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  52. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  53. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  54. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  55. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  56. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  57. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  58. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  59. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  60. package/dist/src/assets/img/icons/null-result.js +2 -2
  61. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  62. package/dist/src/assets/img/icons/restricted.js +2 -2
  63. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  64. package/dist/src/assets/img/icons/reviews.js +2 -2
  65. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  66. package/dist/src/assets/img/icons/upload.js +2 -2
  67. package/dist/src/assets/img/icons/views.d.ts +1 -1
  68. package/dist/src/assets/img/icons/views.js +2 -2
  69. package/dist/src/circular-activity-indicator.d.ts +5 -5
  70. package/dist/src/circular-activity-indicator.js +17 -17
  71. package/dist/src/collection-browser.d.ts +384 -406
  72. package/dist/src/collection-browser.js +1342 -1363
  73. package/dist/src/collection-browser.js.map +1 -1
  74. package/dist/src/collection-facets/facet-row.d.ts +30 -30
  75. package/dist/src/collection-facets/facet-row.js +114 -114
  76. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  77. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  78. package/dist/src/collection-facets/facets-template.d.ts +17 -17
  79. package/dist/src/collection-facets/facets-template.js +114 -114
  80. package/dist/src/collection-facets/more-facets-content.d.ts +70 -70
  81. package/dist/src/collection-facets/more-facets-content.js +354 -369
  82. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  83. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  84. package/dist/src/collection-facets/more-facets-pagination.js +196 -196
  85. package/dist/src/collection-facets/toggle-switch.d.ts +41 -41
  86. package/dist/src/collection-facets/toggle-switch.js +94 -94
  87. package/dist/src/collection-facets.d.ts +103 -103
  88. package/dist/src/collection-facets.js +513 -510
  89. package/dist/src/collection-facets.js.map +1 -1
  90. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +217 -0
  91. package/dist/src/data-source/collection-browser-data-source-interface.js +2 -0
  92. package/dist/src/data-source/collection-browser-data-source-interface.js.map +1 -0
  93. package/dist/src/data-source/collection-browser-data-source.d.ts +352 -434
  94. package/dist/src/data-source/collection-browser-data-source.js +911 -800
  95. package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
  96. package/dist/src/data-source/collection-browser-query-state.d.ts +43 -0
  97. package/dist/src/data-source/collection-browser-query-state.js +2 -0
  98. package/dist/src/data-source/collection-browser-query-state.js.map +1 -0
  99. package/dist/src/data-source/models.d.ts +28 -62
  100. package/dist/src/data-source/models.js +8 -1
  101. package/dist/src/data-source/models.js.map +1 -1
  102. package/dist/src/empty-placeholder.d.ts +23 -23
  103. package/dist/src/empty-placeholder.js +74 -74
  104. package/dist/src/expanded-date-picker.d.ts +43 -43
  105. package/dist/src/expanded-date-picker.js +109 -109
  106. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  107. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  108. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  109. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  110. package/dist/src/manage/manage-bar.d.ts +26 -26
  111. package/dist/src/manage/manage-bar.js +53 -53
  112. package/dist/src/manage/manage-bar.js.map +1 -1
  113. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  114. package/dist/src/mediatype/mediatype-config.js +91 -91
  115. package/dist/src/models.d.ts +197 -180
  116. package/dist/src/models.js +380 -269
  117. package/dist/src/models.js.map +1 -1
  118. package/dist/src/restoration-state-handler.d.ts +70 -70
  119. package/dist/src/restoration-state-handler.js +355 -355
  120. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  121. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  122. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
  123. package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
  124. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  125. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  126. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  127. package/dist/src/sort-filter-bar/img/list.js +2 -2
  128. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  129. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
  130. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  131. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
  132. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  133. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
  134. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  135. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  136. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  137. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  138. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +210 -210
  139. package/dist/src/sort-filter-bar/sort-filter-bar.js +653 -652
  140. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  141. package/dist/src/styles/item-image-styles.d.ts +8 -8
  142. package/dist/src/styles/item-image-styles.js +9 -9
  143. package/dist/src/styles/sr-only.d.ts +1 -1
  144. package/dist/src/styles/sr-only.js +2 -2
  145. package/dist/src/tiles/base-tile-component.d.ts +19 -19
  146. package/dist/src/tiles/base-tile-component.js +63 -63
  147. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  148. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  149. package/dist/src/tiles/grid/account-tile.d.ts +18 -18
  150. package/dist/src/tiles/grid/account-tile.js +72 -72
  151. package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
  152. package/dist/src/tiles/grid/collection-tile.js +80 -80
  153. package/dist/src/tiles/grid/item-tile.d.ts +28 -27
  154. package/dist/src/tiles/grid/item-tile.js +162 -135
  155. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  156. package/dist/src/tiles/grid/search-tile.d.ts +10 -10
  157. package/dist/src/tiles/grid/search-tile.js +51 -51
  158. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  159. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
  160. package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
  161. package/dist/src/tiles/grid/tile-stats.js +58 -53
  162. package/dist/src/tiles/grid/tile-stats.js.map +1 -1
  163. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  164. package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
  165. package/dist/src/tiles/hover/tile-hover-pane.d.ts +15 -15
  166. package/dist/src/tiles/hover/tile-hover-pane.js +38 -38
  167. package/dist/src/tiles/image-block.d.ts +17 -17
  168. package/dist/src/tiles/image-block.js +73 -73
  169. package/dist/src/tiles/item-image.d.ts +39 -36
  170. package/dist/src/tiles/item-image.js +155 -127
  171. package/dist/src/tiles/item-image.js.map +1 -1
  172. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
  173. package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
  174. package/dist/src/tiles/list/tile-list-compact.d.ts +15 -15
  175. package/dist/src/tiles/list/tile-list-compact.js +115 -115
  176. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  177. package/dist/src/tiles/list/tile-list.d.ts +47 -46
  178. package/dist/src/tiles/list/tile-list.js +327 -296
  179. package/dist/src/tiles/list/tile-list.js.map +1 -1
  180. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  181. package/dist/src/tiles/mediatype-icon.js +47 -47
  182. package/dist/src/tiles/overlay/icon-overlay.d.ts +10 -10
  183. package/dist/src/tiles/overlay/icon-overlay.js +40 -40
  184. package/dist/src/tiles/overlay/icon-text-overlay.d.ts +9 -9
  185. package/dist/src/tiles/overlay/icon-text-overlay.js +38 -38
  186. package/dist/src/tiles/overlay/text-overlay.d.ts +10 -10
  187. package/dist/src/tiles/overlay/text-overlay.js +42 -42
  188. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  189. package/dist/src/tiles/text-snippet-block.js +73 -73
  190. package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
  191. package/dist/src/tiles/tile-dispatcher.js +232 -231
  192. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  193. package/dist/src/tiles/tile-display-value-provider.d.ts +47 -43
  194. package/dist/src/tiles/tile-display-value-provider.js +94 -80
  195. package/dist/src/tiles/tile-display-value-provider.js.map +1 -1
  196. package/dist/src/utils/analytics-events.d.ts +25 -25
  197. package/dist/src/utils/analytics-events.js +27 -27
  198. package/dist/src/utils/array-equals.d.ts +4 -4
  199. package/dist/src/utils/array-equals.js +10 -10
  200. package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -0
  201. package/dist/src/utils/collapse-repeated-quotes.js +14 -0
  202. package/dist/src/utils/collapse-repeated-quotes.js.map +1 -0
  203. package/dist/src/utils/format-count.d.ts +7 -7
  204. package/dist/src/utils/format-count.js +76 -76
  205. package/dist/src/utils/format-date.d.ts +2 -2
  206. package/dist/src/utils/format-date.js +25 -25
  207. package/dist/src/utils/format-unit-size.d.ts +2 -2
  208. package/dist/src/utils/format-unit-size.js +33 -33
  209. package/dist/src/utils/local-date-from-utc.d.ts +9 -9
  210. package/dist/src/utils/local-date-from-utc.js +15 -15
  211. package/dist/src/utils/log.d.ts +7 -0
  212. package/dist/src/utils/log.js +16 -0
  213. package/dist/src/utils/log.js.map +1 -0
  214. package/dist/src/utils/resolve-mediatype.d.ts +8 -0
  215. package/dist/src/utils/resolve-mediatype.js +24 -0
  216. package/dist/src/utils/resolve-mediatype.js.map +1 -0
  217. package/dist/src/utils/sha1.d.ts +2 -2
  218. package/dist/src/utils/sha1.js +8 -8
  219. package/dist/test/collection-browser.test.d.ts +1 -1
  220. package/dist/test/collection-browser.test.js +1211 -1149
  221. package/dist/test/collection-browser.test.js.map +1 -1
  222. package/dist/test/collection-facets/facet-row.test.d.ts +1 -1
  223. package/dist/test/collection-facets/facet-row.test.js +203 -203
  224. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  225. package/dist/test/collection-facets/facets-template.test.js +105 -105
  226. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  227. package/dist/test/collection-facets/more-facets-content.test.js +133 -133
  228. package/dist/test/collection-facets/more-facets-content.test.js.map +1 -1
  229. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  230. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  231. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
  232. package/dist/test/collection-facets/toggle-switch.test.js +73 -73
  233. package/dist/test/collection-facets.test.d.ts +2 -2
  234. package/dist/test/collection-facets.test.js +653 -648
  235. package/dist/test/collection-facets.test.js.map +1 -1
  236. package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -0
  237. package/dist/test/data-source/collection-browser-data-source.test.js +80 -0
  238. package/dist/test/data-source/collection-browser-data-source.test.js.map +1 -0
  239. package/dist/test/empty-placeholder.test.d.ts +1 -1
  240. package/dist/test/empty-placeholder.test.js +63 -63
  241. package/dist/test/expanded-date-picker.test.d.ts +1 -1
  242. package/dist/test/expanded-date-picker.test.js +95 -95
  243. package/dist/test/icon-overlay.test.d.ts +1 -1
  244. package/dist/test/icon-overlay.test.js +24 -24
  245. package/dist/test/image-block.test.d.ts +1 -1
  246. package/dist/test/image-block.test.js +48 -48
  247. package/dist/test/item-image.test.d.ts +1 -1
  248. package/dist/test/item-image.test.js +85 -86
  249. package/dist/test/item-image.test.js.map +1 -1
  250. package/dist/test/manage/manage-bar.test.d.ts +1 -1
  251. package/dist/test/manage/manage-bar.test.js +72 -72
  252. package/dist/test/mediatype-config.test.d.ts +1 -1
  253. package/dist/test/mediatype-config.test.js +16 -16
  254. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  255. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  256. package/dist/test/mocks/mock-search-responses.d.ts +24 -21
  257. package/dist/test/mocks/mock-search-responses.js +840 -709
  258. package/dist/test/mocks/mock-search-responses.js.map +1 -1
  259. package/dist/test/mocks/mock-search-service.d.ts +15 -15
  260. package/dist/test/mocks/mock-search-service.js +53 -50
  261. package/dist/test/mocks/mock-search-service.js.map +1 -1
  262. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  263. package/dist/test/restoration-state-handler.test.js +270 -270
  264. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  265. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  266. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  267. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  268. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  269. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +418 -418
  270. package/dist/test/text-overlay.test.d.ts +1 -1
  271. package/dist/test/text-overlay.test.js +48 -48
  272. package/dist/test/text-snippet-block.test.d.ts +1 -1
  273. package/dist/test/text-snippet-block.test.js +57 -57
  274. package/dist/test/tile-stats.test.d.ts +1 -1
  275. package/dist/test/tile-stats.test.js +95 -33
  276. package/dist/test/tile-stats.test.js.map +1 -1
  277. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  278. package/dist/test/tiles/grid/account-tile.test.js +76 -76
  279. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  280. package/dist/test/tiles/grid/collection-tile.test.js +73 -73
  281. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  282. package/dist/test/tiles/grid/item-tile.test.js +298 -254
  283. package/dist/test/tiles/grid/item-tile.test.js.map +1 -1
  284. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
  285. package/dist/test/tiles/grid/search-tile.test.js +51 -51
  286. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  287. package/dist/test/tiles/hover/hover-pane-controller.test.js +259 -258
  288. package/dist/test/tiles/hover/hover-pane-controller.test.js.map +1 -1
  289. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  290. package/dist/test/tiles/hover/tile-hover-pane.test.js +13 -13
  291. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  292. package/dist/test/tiles/list/tile-list-compact.test.js +143 -143
  293. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  294. package/dist/test/tiles/list/tile-list.test.js +283 -239
  295. package/dist/test/tiles/list/tile-list.test.js.map +1 -1
  296. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  297. package/dist/test/tiles/tile-dispatcher.test.js +106 -94
  298. package/dist/test/tiles/tile-dispatcher.test.js.map +1 -1
  299. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
  300. package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
  301. package/dist/test/utils/array-equals.test.d.ts +1 -1
  302. package/dist/test/utils/array-equals.test.js +26 -26
  303. package/dist/test/utils/format-count.test.d.ts +1 -1
  304. package/dist/test/utils/format-count.test.js +23 -23
  305. package/dist/test/utils/format-date.test.d.ts +1 -1
  306. package/dist/test/utils/format-date.test.js +17 -17
  307. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  308. package/dist/test/utils/format-unit-size.test.js +17 -17
  309. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
  310. package/dist/test/utils/local-date-from-utc.test.js +26 -26
  311. package/index.ts +3 -5
  312. package/local.archive.org.cert +86 -86
  313. package/local.archive.org.key +27 -27
  314. package/package.json +3 -4
  315. package/renovate.json +6 -6
  316. package/src/app-root.ts +30 -85
  317. package/src/collection-browser.ts +112 -139
  318. package/src/collection-facets/more-facets-content.ts +0 -19
  319. package/src/collection-facets.ts +6 -4
  320. package/src/data-source/collection-browser-data-source-interface.ts +272 -0
  321. package/src/data-source/collection-browser-data-source.ts +314 -379
  322. package/src/data-source/collection-browser-query-state.ts +54 -0
  323. package/src/data-source/models.ts +8 -45
  324. package/src/manage/manage-bar.ts +1 -1
  325. package/src/models.ts +164 -3
  326. package/src/sort-filter-bar/sort-filter-bar.ts +2 -1
  327. package/src/tiles/grid/item-tile.ts +36 -1
  328. package/src/tiles/grid/tile-stats.ts +12 -7
  329. package/src/tiles/item-image.ts +28 -0
  330. package/src/tiles/list/tile-list-compact.ts +1 -1
  331. package/src/tiles/list/tile-list.ts +43 -5
  332. package/src/tiles/tile-dispatcher.ts +2 -1
  333. package/src/tiles/tile-display-value-provider.ts +20 -2
  334. package/src/utils/collapse-repeated-quotes.ts +13 -0
  335. package/src/utils/log.ts +16 -0
  336. package/src/utils/resolve-mediatype.ts +26 -0
  337. package/test/collection-browser.test.ts +161 -50
  338. package/test/collection-facets/more-facets-content.test.ts +4 -2
  339. package/test/collection-facets.test.ts +5 -0
  340. package/test/data-source/collection-browser-data-source.test.ts +103 -0
  341. package/test/item-image.test.ts +34 -36
  342. package/test/mocks/mock-search-responses.ts +144 -0
  343. package/test/mocks/mock-search-service.ts +6 -0
  344. package/test/tile-stats.test.ts +104 -0
  345. package/test/tiles/grid/item-tile.test.ts +55 -0
  346. package/test/tiles/hover/hover-pane-controller.test.ts +19 -17
  347. package/test/tiles/list/tile-list.test.ts +55 -0
  348. package/test/tiles/tile-dispatcher.test.ts +13 -0
  349. package/tsconfig.json +21 -21
  350. package/web-dev-server.config.mjs +30 -30
  351. package/web-test-runner.config.mjs +41 -41
  352. package/types/sentry.d.ts +0 -1
@@ -1,68 +1,68 @@
1
- import { __decorate } from "tslib";
2
- import { LitElement, html, css, nothing, } from 'lit';
3
- import { customElement, property, query, state } from 'lit/decorators.js';
4
- import '@internetarchive/ia-dropdown';
5
- import { SORT_OPTIONS, SortField, } from '../models';
6
- import './alpha-bar';
7
- import { sortUpIcon } from './img/sort-toggle-up';
8
- import { sortDownIcon } from './img/sort-toggle-down';
9
- import { sortDisabledIcon } from './img/sort-toggle-disabled';
10
- import { tileIcon } from './img/tile';
11
- import { listIcon } from './img/list';
12
- import { compactIcon } from './img/compact';
13
- import { srOnlyStyle } from '../styles/sr-only';
14
- let SortFilterBar = class SortFilterBar extends LitElement {
15
- constructor() {
16
- super(...arguments);
17
- /** The default sort direction to use if none is set */
18
- this.defaultSortDirection = null;
19
- /** The default sort field to use if none is set */
20
- this.defaultSortField = SortField.relevance;
21
- /** The current sort direction (asc/desc), or null if none is set */
22
- this.sortDirection = null;
23
- /** The field currently being sorted on (e.g., 'title'). Defaults to relevance. */
24
- this.selectedSort = SortField.default;
25
- /** The currently selected title letter filter, or null if none is set */
26
- this.selectedTitleFilter = null;
27
- /** The currently selected creator letter filter, or null if none is set */
28
- this.selectedCreatorFilter = null;
29
- /** Whether to show the Relevance sort option (default `true`) */
30
- this.showRelevance = true;
31
- /** Whether to show the Date Favorited sort option instead of Date Published/Archived/Reviewed (default `false`) */
32
- this.showDateFavorited = false;
33
- /** Whether to show the Loans filter for ProfilePage (default `false`) */
34
- this.showLoansTopBar = false;
35
- /**
36
- * Which of the alphabet bars (title/creator) should be shown, or null if one
37
- * should not currently be rendered.
38
- */
39
- this.alphaSelectorVisible = null;
40
- /**
41
- * Whether the transparent backdrop to catch clicks outside the dropdown menu
42
- * should be rendered.
43
- */
44
- this.dropdownBackdropVisible = false;
45
- /**
46
- * The width of the desktop view sort option container, updated upon each resize.
47
- * Used for dynamically determining whether to use desktop or mobile view.
48
- */
49
- this.desktopSortContainerWidth = 0;
50
- /**
51
- * The width of the full sort bar, updated upon each resize.
52
- * Used for dynamically determining whether to use desktop or mobile view.
53
- */
54
- this.selectorBarContainerWidth = 0;
55
- this.boundSortBarSelectorEscapeListener = (e) => {
56
- if (e.key === 'Escape') {
57
- this.closeDropdowns();
58
- }
59
- };
60
- }
61
- render() {
1
+ import { __decorate } from "tslib";
2
+ import { LitElement, html, css, nothing, } from 'lit';
3
+ import { customElement, property, query, state } from 'lit/decorators.js';
4
+ import '@internetarchive/ia-dropdown';
5
+ import { SORT_OPTIONS, SortField, } from '../models';
6
+ import './alpha-bar';
7
+ import { sortUpIcon } from './img/sort-toggle-up';
8
+ import { sortDownIcon } from './img/sort-toggle-down';
9
+ import { sortDisabledIcon } from './img/sort-toggle-disabled';
10
+ import { tileIcon } from './img/tile';
11
+ import { listIcon } from './img/list';
12
+ import { compactIcon } from './img/compact';
13
+ import { srOnlyStyle } from '../styles/sr-only';
14
+ let SortFilterBar = class SortFilterBar extends LitElement {
15
+ constructor() {
16
+ super(...arguments);
17
+ /** The default sort direction to use if none is set */
18
+ this.defaultSortDirection = null;
19
+ /** The default sort field to use if none is set */
20
+ this.defaultSortField = SortField.relevance;
21
+ /** The current sort direction (asc/desc), or null if none is set */
22
+ this.sortDirection = null;
23
+ /** The field currently being sorted on (e.g., 'title'). Defaults to relevance. */
24
+ this.selectedSort = SortField.default;
25
+ /** The currently selected title letter filter, or null if none is set */
26
+ this.selectedTitleFilter = null;
27
+ /** The currently selected creator letter filter, or null if none is set */
28
+ this.selectedCreatorFilter = null;
29
+ /** Whether to show the Relevance sort option (default `true`) */
30
+ this.showRelevance = true;
31
+ /** Whether to show the Date Favorited sort option instead of Date Published/Archived/Reviewed (default `false`) */
32
+ this.showDateFavorited = false;
33
+ /** Whether to show the Loans filter for ProfilePage (default `false`) */
34
+ this.showLoansTopBar = false;
35
+ /**
36
+ * Which of the alphabet bars (title/creator) should be shown, or null if one
37
+ * should not currently be rendered.
38
+ */
39
+ this.alphaSelectorVisible = null;
40
+ /**
41
+ * Whether the transparent backdrop to catch clicks outside the dropdown menu
42
+ * should be rendered.
43
+ */
44
+ this.dropdownBackdropVisible = false;
45
+ /**
46
+ * The width of the desktop view sort option container, updated upon each resize.
47
+ * Used for dynamically determining whether to use desktop or mobile view.
48
+ */
49
+ this.desktopSortContainerWidth = 0;
50
+ /**
51
+ * The width of the full sort bar, updated upon each resize.
52
+ * Used for dynamically determining whether to use desktop or mobile view.
53
+ */
54
+ this.selectorBarContainerWidth = 0;
55
+ this.boundSortBarSelectorEscapeListener = (e) => {
56
+ if (e.key === 'Escape') {
57
+ this.closeDropdowns();
58
+ }
59
+ };
60
+ }
61
+ render() {
62
62
  return html `
63
63
  <div id="container">
64
64
  <section id="sort-bar" aria-label="Sorting options">
65
- ${!this.showLoansTopBar
65
+ ${!this.showLoansTopBar
66
66
  ? html `
67
67
  <slot name="sortbar-left-slot"></slot>
68
68
  <div class="sort-direction-container">
@@ -73,7 +73,7 @@ let SortFilterBar = class SortFilterBar extends LitElement {
73
73
  ${this.mobileSortSelectorTemplate}
74
74
  ${this.desktopSortSelectorTemplate}
75
75
  </div>
76
- `
76
+ `
77
77
  : html `<slot name="loans-tab-filter-bar-options-slot"></slot>`}
78
78
 
79
79
  <div id="display-style-selector">${this.displayOptionTemplate}</div>
@@ -82,114 +82,114 @@ let SortFilterBar = class SortFilterBar extends LitElement {
82
82
  ${this.dropdownBackdropVisible ? this.dropdownBackdrop : nothing}
83
83
  ${this.alphaBarTemplate}
84
84
  </div>
85
- `;
86
- }
87
- updated(changed) {
88
- if (changed.has('displayMode')) {
89
- this.displayModeChanged();
90
- }
91
- if (changed.has('selectedSort') && this.sortDirection === null) {
92
- const sortOption = SORT_OPTIONS[this.finalizedSortField];
93
- this.sortDirection = sortOption.defaultSortDirection;
94
- }
95
- if (changed.has('selectedTitleFilter') && this.selectedTitleFilter) {
96
- this.alphaSelectorVisible = 'title';
97
- }
98
- if (changed.has('selectedCreatorFilter') && this.selectedCreatorFilter) {
99
- this.alphaSelectorVisible = 'creator';
100
- }
101
- if (changed.has('dropdownBackdropVisible')) {
102
- this.setupEscapeListeners();
103
- }
104
- if (changed.has('resizeObserver')) {
105
- const oldObserver = changed.get('resizeObserver');
106
- if (oldObserver)
107
- this.disconnectResizeObserver(oldObserver);
108
- this.setupResizeObserver();
109
- }
110
- }
111
- setupEscapeListeners() {
112
- if (this.dropdownBackdropVisible) {
113
- document.addEventListener('keydown', this.boundSortBarSelectorEscapeListener);
114
- }
115
- else {
116
- document.removeEventListener('keydown', this.boundSortBarSelectorEscapeListener);
117
- }
118
- }
119
- disconnectedCallback() {
120
- if (this.resizeObserver) {
121
- this.disconnectResizeObserver(this.resizeObserver);
122
- }
123
- }
124
- disconnectResizeObserver(resizeObserver) {
125
- if (this.sortSelectorContainer) {
126
- resizeObserver.removeObserver({
127
- target: this.sortSelectorContainer,
128
- handler: this,
129
- });
130
- }
131
- if (this.desktopSortContainer) {
132
- resizeObserver.removeObserver({
133
- target: this.desktopSortContainer,
134
- handler: this,
135
- });
136
- }
137
- }
138
- setupResizeObserver() {
139
- if (!this.resizeObserver)
140
- return;
141
- if (this.sortSelectorContainer) {
142
- this.resizeObserver.addObserver({
143
- target: this.sortSelectorContainer,
144
- handler: this,
145
- });
146
- }
147
- if (this.desktopSortContainer) {
148
- this.resizeObserver.addObserver({
149
- target: this.desktopSortContainer,
150
- handler: this,
151
- });
152
- }
153
- }
154
- handleResize(entry) {
155
- if (entry.target === this.desktopSortContainer) {
156
- this.desktopSortContainerWidth = entry.contentRect.width;
157
- }
158
- else if (entry.target === this.sortSelectorContainer) {
159
- this.selectorBarContainerWidth = entry.contentRect.width;
160
- }
161
- }
162
- /**
163
- * Whether to show the mobile sort bar because there is not enough space
164
- * for the desktop sort bar.
165
- */
166
- get mobileSelectorVisible() {
167
- return this.selectorBarContainerWidth - 10 < this.desktopSortContainerWidth;
168
- }
169
- /**
170
- * Template to render the alphabet bar, or `nothing` if it should not be rendered
171
- * for the current sort
172
- */
173
- get alphaBarTemplate() {
174
- if (!['title', 'creator'].includes(this.selectedSort))
175
- return nothing;
176
- if (this.alphaSelectorVisible === null) {
177
- if (this.selectedSort === 'creator')
178
- return this.creatorSelectorBar;
179
- if (this.selectedSort === 'title')
180
- return this.titleSelectorBar;
181
- }
182
- else {
183
- return this.alphaSelectorVisible === 'creator'
184
- ? this.creatorSelectorBar
185
- : this.titleSelectorBar;
186
- }
187
- return nothing;
188
- }
189
- /** Template to render the sort direction toggle button */
190
- get sortDirectionSelectorTemplate() {
191
- const oppositeSortDirectionReadable = this.sortDirection === 'asc' ? 'descending' : 'ascending';
192
- const srLabel = `Change to ${oppositeSortDirectionReadable} sort`;
85
+ `;
86
+ }
87
+ updated(changed) {
88
+ if (changed.has('displayMode')) {
89
+ this.displayModeChanged();
90
+ }
91
+ if (changed.has('selectedSort') && this.sortDirection === null) {
92
+ const sortOption = SORT_OPTIONS[this.finalizedSortField];
93
+ this.sortDirection = sortOption.defaultSortDirection;
94
+ }
95
+ if (changed.has('selectedTitleFilter') && this.selectedTitleFilter) {
96
+ this.alphaSelectorVisible = 'title';
97
+ }
98
+ if (changed.has('selectedCreatorFilter') && this.selectedCreatorFilter) {
99
+ this.alphaSelectorVisible = 'creator';
100
+ }
101
+ if (changed.has('dropdownBackdropVisible')) {
102
+ this.setupEscapeListeners();
103
+ }
104
+ if (changed.has('resizeObserver') || changed.has('showLoansTopBar')) {
105
+ const oldObserver = changed.get('resizeObserver');
106
+ if (oldObserver)
107
+ this.disconnectResizeObserver(oldObserver);
108
+ this.setupResizeObserver();
109
+ }
110
+ }
111
+ setupEscapeListeners() {
112
+ if (this.dropdownBackdropVisible) {
113
+ document.addEventListener('keydown', this.boundSortBarSelectorEscapeListener);
114
+ }
115
+ else {
116
+ document.removeEventListener('keydown', this.boundSortBarSelectorEscapeListener);
117
+ }
118
+ }
119
+ disconnectedCallback() {
120
+ if (this.resizeObserver) {
121
+ this.disconnectResizeObserver(this.resizeObserver);
122
+ }
123
+ }
124
+ disconnectResizeObserver(resizeObserver) {
125
+ if (this.sortSelectorContainer) {
126
+ resizeObserver.removeObserver({
127
+ target: this.sortSelectorContainer,
128
+ handler: this,
129
+ });
130
+ }
131
+ if (this.desktopSortContainer) {
132
+ resizeObserver.removeObserver({
133
+ target: this.desktopSortContainer,
134
+ handler: this,
135
+ });
136
+ }
137
+ }
138
+ setupResizeObserver() {
139
+ if (!this.resizeObserver)
140
+ return;
141
+ if (this.sortSelectorContainer) {
142
+ this.resizeObserver.addObserver({
143
+ target: this.sortSelectorContainer,
144
+ handler: this,
145
+ });
146
+ }
147
+ if (this.desktopSortContainer) {
148
+ this.resizeObserver.addObserver({
149
+ target: this.desktopSortContainer,
150
+ handler: this,
151
+ });
152
+ }
153
+ }
154
+ handleResize(entry) {
155
+ if (entry.target === this.desktopSortContainer) {
156
+ this.desktopSortContainerWidth = entry.contentRect.width;
157
+ }
158
+ else if (entry.target === this.sortSelectorContainer) {
159
+ this.selectorBarContainerWidth = entry.contentRect.width;
160
+ }
161
+ }
162
+ /**
163
+ * Whether to show the mobile sort bar because there is not enough space
164
+ * for the desktop sort bar.
165
+ */
166
+ get mobileSelectorVisible() {
167
+ return this.selectorBarContainerWidth - 10 < this.desktopSortContainerWidth;
168
+ }
169
+ /**
170
+ * Template to render the alphabet bar, or `nothing` if it should not be rendered
171
+ * for the current sort
172
+ */
173
+ get alphaBarTemplate() {
174
+ if (!['title', 'creator'].includes(this.selectedSort))
175
+ return nothing;
176
+ if (this.alphaSelectorVisible === null) {
177
+ if (this.selectedSort === 'creator')
178
+ return this.creatorSelectorBar;
179
+ if (this.selectedSort === 'title')
180
+ return this.titleSelectorBar;
181
+ }
182
+ else {
183
+ return this.alphaSelectorVisible === 'creator'
184
+ ? this.creatorSelectorBar
185
+ : this.titleSelectorBar;
186
+ }
187
+ return nothing;
188
+ }
189
+ /** Template to render the sort direction toggle button */
190
+ get sortDirectionSelectorTemplate() {
191
+ const oppositeSortDirectionReadable = this.sortDirection === 'asc' ? 'descending' : 'ascending';
192
+ const srLabel = `Change to ${oppositeSortDirectionReadable} sort`;
193
193
  return html `
194
194
  <button
195
195
  class="sort-direction-selector"
@@ -199,148 +199,148 @@ let SortFilterBar = class SortFilterBar extends LitElement {
199
199
  <span class="sr-only">${srLabel}</span>
200
200
  ${this.sortDirectionIcon}
201
201
  </button>
202
- `;
203
- }
204
- /** Template to render the sort direction button's icon in the correct current state */
205
- get sortDirectionIcon() {
206
- // Show a fully disabled icon for sort options without direction support
207
- if (!this.canChangeSortDirection) {
208
- return html `<div class="sort-direction-icon">${sortDisabledIcon}</div>`;
209
- }
210
- // For all other sorts, show the ascending/descending direction
202
+ `;
203
+ }
204
+ /** Template to render the sort direction button's icon in the correct current state */
205
+ get sortDirectionIcon() {
206
+ // Show a fully disabled icon for sort options without direction support
207
+ if (!this.canChangeSortDirection) {
208
+ return html `<div class="sort-direction-icon">${sortDisabledIcon}</div>`;
209
+ }
210
+ // For all other sorts, show the ascending/descending direction
211
211
  return html `
212
212
  <div class="sort-direction-icon">
213
213
  ${this.finalizedSortDirection === 'asc' ? sortUpIcon : sortDownIcon}
214
214
  </div>
215
- `;
216
- }
217
- /** The template to render all the sort options in desktop view */
218
- get desktopSortSelectorTemplate() {
215
+ `;
216
+ }
217
+ /** The template to render all the sort options in desktop view */
218
+ get desktopSortSelectorTemplate() {
219
219
  return html `
220
220
  <div
221
221
  id="desktop-sort-container"
222
222
  class=${this.mobileSelectorVisible ? 'hidden' : 'visible'}
223
223
  >
224
224
  <ul id="desktop-sort-selector">
225
- ${this.showRelevance
225
+ ${this.showRelevance
226
226
  ? html `<li>
227
- ${this.getSortDisplayOption(SortField.relevance, {
228
- onClick: () => {
229
- this.dropdownBackdropVisible = false;
230
- if (this.finalizedSortField !== SortField.relevance) {
231
- this.clearAlphaBarFilters();
232
- this.setSelectedSort(SortField.relevance);
233
- }
234
- },
227
+ ${this.getSortDisplayOption(SortField.relevance, {
228
+ onClick: () => {
229
+ this.dropdownBackdropVisible = false;
230
+ if (this.finalizedSortField !== SortField.relevance) {
231
+ this.clearAlphaBarFilters();
232
+ this.setSelectedSort(SortField.relevance);
233
+ }
234
+ },
235
235
  })}
236
- </li>`
236
+ </li>`
237
237
  : nothing}
238
238
  <li>${this.viewsDropdownTemplate}</li>
239
239
  <li>
240
- ${this.getSortDisplayOption(SortField.title, {
241
- onClick: () => {
242
- this.dropdownBackdropVisible = false;
243
- if (this.finalizedSortField !== SortField.title) {
244
- this.alphaSelectorVisible = 'title';
245
- this.selectedCreatorFilter = null;
246
- this.setSelectedSort(SortField.title);
247
- this.emitCreatorLetterChangedEvent();
248
- }
249
- },
240
+ ${this.getSortDisplayOption(SortField.title, {
241
+ onClick: () => {
242
+ this.dropdownBackdropVisible = false;
243
+ if (this.finalizedSortField !== SortField.title) {
244
+ this.alphaSelectorVisible = 'title';
245
+ this.selectedCreatorFilter = null;
246
+ this.setSelectedSort(SortField.title);
247
+ this.emitCreatorLetterChangedEvent();
248
+ }
249
+ },
250
250
  })}
251
251
  </li>
252
252
  <li>${this.dateDropdownTemplate}</li>
253
253
  <li>
254
- ${this.getSortDisplayOption(SortField.creator, {
255
- onClick: () => {
256
- this.dropdownBackdropVisible = false;
257
- if (this.finalizedSortField !== SortField.creator) {
258
- this.alphaSelectorVisible = 'creator';
259
- this.selectedTitleFilter = null;
260
- this.setSelectedSort(SortField.creator);
261
- this.emitTitleLetterChangedEvent();
262
- }
263
- },
254
+ ${this.getSortDisplayOption(SortField.creator, {
255
+ onClick: () => {
256
+ this.dropdownBackdropVisible = false;
257
+ if (this.finalizedSortField !== SortField.creator) {
258
+ this.alphaSelectorVisible = 'creator';
259
+ this.selectedTitleFilter = null;
260
+ this.setSelectedSort(SortField.creator);
261
+ this.emitTitleLetterChangedEvent();
262
+ }
263
+ },
264
264
  })}
265
265
  </li>
266
266
  </ul>
267
267
  </div>
268
- `;
269
- }
270
- /** The template to render all the sort options in mobile view */
271
- get mobileSortSelectorTemplate() {
272
- const displayedOptions = Object.values(SORT_OPTIONS)
273
- .filter(opt => opt.shownInSortBar)
274
- .filter(opt => this.showRelevance || opt.field !== SortField.relevance)
275
- .filter(opt => this.showDateFavorited || opt.field !== SortField.datefavorited);
268
+ `;
269
+ }
270
+ /** The template to render all the sort options in mobile view */
271
+ get mobileSortSelectorTemplate() {
272
+ const displayedOptions = Object.values(SORT_OPTIONS)
273
+ .filter(opt => opt.shownInSortBar)
274
+ .filter(opt => this.showRelevance || opt.field !== SortField.relevance)
275
+ .filter(opt => this.showDateFavorited || opt.field !== SortField.datefavorited);
276
276
  return html `
277
277
  <div
278
278
  id="mobile-sort-container"
279
279
  class=${this.mobileSelectorVisible ? 'visible' : 'hidden'}
280
280
  >
281
- ${this.getSortDropdown({
282
- displayName: html `${SORT_OPTIONS[this.finalizedSortField]
283
- .displayName}`,
284
- id: 'mobile-dropdown',
285
- selected: true,
286
- dropdownOptions: displayedOptions.map(opt => this.getDropdownOption(opt.field)),
287
- selectedOption: this.finalizedSortField,
288
- onOptionSelected: this.mobileSortChanged,
289
- onDropdownClick: () => {
290
- this.dropdownBackdropVisible = this.mobileDropdown.open;
291
- this.mobileDropdown.classList.toggle('open', this.mobileDropdown.open);
292
- },
281
+ ${this.getSortDropdown({
282
+ displayName: html `${SORT_OPTIONS[this.finalizedSortField]
283
+ .displayName}`,
284
+ id: 'mobile-dropdown',
285
+ selected: true,
286
+ dropdownOptions: displayedOptions.map(opt => this.getDropdownOption(opt.field)),
287
+ selectedOption: this.finalizedSortField,
288
+ onOptionSelected: this.mobileSortChanged,
289
+ onDropdownClick: () => {
290
+ this.dropdownBackdropVisible = this.mobileDropdown.open;
291
+ this.mobileDropdown.classList.toggle('open', this.mobileDropdown.open);
292
+ },
293
293
  })}
294
294
  </div>
295
- `;
296
- }
297
- /**
298
- * This generates each of the non-dropdown sort option links.
299
- *
300
- * It manages the display value and the selected state of the option.
301
- *
302
- * @param sortField
303
- * @param options {
304
- * onClick?: (e: Event) => void; If this is provided, it will also be called when the option is clicked.
305
- * displayName?: TemplateResult; The name to display for the option. Defaults to the sortField display name.
306
- * selected?: boolean; true if the option is selected. Defaults to the selectedSort === sortField.
307
- * }
308
- * @returns
309
- */
310
- getSortDisplayOption(sortField, options) {
311
- var _a, _b;
312
- const isSelected = (_a = options === null || options === void 0 ? void 0 : options.selected) !== null && _a !== void 0 ? _a : this.finalizedSortField === sortField;
313
- const displayName = (_b = options === null || options === void 0 ? void 0 : options.displayName) !== null && _b !== void 0 ? _b : SORT_OPTIONS[sortField].displayName;
295
+ `;
296
+ }
297
+ /**
298
+ * This generates each of the non-dropdown sort option links.
299
+ *
300
+ * It manages the display value and the selected state of the option.
301
+ *
302
+ * @param sortField
303
+ * @param options {
304
+ * onClick?: (e: Event) => void; If this is provided, it will also be called when the option is clicked.
305
+ * displayName?: TemplateResult; The name to display for the option. Defaults to the sortField display name.
306
+ * selected?: boolean; true if the option is selected. Defaults to the selectedSort === sortField.
307
+ * }
308
+ * @returns
309
+ */
310
+ getSortDisplayOption(sortField, options) {
311
+ var _a, _b;
312
+ const isSelected = (_a = options === null || options === void 0 ? void 0 : options.selected) !== null && _a !== void 0 ? _a : this.finalizedSortField === sortField;
313
+ const displayName = (_b = options === null || options === void 0 ? void 0 : options.displayName) !== null && _b !== void 0 ? _b : SORT_OPTIONS[sortField].displayName;
314
314
  return html `
315
315
  <button
316
316
  class=${isSelected ? 'selected' : nothing}
317
317
  data-title="${displayName}"
318
- @click=${(e) => {
319
- var _a;
320
- e.preventDefault();
321
- (_a = options === null || options === void 0 ? void 0 : options.onClick) === null || _a === void 0 ? void 0 : _a.call(options, e);
318
+ @click=${(e) => {
319
+ var _a;
320
+ e.preventDefault();
321
+ (_a = options === null || options === void 0 ? void 0 : options.onClick) === null || _a === void 0 ? void 0 : _a.call(options, e);
322
322
  }}
323
323
  >
324
324
  ${displayName}
325
325
  </button>
326
- `;
327
- }
328
- /**
329
- * Generates a dropdown component containing multiple grouped sort options.
330
- *
331
- * @param options.displayName The name to use for the dropdown's visible label
332
- * @param options.id The id to apply to the dropdown element
333
- * @param options.dropdownOptions An array of option objects used to populate the dropdown
334
- * @param options.selectedOption The id of the option that should be initially selected
335
- * @param options.selected A boolean indicating whether this dropdown should use its
336
- * selected appearance
337
- * @param options.onOptionSelected A handler for optionSelected events coming from the dropdown
338
- * @param options.onDropdownClick A handler for click events on the dropdown
339
- * @param options.onLabelInteraction A handler for click events and Enter/Space keydown events
340
- * on the dropdown's label
341
- */
342
- getSortDropdown(options) {
343
- var _a, _b, _c, _d, _e;
326
+ `;
327
+ }
328
+ /**
329
+ * Generates a dropdown component containing multiple grouped sort options.
330
+ *
331
+ * @param options.displayName The name to use for the dropdown's visible label
332
+ * @param options.id The id to apply to the dropdown element
333
+ * @param options.dropdownOptions An array of option objects used to populate the dropdown
334
+ * @param options.selectedOption The id of the option that should be initially selected
335
+ * @param options.selected A boolean indicating whether this dropdown should use its
336
+ * selected appearance
337
+ * @param options.onOptionSelected A handler for optionSelected events coming from the dropdown
338
+ * @param options.onDropdownClick A handler for click events on the dropdown
339
+ * @param options.onLabelInteraction A handler for click events and Enter/Space keydown events
340
+ * on the dropdown's label
341
+ */
342
+ getSortDropdown(options) {
343
+ var _a, _b, _c, _d, _e;
344
344
  return html `
345
345
  <ia-dropdown
346
346
  id=${(_a = options.id) !== null && _a !== void 0 ? _a : nothing}
@@ -359,121 +359,121 @@ let SortFilterBar = class SortFilterBar extends LitElement {
359
359
  slot="dropdown-label"
360
360
  data-title="${options.displayName.values}"
361
361
  @click=${(_e = options.onLabelInteraction) !== null && _e !== void 0 ? _e : nothing}
362
- @keydown=${options.onLabelInteraction
363
- ? (e) => {
364
- var _a;
365
- if (e.key === 'Enter' || e.key === ' ') {
366
- (_a = options.onLabelInteraction) === null || _a === void 0 ? void 0 : _a.call(options, e);
367
- }
368
- }
362
+ @keydown=${options.onLabelInteraction
363
+ ? (e) => {
364
+ var _a;
365
+ if (e.key === 'Enter' || e.key === ' ') {
366
+ (_a = options.onLabelInteraction) === null || _a === void 0 ? void 0 : _a.call(options, e);
367
+ }
368
+ }
369
369
  : nothing}
370
370
  >
371
371
  ${options.displayName}
372
372
  </span>
373
373
  </ia-dropdown>
374
- `;
375
- }
376
- /** Generates a single dropdown option object for the given sort field */
377
- getDropdownOption(sortField) {
378
- return {
379
- id: sortField,
380
- selectedHandler: () => {
381
- this.selectDropdownSortField(sortField);
382
- },
374
+ `;
375
+ }
376
+ /** Generates a single dropdown option object for the given sort field */
377
+ getDropdownOption(sortField) {
378
+ return {
379
+ id: sortField,
380
+ selectedHandler: () => {
381
+ this.selectDropdownSortField(sortField);
382
+ },
383
383
  label: html `
384
384
  <span class="dropdown-option-label">
385
385
  ${SORT_OPTIONS[sortField].displayName}
386
386
  </span>
387
- `,
388
- };
389
- }
390
- /** Handler for when any sort dropdown option is selected */
391
- dropdownOptionSelected(e) {
392
- this.dropdownBackdropVisible = false;
393
- this.clearAlphaBarFilters();
394
- this.setSelectedSort(e.detail.option.id);
395
- }
396
- /** The template to render for the views dropdown */
397
- get viewsDropdownTemplate() {
398
- return this.getSortDropdown({
399
- displayName: html `${this.viewSortField}`,
400
- id: 'views-dropdown',
401
- selected: this.viewOptionSelected,
402
- dropdownOptions: [
403
- this.getDropdownOption(SortField.weeklyview),
404
- this.getDropdownOption(SortField.alltimeview),
405
- ],
406
- selectedOption: this.viewOptionSelected ? this.selectedSort : '',
407
- onOptionSelected: this.dropdownOptionSelected,
408
- onDropdownClick: () => {
409
- this.dateDropdown.open = false;
410
- this.dropdownBackdropVisible = this.viewsDropdown.open;
411
- this.viewsDropdown.classList.toggle('open', this.viewsDropdown.open);
412
- },
413
- onLabelInteraction: (e) => {
414
- if (!this.viewsDropdown.open && !this.viewOptionSelected) {
415
- e.stopPropagation();
416
- this.clearAlphaBarFilters();
417
- this.setSelectedSort(SortField.weeklyview);
418
- }
419
- },
420
- });
421
- }
422
- /** The template to render for the date dropdown */
423
- get dateDropdownTemplate() {
424
- return this.getSortDropdown({
425
- displayName: html `${this.dateSortField}`,
426
- id: 'date-dropdown',
427
- selected: this.dateOptionSelected,
428
- dropdownOptions: [
429
- ...(this.showDateFavorited
430
- ? [this.getDropdownOption(SortField.datefavorited)]
431
- : []),
432
- this.getDropdownOption(SortField.date),
433
- this.getDropdownOption(SortField.datearchived),
434
- this.getDropdownOption(SortField.datereviewed),
435
- this.getDropdownOption(SortField.dateadded),
436
- ],
437
- selectedOption: this.dateOptionSelected ? this.selectedSort : '',
438
- onOptionSelected: this.dropdownOptionSelected,
439
- onDropdownClick: () => {
440
- this.viewsDropdown.open = false;
441
- this.dropdownBackdropVisible = this.dateDropdown.open;
442
- this.dateDropdown.classList.toggle('open', this.dateDropdown.open);
443
- },
444
- onLabelInteraction: (e) => {
445
- if (!this.dateDropdown.open && !this.dateOptionSelected) {
446
- e.stopPropagation();
447
- this.clearAlphaBarFilters();
448
- this.setSelectedSort(this.defaultDateSortField);
449
- }
450
- },
451
- });
452
- }
453
- /** Handler for when a new mobile sort dropdown option is selected */
454
- mobileSortChanged(e) {
455
- this.dropdownBackdropVisible = false;
456
- const sortField = e.detail.option.id;
457
- this.setSelectedSort(sortField);
458
- this.alphaSelectorVisible = null;
459
- if (sortField !== 'title' && this.selectedTitleFilter) {
460
- this.selectedTitleFilter = null;
461
- this.emitTitleLetterChangedEvent();
462
- }
463
- if (sortField !== 'creator' && this.selectedCreatorFilter) {
464
- this.selectedCreatorFilter = null;
465
- this.emitCreatorLetterChangedEvent();
466
- }
467
- }
468
- /** Template for rendering the three display mode options */
469
- get displayOptionTemplate() {
387
+ `,
388
+ };
389
+ }
390
+ /** Handler for when any sort dropdown option is selected */
391
+ dropdownOptionSelected(e) {
392
+ this.dropdownBackdropVisible = false;
393
+ this.clearAlphaBarFilters();
394
+ this.setSelectedSort(e.detail.option.id);
395
+ }
396
+ /** The template to render for the views dropdown */
397
+ get viewsDropdownTemplate() {
398
+ return this.getSortDropdown({
399
+ displayName: html `${this.viewSortField}`,
400
+ id: 'views-dropdown',
401
+ selected: this.viewOptionSelected,
402
+ dropdownOptions: [
403
+ this.getDropdownOption(SortField.weeklyview),
404
+ this.getDropdownOption(SortField.alltimeview),
405
+ ],
406
+ selectedOption: this.viewOptionSelected ? this.selectedSort : '',
407
+ onOptionSelected: this.dropdownOptionSelected,
408
+ onDropdownClick: () => {
409
+ this.dateDropdown.open = false;
410
+ this.dropdownBackdropVisible = this.viewsDropdown.open;
411
+ this.viewsDropdown.classList.toggle('open', this.viewsDropdown.open);
412
+ },
413
+ onLabelInteraction: (e) => {
414
+ if (!this.viewsDropdown.open && !this.viewOptionSelected) {
415
+ e.stopPropagation();
416
+ this.clearAlphaBarFilters();
417
+ this.setSelectedSort(SortField.weeklyview);
418
+ }
419
+ },
420
+ });
421
+ }
422
+ /** The template to render for the date dropdown */
423
+ get dateDropdownTemplate() {
424
+ return this.getSortDropdown({
425
+ displayName: html `${this.dateSortField}`,
426
+ id: 'date-dropdown',
427
+ selected: this.dateOptionSelected,
428
+ dropdownOptions: [
429
+ ...(this.showDateFavorited
430
+ ? [this.getDropdownOption(SortField.datefavorited)]
431
+ : []),
432
+ this.getDropdownOption(SortField.date),
433
+ this.getDropdownOption(SortField.datearchived),
434
+ this.getDropdownOption(SortField.datereviewed),
435
+ this.getDropdownOption(SortField.dateadded),
436
+ ],
437
+ selectedOption: this.dateOptionSelected ? this.selectedSort : '',
438
+ onOptionSelected: this.dropdownOptionSelected,
439
+ onDropdownClick: () => {
440
+ this.viewsDropdown.open = false;
441
+ this.dropdownBackdropVisible = this.dateDropdown.open;
442
+ this.dateDropdown.classList.toggle('open', this.dateDropdown.open);
443
+ },
444
+ onLabelInteraction: (e) => {
445
+ if (!this.dateDropdown.open && !this.dateOptionSelected) {
446
+ e.stopPropagation();
447
+ this.clearAlphaBarFilters();
448
+ this.setSelectedSort(this.defaultDateSortField);
449
+ }
450
+ },
451
+ });
452
+ }
453
+ /** Handler for when a new mobile sort dropdown option is selected */
454
+ mobileSortChanged(e) {
455
+ this.dropdownBackdropVisible = false;
456
+ const sortField = e.detail.option.id;
457
+ this.setSelectedSort(sortField);
458
+ this.alphaSelectorVisible = null;
459
+ if (sortField !== 'title' && this.selectedTitleFilter) {
460
+ this.selectedTitleFilter = null;
461
+ this.emitTitleLetterChangedEvent();
462
+ }
463
+ if (sortField !== 'creator' && this.selectedCreatorFilter) {
464
+ this.selectedCreatorFilter = null;
465
+ this.emitCreatorLetterChangedEvent();
466
+ }
467
+ }
468
+ /** Template for rendering the three display mode options */
469
+ get displayOptionTemplate() {
470
470
  return html `
471
471
  <ul>
472
472
  <li>
473
473
  <button
474
474
  id="grid-button"
475
- @click=${() => {
476
- this.displayMode = 'grid';
475
+ @click=${() => {
476
+ this.displayMode = 'grid';
477
477
  }}
478
478
  class=${this.displayMode === 'grid' ? 'active' : ''}
479
479
  title="Tile view"
@@ -484,8 +484,8 @@ let SortFilterBar = class SortFilterBar extends LitElement {
484
484
  <li>
485
485
  <button
486
486
  id="list-detail-button"
487
- @click=${() => {
488
- this.displayMode = 'list-detail';
487
+ @click=${() => {
488
+ this.displayMode = 'list-detail';
489
489
  }}
490
490
  class=${this.displayMode === 'list-detail' ? 'active' : ''}
491
491
  title="List view"
@@ -496,8 +496,8 @@ let SortFilterBar = class SortFilterBar extends LitElement {
496
496
  <li>
497
497
  <button
498
498
  id="list-compact-button"
499
- @click=${() => {
500
- this.displayMode = 'list-compact';
499
+ @click=${() => {
500
+ this.displayMode = 'list-compact';
501
501
  }}
502
502
  class=${this.displayMode === 'list-compact' ? 'active' : ''}
503
503
  title="Compact list view"
@@ -506,223 +506,223 @@ let SortFilterBar = class SortFilterBar extends LitElement {
506
506
  </button>
507
507
  </li>
508
508
  </ul>
509
- `;
510
- }
511
- /**
512
- * Template for rendering the transparent backdrop to capture clicks outside the
513
- * dropdown menu while it is open.
514
- */
515
- get dropdownBackdrop() {
509
+ `;
510
+ }
511
+ /**
512
+ * Template for rendering the transparent backdrop to capture clicks outside the
513
+ * dropdown menu while it is open.
514
+ */
515
+ get dropdownBackdrop() {
516
516
  return html `
517
517
  <div
518
518
  id="sort-selector-backdrop"
519
519
  @keyup=${this.closeDropdowns}
520
520
  @click=${this.closeDropdowns}
521
521
  ></div>
522
- `;
523
- }
524
- /** Closes all of the sorting dropdown components' menus */
525
- closeDropdowns() {
526
- this.dropdownBackdropVisible = false;
527
- const allDropdowns = [
528
- this.viewsDropdown,
529
- this.dateDropdown,
530
- this.mobileDropdown,
531
- ];
532
- for (const dropdown of allDropdowns) {
533
- dropdown.open = false;
534
- dropdown.classList.remove('open');
535
- }
536
- }
537
- selectDropdownSortField(sortField) {
538
- // When a dropdown sort option is selected, we additionally need to clear the backdrop
539
- this.dropdownBackdropVisible = false;
540
- this.setSelectedSort(sortField);
541
- }
542
- clearAlphaBarFilters() {
543
- this.alphaSelectorVisible = null;
544
- this.selectedTitleFilter = null;
545
- this.selectedCreatorFilter = null;
546
- this.emitTitleLetterChangedEvent();
547
- this.emitCreatorLetterChangedEvent();
548
- }
549
- setSortDirection(sortDirection) {
550
- this.sortDirection = sortDirection;
551
- this.emitSortChangedEvent();
552
- }
553
- /** Toggles the current sort direction between 'asc' and 'desc' */
554
- toggleSortDirection() {
555
- this.setSortDirection(this.finalizedSortDirection === 'desc' ? 'asc' : 'desc');
556
- }
557
- handleSortDirectionClicked() {
558
- if (!this.sortDirection &&
559
- this.defaultSortField &&
560
- this.defaultSortDirection) {
561
- // When the sort direction is merely defaulted (not set by the user), clicking
562
- // the toggled button should "promote" the default sort to an explicitly-set one
563
- // and then toggle it as usual.
564
- this.selectedSort = this.defaultSortField;
565
- this.sortDirection = this.defaultSortDirection;
566
- }
567
- this.toggleSortDirection();
568
- }
569
- setSelectedSort(sort) {
570
- this.selectedSort = sort;
571
- // Apply this field's default sort direction
572
- const sortOption = SORT_OPTIONS[sort];
573
- this.sortDirection = sortOption.defaultSortDirection;
574
- this.emitSortChangedEvent();
575
- }
576
- /** The current sort field, or the default one if no explicit sort is set */
577
- get finalizedSortField() {
578
- return this.selectedSort === SortField.default
579
- ? this.defaultSortField
580
- : this.selectedSort;
581
- }
582
- /** The current sort direction, or the default one if no explicit direction is set */
583
- get finalizedSortDirection() {
584
- return this.sortDirection === null
585
- ? this.defaultSortDirection
586
- : this.sortDirection;
587
- }
588
- /** Whether the sort direction button should be enabled for the current sort */
589
- get canChangeSortDirection() {
590
- return SORT_OPTIONS[this.finalizedSortField].canSetDirection;
591
- }
592
- /**
593
- * There are four date sort options.
594
- *
595
- * This checks to see if the current sort is one of them.
596
- *
597
- * @readonly
598
- * @private
599
- * @type {boolean}
600
- * @memberof SortFilterBar
601
- */
602
- get dateOptionSelected() {
603
- const dateSortFields = [
604
- SortField.datefavorited,
605
- SortField.datearchived,
606
- SortField.date,
607
- SortField.datereviewed,
608
- SortField.dateadded,
609
- ];
610
- return dateSortFields.includes(this.finalizedSortField);
611
- }
612
- /**
613
- * There are two view sort options.
614
- *
615
- * This checks to see if the current sort is one of them.
616
- *
617
- * @readonly
618
- * @private
619
- * @type {boolean}
620
- * @memberof SortFilterBar
621
- */
622
- get viewOptionSelected() {
623
- const viewSortFields = [
624
- SortField.alltimeview,
625
- SortField.weeklyview,
626
- ];
627
- return viewSortFields.includes(this.finalizedSortField);
628
- }
629
- /**
630
- * The default field for the date sort dropdown.
631
- * This is Date Favorited when that option is available, or Date Published otherwise.
632
- */
633
- get defaultDateSortField() {
634
- return this.showDateFavorited ? SortField.datefavorited : SortField.date;
635
- }
636
- /**
637
- * The display name of the current date field
638
- *
639
- * @readonly
640
- * @private
641
- * @type {string}
642
- * @memberof SortFilterBar
643
- */
644
- get dateSortField() {
645
- var _a;
646
- const defaultDateSort = SORT_OPTIONS[this.defaultDateSortField];
647
- const currentDateSort = this.dateOptionSelected
648
- ? (_a = SORT_OPTIONS[this.finalizedSortField]) !== null && _a !== void 0 ? _a : defaultDateSort
649
- : defaultDateSort;
650
- return currentDateSort.displayName;
651
- }
652
- /**
653
- * The display name of the current view field
654
- *
655
- * @readonly
656
- * @private
657
- * @type {string}
658
- * @memberof SortFilterBar
659
- */
660
- get viewSortField() {
661
- var _a;
662
- const defaultViewSort = SORT_OPTIONS[SortField.weeklyview];
663
- const currentViewSort = this.viewOptionSelected
664
- ? (_a = SORT_OPTIONS[this.finalizedSortField]) !== null && _a !== void 0 ? _a : defaultViewSort
665
- : defaultViewSort;
666
- return currentViewSort.displayName;
667
- }
668
- get titleSelectorBar() {
669
- var _a;
522
+ `;
523
+ }
524
+ /** Closes all of the sorting dropdown components' menus */
525
+ closeDropdowns() {
526
+ this.dropdownBackdropVisible = false;
527
+ const allDropdowns = [
528
+ this.viewsDropdown,
529
+ this.dateDropdown,
530
+ this.mobileDropdown,
531
+ ];
532
+ for (const dropdown of allDropdowns) {
533
+ dropdown.open = false;
534
+ dropdown.classList.remove('open');
535
+ }
536
+ }
537
+ selectDropdownSortField(sortField) {
538
+ // When a dropdown sort option is selected, we additionally need to clear the backdrop
539
+ this.dropdownBackdropVisible = false;
540
+ this.setSelectedSort(sortField);
541
+ }
542
+ clearAlphaBarFilters() {
543
+ this.alphaSelectorVisible = null;
544
+ this.selectedTitleFilter = null;
545
+ this.selectedCreatorFilter = null;
546
+ this.emitTitleLetterChangedEvent();
547
+ this.emitCreatorLetterChangedEvent();
548
+ }
549
+ setSortDirection(sortDirection) {
550
+ this.sortDirection = sortDirection;
551
+ this.emitSortChangedEvent();
552
+ }
553
+ /** Toggles the current sort direction between 'asc' and 'desc' */
554
+ toggleSortDirection() {
555
+ this.setSortDirection(this.finalizedSortDirection === 'desc' ? 'asc' : 'desc');
556
+ }
557
+ handleSortDirectionClicked() {
558
+ if (!this.sortDirection &&
559
+ this.defaultSortField &&
560
+ this.defaultSortDirection) {
561
+ // When the sort direction is merely defaulted (not set by the user), clicking
562
+ // the toggled button should "promote" the default sort to an explicitly-set one
563
+ // and then toggle it as usual.
564
+ this.selectedSort = this.defaultSortField;
565
+ this.sortDirection = this.defaultSortDirection;
566
+ }
567
+ this.toggleSortDirection();
568
+ }
569
+ setSelectedSort(sort) {
570
+ this.selectedSort = sort;
571
+ // Apply this field's default sort direction
572
+ const sortOption = SORT_OPTIONS[sort];
573
+ this.sortDirection = sortOption.defaultSortDirection;
574
+ this.emitSortChangedEvent();
575
+ }
576
+ /** The current sort field, or the default one if no explicit sort is set */
577
+ get finalizedSortField() {
578
+ return this.selectedSort === SortField.default
579
+ ? this.defaultSortField
580
+ : this.selectedSort;
581
+ }
582
+ /** The current sort direction, or the default one if no explicit direction is set */
583
+ get finalizedSortDirection() {
584
+ return this.sortDirection === null
585
+ ? this.defaultSortDirection
586
+ : this.sortDirection;
587
+ }
588
+ /** Whether the sort direction button should be enabled for the current sort */
589
+ get canChangeSortDirection() {
590
+ return SORT_OPTIONS[this.finalizedSortField].canSetDirection;
591
+ }
592
+ /**
593
+ * There are four date sort options.
594
+ *
595
+ * This checks to see if the current sort is one of them.
596
+ *
597
+ * @readonly
598
+ * @private
599
+ * @type {boolean}
600
+ * @memberof SortFilterBar
601
+ */
602
+ get dateOptionSelected() {
603
+ const dateSortFields = [
604
+ SortField.datefavorited,
605
+ SortField.datearchived,
606
+ SortField.date,
607
+ SortField.datereviewed,
608
+ SortField.dateadded,
609
+ ];
610
+ return dateSortFields.includes(this.finalizedSortField);
611
+ }
612
+ /**
613
+ * There are two view sort options.
614
+ *
615
+ * This checks to see if the current sort is one of them.
616
+ *
617
+ * @readonly
618
+ * @private
619
+ * @type {boolean}
620
+ * @memberof SortFilterBar
621
+ */
622
+ get viewOptionSelected() {
623
+ const viewSortFields = [
624
+ SortField.alltimeview,
625
+ SortField.weeklyview,
626
+ ];
627
+ return viewSortFields.includes(this.finalizedSortField);
628
+ }
629
+ /**
630
+ * The default field for the date sort dropdown.
631
+ * This is Date Favorited when that option is available, or Date Published otherwise.
632
+ */
633
+ get defaultDateSortField() {
634
+ return this.showDateFavorited ? SortField.datefavorited : SortField.date;
635
+ }
636
+ /**
637
+ * The display name of the current date field
638
+ *
639
+ * @readonly
640
+ * @private
641
+ * @type {string}
642
+ * @memberof SortFilterBar
643
+ */
644
+ get dateSortField() {
645
+ var _a;
646
+ const defaultDateSort = SORT_OPTIONS[this.defaultDateSortField];
647
+ const currentDateSort = this.dateOptionSelected
648
+ ? (_a = SORT_OPTIONS[this.finalizedSortField]) !== null && _a !== void 0 ? _a : defaultDateSort
649
+ : defaultDateSort;
650
+ return currentDateSort.displayName;
651
+ }
652
+ /**
653
+ * The display name of the current view field
654
+ *
655
+ * @readonly
656
+ * @private
657
+ * @type {string}
658
+ * @memberof SortFilterBar
659
+ */
660
+ get viewSortField() {
661
+ var _a;
662
+ const defaultViewSort = SORT_OPTIONS[SortField.weeklyview];
663
+ const currentViewSort = this.viewOptionSelected
664
+ ? (_a = SORT_OPTIONS[this.finalizedSortField]) !== null && _a !== void 0 ? _a : defaultViewSort
665
+ : defaultViewSort;
666
+ return currentViewSort.displayName;
667
+ }
668
+ get titleSelectorBar() {
669
+ var _a;
670
670
  return html ` <alpha-bar
671
671
  .selectedLetter=${this.selectedTitleFilter}
672
672
  .letterCounts=${(_a = this.prefixFilterCountMap) === null || _a === void 0 ? void 0 : _a.title}
673
673
  ariaLandmarkLabel="Filter by title letter"
674
674
  @letterChanged=${this.titleLetterChanged}
675
- ></alpha-bar>`;
676
- }
677
- get creatorSelectorBar() {
678
- var _a;
675
+ ></alpha-bar>`;
676
+ }
677
+ get creatorSelectorBar() {
678
+ var _a;
679
679
  return html ` <alpha-bar
680
680
  .selectedLetter=${this.selectedCreatorFilter}
681
681
  .letterCounts=${(_a = this.prefixFilterCountMap) === null || _a === void 0 ? void 0 : _a.creator}
682
682
  ariaLandmarkLabel="Filter by creator letter"
683
683
  @letterChanged=${this.creatorLetterChanged}
684
- ></alpha-bar>`;
685
- }
686
- titleLetterChanged(e) {
687
- var _a;
688
- this.selectedTitleFilter = (_a = e.detail.selectedLetter) !== null && _a !== void 0 ? _a : null;
689
- this.emitTitleLetterChangedEvent();
690
- }
691
- creatorLetterChanged(e) {
692
- var _a;
693
- this.selectedCreatorFilter = (_a = e.detail.selectedLetter) !== null && _a !== void 0 ? _a : null;
694
- this.emitCreatorLetterChangedEvent();
695
- }
696
- emitTitleLetterChangedEvent() {
697
- const event = new CustomEvent('titleLetterChanged', {
698
- detail: { selectedLetter: this.selectedTitleFilter },
699
- });
700
- this.dispatchEvent(event);
701
- }
702
- emitCreatorLetterChangedEvent() {
703
- const event = new CustomEvent('creatorLetterChanged', {
704
- detail: { selectedLetter: this.selectedCreatorFilter },
705
- });
706
- this.dispatchEvent(event);
707
- }
708
- displayModeChanged() {
709
- const event = new CustomEvent('displayModeChanged', {
710
- detail: { displayMode: this.displayMode },
711
- });
712
- this.dispatchEvent(event);
713
- }
714
- emitSortChangedEvent() {
715
- const event = new CustomEvent('sortChanged', {
716
- detail: {
717
- selectedSort: this.selectedSort,
718
- sortDirection: this.sortDirection,
719
- },
720
- });
721
- this.dispatchEvent(event);
722
- }
723
- static get styles() {
724
- return [
725
- srOnlyStyle,
684
+ ></alpha-bar>`;
685
+ }
686
+ titleLetterChanged(e) {
687
+ var _a;
688
+ this.selectedTitleFilter = (_a = e.detail.selectedLetter) !== null && _a !== void 0 ? _a : null;
689
+ this.emitTitleLetterChangedEvent();
690
+ }
691
+ creatorLetterChanged(e) {
692
+ var _a;
693
+ this.selectedCreatorFilter = (_a = e.detail.selectedLetter) !== null && _a !== void 0 ? _a : null;
694
+ this.emitCreatorLetterChangedEvent();
695
+ }
696
+ emitTitleLetterChangedEvent() {
697
+ const event = new CustomEvent('titleLetterChanged', {
698
+ detail: { selectedLetter: this.selectedTitleFilter },
699
+ });
700
+ this.dispatchEvent(event);
701
+ }
702
+ emitCreatorLetterChangedEvent() {
703
+ const event = new CustomEvent('creatorLetterChanged', {
704
+ detail: { selectedLetter: this.selectedCreatorFilter },
705
+ });
706
+ this.dispatchEvent(event);
707
+ }
708
+ displayModeChanged() {
709
+ const event = new CustomEvent('displayModeChanged', {
710
+ detail: { displayMode: this.displayMode },
711
+ });
712
+ this.dispatchEvent(event);
713
+ }
714
+ emitSortChangedEvent() {
715
+ const event = new CustomEvent('sortChanged', {
716
+ detail: {
717
+ selectedSort: this.selectedSort,
718
+ sortDirection: this.sortDirection,
719
+ },
720
+ });
721
+ this.dispatchEvent(event);
722
+ }
723
+ static get styles() {
724
+ return [
725
+ srOnlyStyle,
726
726
  css `
727
727
  #container {
728
728
  position: relative;
@@ -941,80 +941,81 @@ let SortFilterBar = class SortFilterBar extends LitElement {
941
941
  height: 100%;
942
942
  padding-left: 5px;
943
943
  font-size: 1.4rem;
944
+ font-family: var(--ia-theme-base-font-family);
944
945
  line-height: 2;
945
946
  color: var(--ia-theme-primary-text-color, #2c2c2c);
946
947
  white-space: nowrap;
947
948
  user-select: none;
948
949
  }
949
- `,
950
- ];
951
- }
952
- };
953
- __decorate([
954
- property({ type: String })
955
- ], SortFilterBar.prototype, "displayMode", void 0);
956
- __decorate([
957
- property({ type: String })
958
- ], SortFilterBar.prototype, "defaultSortDirection", void 0);
959
- __decorate([
960
- property({ type: String })
961
- ], SortFilterBar.prototype, "defaultSortField", void 0);
962
- __decorate([
963
- property({ type: String })
964
- ], SortFilterBar.prototype, "sortDirection", void 0);
965
- __decorate([
966
- property({ type: String })
967
- ], SortFilterBar.prototype, "selectedSort", void 0);
968
- __decorate([
969
- property({ type: String })
970
- ], SortFilterBar.prototype, "selectedTitleFilter", void 0);
971
- __decorate([
972
- property({ type: String })
973
- ], SortFilterBar.prototype, "selectedCreatorFilter", void 0);
974
- __decorate([
975
- property({ type: Boolean })
976
- ], SortFilterBar.prototype, "showRelevance", void 0);
977
- __decorate([
978
- property({ type: Boolean })
979
- ], SortFilterBar.prototype, "showDateFavorited", void 0);
980
- __decorate([
981
- property({ type: Boolean })
982
- ], SortFilterBar.prototype, "showLoansTopBar", void 0);
983
- __decorate([
984
- property({ type: Object })
985
- ], SortFilterBar.prototype, "prefixFilterCountMap", void 0);
986
- __decorate([
987
- property({ type: Object })
988
- ], SortFilterBar.prototype, "resizeObserver", void 0);
989
- __decorate([
990
- state()
991
- ], SortFilterBar.prototype, "alphaSelectorVisible", void 0);
992
- __decorate([
993
- state()
994
- ], SortFilterBar.prototype, "dropdownBackdropVisible", void 0);
995
- __decorate([
996
- state()
997
- ], SortFilterBar.prototype, "desktopSortContainerWidth", void 0);
998
- __decorate([
999
- state()
1000
- ], SortFilterBar.prototype, "selectorBarContainerWidth", void 0);
1001
- __decorate([
1002
- query('#desktop-sort-container')
1003
- ], SortFilterBar.prototype, "desktopSortContainer", void 0);
1004
- __decorate([
1005
- query('#sort-selector-container')
1006
- ], SortFilterBar.prototype, "sortSelectorContainer", void 0);
1007
- __decorate([
1008
- query('#views-dropdown')
1009
- ], SortFilterBar.prototype, "viewsDropdown", void 0);
1010
- __decorate([
1011
- query('#date-dropdown')
1012
- ], SortFilterBar.prototype, "dateDropdown", void 0);
1013
- __decorate([
1014
- query('#mobile-dropdown')
1015
- ], SortFilterBar.prototype, "mobileDropdown", void 0);
1016
- SortFilterBar = __decorate([
1017
- customElement('sort-filter-bar')
1018
- ], SortFilterBar);
1019
- export { SortFilterBar };
950
+ `,
951
+ ];
952
+ }
953
+ };
954
+ __decorate([
955
+ property({ type: String })
956
+ ], SortFilterBar.prototype, "displayMode", void 0);
957
+ __decorate([
958
+ property({ type: String })
959
+ ], SortFilterBar.prototype, "defaultSortDirection", void 0);
960
+ __decorate([
961
+ property({ type: String })
962
+ ], SortFilterBar.prototype, "defaultSortField", void 0);
963
+ __decorate([
964
+ property({ type: String })
965
+ ], SortFilterBar.prototype, "sortDirection", void 0);
966
+ __decorate([
967
+ property({ type: String })
968
+ ], SortFilterBar.prototype, "selectedSort", void 0);
969
+ __decorate([
970
+ property({ type: String })
971
+ ], SortFilterBar.prototype, "selectedTitleFilter", void 0);
972
+ __decorate([
973
+ property({ type: String })
974
+ ], SortFilterBar.prototype, "selectedCreatorFilter", void 0);
975
+ __decorate([
976
+ property({ type: Boolean })
977
+ ], SortFilterBar.prototype, "showRelevance", void 0);
978
+ __decorate([
979
+ property({ type: Boolean })
980
+ ], SortFilterBar.prototype, "showDateFavorited", void 0);
981
+ __decorate([
982
+ property({ type: Boolean })
983
+ ], SortFilterBar.prototype, "showLoansTopBar", void 0);
984
+ __decorate([
985
+ property({ type: Object })
986
+ ], SortFilterBar.prototype, "prefixFilterCountMap", void 0);
987
+ __decorate([
988
+ property({ type: Object })
989
+ ], SortFilterBar.prototype, "resizeObserver", void 0);
990
+ __decorate([
991
+ state()
992
+ ], SortFilterBar.prototype, "alphaSelectorVisible", void 0);
993
+ __decorate([
994
+ state()
995
+ ], SortFilterBar.prototype, "dropdownBackdropVisible", void 0);
996
+ __decorate([
997
+ state()
998
+ ], SortFilterBar.prototype, "desktopSortContainerWidth", void 0);
999
+ __decorate([
1000
+ state()
1001
+ ], SortFilterBar.prototype, "selectorBarContainerWidth", void 0);
1002
+ __decorate([
1003
+ query('#desktop-sort-container')
1004
+ ], SortFilterBar.prototype, "desktopSortContainer", void 0);
1005
+ __decorate([
1006
+ query('#sort-selector-container')
1007
+ ], SortFilterBar.prototype, "sortSelectorContainer", void 0);
1008
+ __decorate([
1009
+ query('#views-dropdown')
1010
+ ], SortFilterBar.prototype, "viewsDropdown", void 0);
1011
+ __decorate([
1012
+ query('#date-dropdown')
1013
+ ], SortFilterBar.prototype, "dateDropdown", void 0);
1014
+ __decorate([
1015
+ query('#mobile-dropdown')
1016
+ ], SortFilterBar.prototype, "mobileDropdown", void 0);
1017
+ SortFilterBar = __decorate([
1018
+ customElement('sort-filter-bar')
1019
+ ], SortFilterBar);
1020
+ export { SortFilterBar };
1020
1021
  //# sourceMappingURL=sort-filter-bar.js.map