@internetarchive/collection-browser 2.4.1-e2e-test-2 → 2.5.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 (316) 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 -12
  6. package/dist/index.js +12 -12
  7. package/dist/src/app-root.d.ts +91 -91
  8. package/dist/src/app-root.js +487 -487
  9. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  10. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  11. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  12. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  13. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  14. package/dist/src/assets/img/icons/chevron.js +2 -2
  15. package/dist/src/assets/img/icons/contract.d.ts +2 -2
  16. package/dist/src/assets/img/icons/contract.js +2 -2
  17. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  18. package/dist/src/assets/img/icons/empty-query.js +2 -2
  19. package/dist/src/assets/img/icons/expand.d.ts +2 -2
  20. package/dist/src/assets/img/icons/expand.js +2 -2
  21. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  22. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  23. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  24. package/dist/src/assets/img/icons/eye.js +2 -2
  25. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  26. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  27. package/dist/src/assets/img/icons/favorite-unfilled.d.ts +1 -1
  28. package/dist/src/assets/img/icons/favorite-unfilled.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 +564 -466
  72. package/dist/src/collection-browser.js +1568 -1479
  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 +117 -116
  76. package/dist/src/collection-facets/facet-row.js.map +1 -1
  77. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  78. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  79. package/dist/src/collection-facets/facets-template.d.ts +13 -17
  80. package/dist/src/collection-facets/facets-template.js +46 -144
  81. package/dist/src/collection-facets/facets-template.js.map +1 -1
  82. package/dist/src/collection-facets/more-facets-content.d.ts +106 -74
  83. package/dist/src/collection-facets/more-facets-content.js +424 -377
  84. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  85. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  86. package/dist/src/collection-facets/more-facets-pagination.js +196 -196
  87. package/dist/src/collection-facets/toggle-switch.d.ts +41 -41
  88. package/dist/src/collection-facets/toggle-switch.js +94 -94
  89. package/dist/src/collection-facets.d.ts +103 -103
  90. package/dist/src/collection-facets.js +514 -514
  91. package/dist/src/collection-facets.js.map +1 -1
  92. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +241 -241
  93. package/dist/src/data-source/collection-browser-data-source-interface.js +1 -1
  94. package/dist/src/data-source/collection-browser-data-source.d.ts +378 -378
  95. package/dist/src/data-source/collection-browser-data-source.js +985 -985
  96. package/dist/src/data-source/collection-browser-query-state.d.ts +43 -43
  97. package/dist/src/data-source/collection-browser-query-state.js +1 -1
  98. package/dist/src/data-source/models.d.ts +28 -28
  99. package/dist/src/data-source/models.js +8 -8
  100. package/dist/src/empty-placeholder.d.ts +23 -23
  101. package/dist/src/empty-placeholder.js +74 -74
  102. package/dist/src/expanded-date-picker.d.ts +43 -43
  103. package/dist/src/expanded-date-picker.js +109 -109
  104. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  105. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  106. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  107. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  108. package/dist/src/manage/manage-bar.d.ts +30 -30
  109. package/dist/src/manage/manage-bar.js +61 -61
  110. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  111. package/dist/src/mediatype/mediatype-config.js +91 -91
  112. package/dist/src/models.d.ts +209 -209
  113. package/dist/src/models.js +381 -381
  114. package/dist/src/restoration-state-handler.d.ts +70 -70
  115. package/dist/src/restoration-state-handler.js +357 -357
  116. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  117. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  118. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
  119. package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
  120. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  121. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  122. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  123. package/dist/src/sort-filter-bar/img/list.js +2 -2
  124. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  125. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
  126. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  127. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
  128. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  129. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
  130. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  131. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  132. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  133. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  134. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +222 -222
  135. package/dist/src/sort-filter-bar/sort-filter-bar.js +696 -696
  136. package/dist/src/styles/ia-button.d.ts +2 -2
  137. package/dist/src/styles/ia-button.js +16 -16
  138. package/dist/src/styles/item-image-styles.d.ts +8 -8
  139. package/dist/src/styles/item-image-styles.js +9 -9
  140. package/dist/src/styles/sr-only.d.ts +1 -1
  141. package/dist/src/styles/sr-only.js +2 -2
  142. package/dist/src/tiles/base-tile-component.d.ts +19 -19
  143. package/dist/src/tiles/base-tile-component.js +63 -63
  144. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  145. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  146. package/dist/src/tiles/grid/account-tile.d.ts +18 -18
  147. package/dist/src/tiles/grid/account-tile.js +72 -72
  148. package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
  149. package/dist/src/tiles/grid/collection-tile.js +80 -80
  150. package/dist/src/tiles/grid/item-tile.d.ts +30 -30
  151. package/dist/src/tiles/grid/item-tile.js +149 -149
  152. package/dist/src/tiles/grid/search-tile.d.ts +10 -10
  153. package/dist/src/tiles/grid/search-tile.js +51 -51
  154. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  155. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
  156. package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
  157. package/dist/src/tiles/grid/tile-stats.js +53 -53
  158. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  159. package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
  160. package/dist/src/tiles/hover/tile-hover-pane.d.ts +18 -18
  161. package/dist/src/tiles/hover/tile-hover-pane.js +69 -69
  162. package/dist/src/tiles/image-block.d.ts +17 -17
  163. package/dist/src/tiles/image-block.js +73 -73
  164. package/dist/src/tiles/item-image.d.ts +39 -39
  165. package/dist/src/tiles/item-image.js +154 -154
  166. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
  167. package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
  168. package/dist/src/tiles/list/tile-list-compact.d.ts +15 -15
  169. package/dist/src/tiles/list/tile-list-compact.js +114 -114
  170. package/dist/src/tiles/list/tile-list.d.ts +50 -50
  171. package/dist/src/tiles/list/tile-list.js +315 -315
  172. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  173. package/dist/src/tiles/mediatype-icon.js +47 -47
  174. package/dist/src/tiles/overlay/icon-overlay.d.ts +10 -10
  175. package/dist/src/tiles/overlay/icon-overlay.js +40 -40
  176. package/dist/src/tiles/overlay/icon-text-overlay.d.ts +9 -9
  177. package/dist/src/tiles/overlay/icon-text-overlay.js +38 -38
  178. package/dist/src/tiles/overlay/text-overlay.d.ts +10 -10
  179. package/dist/src/tiles/overlay/text-overlay.js +42 -42
  180. package/dist/src/tiles/review-block.d.ts +12 -12
  181. package/dist/src/tiles/review-block.js +56 -56
  182. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  183. package/dist/src/tiles/text-snippet-block.js +73 -73
  184. package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
  185. package/dist/src/tiles/tile-dispatcher.js +229 -229
  186. package/dist/src/tiles/tile-display-value-provider.d.ts +47 -47
  187. package/dist/src/tiles/tile-display-value-provider.js +94 -94
  188. package/dist/src/utils/analytics-events.d.ts +28 -28
  189. package/dist/src/utils/analytics-events.js +30 -30
  190. package/dist/src/utils/array-equals.d.ts +4 -4
  191. package/dist/src/utils/array-equals.js +10 -10
  192. package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -11
  193. package/dist/src/utils/collapse-repeated-quotes.js +13 -13
  194. package/dist/src/utils/facet-utils.d.ts +83 -0
  195. package/dist/src/utils/facet-utils.js +146 -0
  196. package/dist/src/utils/facet-utils.js.map +1 -0
  197. package/dist/src/utils/format-count.d.ts +7 -7
  198. package/dist/src/utils/format-count.js +76 -76
  199. package/dist/src/utils/format-date.d.ts +2 -2
  200. package/dist/src/utils/format-date.js +25 -25
  201. package/dist/src/utils/format-unit-size.d.ts +2 -2
  202. package/dist/src/utils/format-unit-size.js +33 -33
  203. package/dist/src/utils/local-date-from-utc.d.ts +9 -9
  204. package/dist/src/utils/local-date-from-utc.js +15 -15
  205. package/dist/src/utils/log.d.ts +7 -7
  206. package/dist/src/utils/log.js +15 -15
  207. package/dist/src/utils/resolve-mediatype.d.ts +8 -8
  208. package/dist/src/utils/resolve-mediatype.js +23 -23
  209. package/dist/src/utils/sha1.d.ts +2 -2
  210. package/dist/src/utils/sha1.js +8 -8
  211. package/dist/test/collection-browser.test.d.ts +1 -1
  212. package/dist/test/collection-browser.test.js +1294 -1293
  213. package/dist/test/collection-browser.test.js.map +1 -1
  214. package/dist/test/collection-facets/facet-row.test.d.ts +1 -1
  215. package/dist/test/collection-facets/facet-row.test.js +227 -203
  216. package/dist/test/collection-facets/facet-row.test.js.map +1 -1
  217. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  218. package/dist/test/collection-facets/facets-template.test.js +91 -114
  219. package/dist/test/collection-facets/facets-template.test.js.map +1 -1
  220. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  221. package/dist/test/collection-facets/more-facets-content.test.js +150 -141
  222. package/dist/test/collection-facets/more-facets-content.test.js.map +1 -1
  223. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  224. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  225. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
  226. package/dist/test/collection-facets/toggle-switch.test.js +73 -73
  227. package/dist/test/collection-facets.test.d.ts +2 -2
  228. package/dist/test/collection-facets.test.js +652 -652
  229. package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -1
  230. package/dist/test/data-source/collection-browser-data-source.test.js +89 -89
  231. package/dist/test/empty-placeholder.test.d.ts +1 -1
  232. package/dist/test/empty-placeholder.test.js +63 -63
  233. package/dist/test/expanded-date-picker.test.d.ts +1 -1
  234. package/dist/test/expanded-date-picker.test.js +95 -95
  235. package/dist/test/icon-overlay.test.d.ts +1 -1
  236. package/dist/test/icon-overlay.test.js +24 -24
  237. package/dist/test/image-block.test.d.ts +1 -1
  238. package/dist/test/image-block.test.js +48 -48
  239. package/dist/test/item-image.test.d.ts +1 -1
  240. package/dist/test/item-image.test.js +85 -85
  241. package/dist/test/manage/manage-bar.test.d.ts +1 -1
  242. package/dist/test/manage/manage-bar.test.js +81 -81
  243. package/dist/test/mediatype-config.test.d.ts +1 -1
  244. package/dist/test/mediatype-config.test.js +16 -16
  245. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  246. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  247. package/dist/test/mocks/mock-search-responses.d.ts +25 -24
  248. package/dist/test/mocks/mock-search-responses.js +942 -860
  249. package/dist/test/mocks/mock-search-responses.js.map +1 -1
  250. package/dist/test/mocks/mock-search-service.d.ts +15 -15
  251. package/dist/test/mocks/mock-search-service.js +54 -53
  252. package/dist/test/mocks/mock-search-service.js.map +1 -1
  253. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  254. package/dist/test/restoration-state-handler.test.js +270 -270
  255. package/dist/test/review-block.test.d.ts +1 -1
  256. package/dist/test/review-block.test.js +44 -44
  257. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  258. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  259. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  260. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  261. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  262. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +426 -426
  263. package/dist/test/text-overlay.test.d.ts +1 -1
  264. package/dist/test/text-overlay.test.js +48 -48
  265. package/dist/test/text-snippet-block.test.d.ts +1 -1
  266. package/dist/test/text-snippet-block.test.js +57 -57
  267. package/dist/test/tile-stats.test.d.ts +1 -1
  268. package/dist/test/tile-stats.test.js +81 -81
  269. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  270. package/dist/test/tiles/grid/account-tile.test.js +76 -76
  271. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  272. package/dist/test/tiles/grid/collection-tile.test.js +73 -73
  273. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  274. package/dist/test/tiles/grid/item-tile.test.js +312 -312
  275. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
  276. package/dist/test/tiles/grid/search-tile.test.js +51 -51
  277. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  278. package/dist/test/tiles/hover/hover-pane-controller.test.js +259 -259
  279. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  280. package/dist/test/tiles/hover/tile-hover-pane.test.js +56 -56
  281. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  282. package/dist/test/tiles/list/tile-list-compact.test.js +143 -143
  283. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  284. package/dist/test/tiles/list/tile-list.test.js +297 -297
  285. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  286. package/dist/test/tiles/tile-dispatcher.test.js +100 -100
  287. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
  288. package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
  289. package/dist/test/utils/array-equals.test.d.ts +1 -1
  290. package/dist/test/utils/array-equals.test.js +26 -26
  291. package/dist/test/utils/format-count.test.d.ts +1 -1
  292. package/dist/test/utils/format-count.test.js +23 -23
  293. package/dist/test/utils/format-date.test.d.ts +1 -1
  294. package/dist/test/utils/format-date.test.js +17 -17
  295. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  296. package/dist/test/utils/format-unit-size.test.js +17 -17
  297. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
  298. package/dist/test/utils/local-date-from-utc.test.js +26 -26
  299. package/local.archive.org.cert +86 -86
  300. package/local.archive.org.key +27 -27
  301. package/package.json +1 -1
  302. package/renovate.json +6 -6
  303. package/src/collection-browser.ts +106 -19
  304. package/src/collection-facets/facet-row.ts +5 -4
  305. package/src/collection-facets/facets-template.ts +10 -114
  306. package/src/collection-facets/more-facets-content.ts +219 -144
  307. package/src/collection-facets.ts +24 -12
  308. package/src/utils/facet-utils.ts +181 -0
  309. package/test/collection-browser.test.ts +1 -0
  310. package/test/collection-facets/facet-row.test.ts +30 -6
  311. package/test/collection-facets/facets-template.test.ts +6 -32
  312. package/test/collection-facets/more-facets-content.test.ts +46 -35
  313. package/test/mocks/mock-search-responses.ts +86 -0
  314. package/test/mocks/mock-search-service.ts +2 -0
  315. package/web-dev-server.config.mjs +30 -30
  316. package/web-test-runner.config.mjs +41 -41
@@ -1,261 +1,308 @@
1
- import { __decorate } from "tslib";
2
- /* eslint-disable dot-notation */
3
- /* eslint-disable lit-a11y/click-events-have-key-events */
4
- import { css, html, LitElement, nothing, } from 'lit';
5
- import { customElement, property, state } from 'lit/decorators.js';
6
- import { AggregationSortType, } from '@internetarchive/search-service';
7
- import { facetTitles, suppressedCollections, valueFacetSort, defaultFacetSort, } from '../models';
8
- import '@internetarchive/ia-activity-indicator/ia-activity-indicator';
9
- import './more-facets-pagination';
10
- import './facets-template';
11
- import { analyticsActions, analyticsCategories, } from '../utils/analytics-events';
12
- import './toggle-switch';
13
- import { srOnlyStyle } from '../styles/sr-only';
14
- let MoreFacetsContent = class MoreFacetsContent extends LitElement {
15
- constructor() {
16
- super(...arguments);
17
- this.sortedBy = AggregationSortType.COUNT;
18
- this.facetGroup = [];
19
- this.facetGroupTitle = '';
20
- this.pageNumber = 1;
21
- /**
22
- * Facets are loading on popup
23
- */
24
- this.facetsLoading = true;
25
- this.paginationSize = 0;
26
- this.facetsType = 'modal';
27
- this.facetsPerPage = 35;
28
- }
29
- updated(changed) {
30
- if (changed.has('facetKey') ||
31
- changed.has('facetAggregationKey') ||
32
- changed.has('query') ||
33
- changed.has('searchType') ||
34
- changed.has('filterMap')) {
35
- this.facetsLoading = true;
36
- this.pageNumber = 1;
37
- this.sortedBy = defaultFacetSort[this.facetKey];
38
- this.updateSpecificFacets();
39
- }
40
- if (changed.has('pageNumber')) {
41
- this.facetGroup = this.aggregationFacetGroups;
42
- }
43
- }
44
- firstUpdated() {
45
- this.setupEscapeListeners();
46
- }
47
- /**
48
- * Close more facets modal on Escape click
49
- */
50
- setupEscapeListeners() {
51
- if (this.modalManager) {
52
- document.addEventListener('keydown', (e) => {
53
- var _a;
54
- if (e.key === 'Escape') {
55
- (_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.closeModal();
56
- }
57
- });
58
- }
59
- else {
60
- document.removeEventListener('keydown', () => { });
61
- }
62
- }
63
- /**
64
- * Whether facet requests are for the search_results page type (either defaulted or explicitly).
65
- */
66
- get isSearchResultsPage() {
67
- var _a;
68
- // Default page type is search_results when none is specified, so we check
69
- // for undefined as well.
70
- const pageType = (_a = this.pageSpecifierParams) === null || _a === void 0 ? void 0 : _a.pageType;
71
- return pageType === undefined || pageType === 'search_results';
72
- }
73
- /**
74
- * Get specific facets data from search-service API based of currently query params
75
- * - this.aggregations - hold result of search service and being used for further processing.
76
- */
77
- async updateSpecificFacets() {
78
- var _a, _b, _c, _d, _e, _f;
79
- const trimmedQuery = (_a = this.query) === null || _a === void 0 ? void 0 : _a.trim();
80
- if (!trimmedQuery && this.isSearchResultsPage)
81
- return; // The search page _requires_ a query
82
- const aggregations = {
83
- simpleParams: [this.facetAggregationKey],
84
- };
85
- const aggregationsSize = 65535; // todo - do we want to have all the records at once?
86
- const params = {
87
- ...this.pageSpecifierParams,
88
- query: trimmedQuery || '',
89
- filters: this.filterMap,
90
- aggregations,
91
- aggregationsSize,
92
- rows: 0, // todo - do we want server-side pagination with offset/page/limit flag?
93
- };
94
- const results = await ((_b = this.searchService) === null || _b === void 0 ? void 0 : _b.search(params, this.searchType));
95
- this.aggregations = (_c = results === null || results === void 0 ? void 0 : results.success) === null || _c === void 0 ? void 0 : _c.response.aggregations;
96
- this.facetGroup = this.aggregationFacetGroups;
97
- this.facetsLoading = false;
98
- const collectionTitles = (_e = (_d = results === null || results === void 0 ? void 0 : results.success) === null || _d === void 0 ? void 0 : _d.response) === null || _e === void 0 ? void 0 : _e.collectionTitles;
99
- if (collectionTitles) {
100
- for (const [id, title] of Object.entries(collectionTitles)) {
101
- (_f = this.collectionTitles) === null || _f === void 0 ? void 0 : _f.set(id, title);
102
- }
103
- }
104
- }
105
- pageNumberClicked(e) {
106
- var _a, _b;
107
- const page = (_a = e === null || e === void 0 ? void 0 : e.detail) === null || _a === void 0 ? void 0 : _a.page;
108
- if (page) {
109
- this.pageNumber = Number(page);
110
- }
111
- (_b = this.analyticsHandler) === null || _b === void 0 ? void 0 : _b.sendEvent({
112
- category: analyticsCategories.default,
113
- action: analyticsActions.moreFacetsPageChange,
114
- label: `${this.pageNumber}`,
115
- });
116
- }
117
- /**
118
- * Combines the selected facets with the aggregations to create a single list of facets
119
- */
120
- get mergedFacets() {
121
- var _a;
122
- const facetGroups = [];
123
- const selectedFacetGroup = this.selectedFacetGroups.find(group => group.key === this.facetKey);
124
- const aggregateFacetGroup = this.aggregationFacetGroups.find(group => group.key === this.facetKey);
125
- // if the user selected a facet, but it's not in the aggregation, we add it as-is
126
- if (selectedFacetGroup && !aggregateFacetGroup) {
127
- facetGroups.push(selectedFacetGroup);
128
- return facetGroups;
129
- }
130
- // if we don't have an aggregate facet group, don't add this to the list
131
- if (!aggregateFacetGroup)
132
- return facetGroups;
133
- // start with either the selected group if we have one, or the aggregate group
134
- const facetGroup = selectedFacetGroup !== null && selectedFacetGroup !== void 0 ? selectedFacetGroup : aggregateFacetGroup;
135
- // attach the counts to the selected buckets
136
- const bucketsWithCount = (_a = selectedFacetGroup === null || selectedFacetGroup === void 0 ? void 0 : selectedFacetGroup.buckets.map(bucket => {
137
- const selectedBucket = aggregateFacetGroup.buckets.find(b => b.key === bucket.key);
138
- return selectedBucket
139
- ? {
140
- ...bucket,
141
- count: selectedBucket.count,
142
- }
143
- : bucket;
144
- })) !== null && _a !== void 0 ? _a : [];
145
- // append any additional buckets that were not selected
146
- aggregateFacetGroup.buckets.forEach(bucket => {
147
- const existingBucket = bucketsWithCount.find(b => b.key === bucket.key);
148
- if (existingBucket)
149
- return;
150
- bucketsWithCount.push(bucket);
151
- });
152
- facetGroup.buckets = bucketsWithCount;
153
- facetGroups.push(facetGroup);
154
- return facetGroups;
155
- }
156
- /**
157
- * Converts the selected facets to a `FacetGroup` array,
158
- * which is easier to work with
159
- */
160
- get selectedFacetGroups() {
161
- if (!this.selectedFacets)
162
- return [];
163
- const facetGroups = Object.entries(this.selectedFacets).map(([key, selectedFacets]) => {
164
- const option = key;
165
- const title = facetTitles[option];
166
- const buckets = Object.entries(selectedFacets).map(([value, data]) => {
167
- const displayText = value;
168
- return {
169
- displayText,
170
- key: value,
171
- count: data === null || data === void 0 ? void 0 : data.count,
172
- state: data === null || data === void 0 ? void 0 : data.state,
173
- };
174
- });
175
- return {
176
- title,
177
- key: option,
178
- buckets,
179
- };
180
- });
181
- return facetGroups;
182
- }
183
- /**
184
- * Converts the raw `aggregations` to `FacetGroups`, which are easier to use
185
- */
186
- get aggregationFacetGroups() {
187
- var _a;
188
- const facetGroups = [];
189
- Object.entries((_a = this.aggregations) !== null && _a !== void 0 ? _a : []).forEach(([key, aggregation]) => {
190
- // the year_histogram data is in a different format so can't be handled here
191
- if (key === 'year_histogram')
192
- return;
193
- const option = key;
194
- this.facetGroupTitle = facetTitles[option];
195
- // sort facets in specific order
196
- let castedBuckets = aggregation.getSortedBuckets(this.sortedBy);
197
- if (option === 'collection') {
198
- // we are not showing fav- collections or certain deemphasized collections in facets
199
- castedBuckets = castedBuckets === null || castedBuckets === void 0 ? void 0 : castedBuckets.filter(bucket => {
200
- var _a;
201
- const bucketKey = (_a = bucket === null || bucket === void 0 ? void 0 : bucket.key) === null || _a === void 0 ? void 0 : _a.toString();
202
- return (!suppressedCollections[bucketKey] && !(bucketKey === null || bucketKey === void 0 ? void 0 : bucketKey.startsWith('fav-')));
203
- });
204
- }
205
- // find length and pagination size for modal pagination
206
- const { length } = Object.keys(castedBuckets);
207
- this.paginationSize = Math.ceil(length / this.facetsPerPage);
208
- // render only items which will be visible as per this.facetsPerPage
209
- const bucketsMaxSix = castedBuckets === null || castedBuckets === void 0 ? void 0 : castedBuckets.slice((this.pageNumber - 1) * this.facetsPerPage, this.pageNumber * this.facetsPerPage);
210
- const facetBucket = bucketsMaxSix.map(bucket => {
211
- const bucketKey = bucket.key;
212
- return {
213
- displayText: `${bucket.key}`,
214
- key: `${bucketKey}`,
215
- count: bucket.doc_count,
216
- state: 'none',
217
- };
218
- });
219
- const group = {
220
- title: this.facetGroupTitle,
221
- key: option,
222
- buckets: facetBucket,
223
- };
224
- facetGroups.push(group);
225
- });
226
- return facetGroups;
227
- }
228
- get getMoreFacetsTemplate() {
229
- var _a;
1
+ import { __decorate } from "tslib";
2
+ /* eslint-disable dot-notation */
3
+ /* eslint-disable lit-a11y/click-events-have-key-events */
4
+ import { css, html, LitElement, nothing, } from 'lit';
5
+ import { customElement, property, state } from 'lit/decorators.js';
6
+ import { AggregationSortType, } from '@internetarchive/search-service';
7
+ import { msg } from '@lit/localize';
8
+ import { facetTitles, suppressedCollections, valueFacetSort, defaultFacetSort, getDefaultSelectedFacets, } from '../models';
9
+ import '@internetarchive/ia-activity-indicator/ia-activity-indicator';
10
+ import './more-facets-pagination';
11
+ import './facets-template';
12
+ import { analyticsActions, analyticsCategories, } from '../utils/analytics-events';
13
+ import './toggle-switch';
14
+ import { srOnlyStyle } from '../styles/sr-only';
15
+ import { mergeSelectedFacets, sortBucketsBySelectionState, updateSelectedFacetBucket, } from '../utils/facet-utils';
16
+ let MoreFacetsContent = class MoreFacetsContent extends LitElement {
17
+ constructor() {
18
+ super(...arguments);
19
+ /**
20
+ * Maximum number of facets to show per page within the modal.
21
+ */
22
+ this.facetsPerPage = 35;
23
+ /**
24
+ * Whether we are waiting for facet data to load.
25
+ * We begin with this set to true so that we show an initial loading indicator.
26
+ */
27
+ this.facetsLoading = true;
28
+ this.sortedBy = AggregationSortType.COUNT;
29
+ /**
30
+ * An object holding any changes the patron has made to their facet selections
31
+ * within the modal dialog but which they have not yet applied. These are
32
+ * eventually merged into the existing `selectedFacets` when the patron applies
33
+ * their changes, or discarded if they cancel/close the dialog.
34
+ */
35
+ this.unappliedFacetChanges = getDefaultSelectedFacets();
36
+ /**
37
+ * Which page of facets we are showing.
38
+ */
39
+ this.pageNumber = 1;
40
+ }
41
+ willUpdate(changed) {
42
+ if (changed.has('aggregations') ||
43
+ changed.has('facetsPerPage') ||
44
+ changed.has('sortedBy') ||
45
+ changed.has('selectedFacets') ||
46
+ changed.has('unappliedFacetChanges')) {
47
+ // Convert the merged selected facets & aggregations into a facet group, and
48
+ // store it for reuse across pages.
49
+ this.facetGroup = this.mergedFacets;
50
+ }
51
+ }
52
+ updated(changed) {
53
+ // If any of the search properties change, it triggers a facet fetch
54
+ if (changed.has('facetKey') ||
55
+ changed.has('query') ||
56
+ changed.has('searchType') ||
57
+ changed.has('filterMap')) {
58
+ this.facetsLoading = true;
59
+ this.pageNumber = 1;
60
+ this.sortedBy = defaultFacetSort[this.facetKey];
61
+ this.updateSpecificFacets();
62
+ }
63
+ }
64
+ firstUpdated() {
65
+ this.setupEscapeListeners();
66
+ }
67
+ /**
68
+ * Close more facets modal on Escape click
69
+ */
70
+ setupEscapeListeners() {
71
+ if (this.modalManager) {
72
+ document.addEventListener('keydown', (e) => {
73
+ var _a;
74
+ if (e.key === 'Escape') {
75
+ (_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.closeModal();
76
+ }
77
+ });
78
+ }
79
+ else {
80
+ document.removeEventListener('keydown', () => { });
81
+ }
82
+ }
83
+ /**
84
+ * Whether facet requests are for the search_results page type (either defaulted or explicitly).
85
+ */
86
+ get isSearchResultsPage() {
87
+ var _a;
88
+ // Default page type is search_results when none is specified, so we check
89
+ // for undefined as well.
90
+ const pageType = (_a = this.pageSpecifierParams) === null || _a === void 0 ? void 0 : _a.pageType;
91
+ return pageType === undefined || pageType === 'search_results';
92
+ }
93
+ /**
94
+ * Get specific facets data from search-service API based of currently query params
95
+ * - this.aggregations - hold result of search service and being used for further processing.
96
+ */
97
+ async updateSpecificFacets() {
98
+ var _a, _b, _c, _d, _e, _f;
99
+ if (!this.facetKey)
100
+ return; // Can't fetch facets if we don't know what type of facets we need!
101
+ const trimmedQuery = (_a = this.query) === null || _a === void 0 ? void 0 : _a.trim();
102
+ if (!trimmedQuery && this.isSearchResultsPage)
103
+ return; // The search page _requires_ a query
104
+ const aggregations = {
105
+ simpleParams: [this.facetKey],
106
+ };
107
+ const aggregationsSize = 65535; // todo - do we want to have all the records at once?
108
+ const params = {
109
+ ...this.pageSpecifierParams,
110
+ query: trimmedQuery || '',
111
+ filters: this.filterMap,
112
+ aggregations,
113
+ aggregationsSize,
114
+ rows: 0, // todo - do we want server-side pagination with offset/page/limit flag?
115
+ };
116
+ const results = await ((_b = this.searchService) === null || _b === void 0 ? void 0 : _b.search(params, this.searchType));
117
+ this.aggregations = (_c = results === null || results === void 0 ? void 0 : results.success) === null || _c === void 0 ? void 0 : _c.response.aggregations;
118
+ this.facetsLoading = false;
119
+ const collectionTitles = (_e = (_d = results === null || results === void 0 ? void 0 : results.success) === null || _d === void 0 ? void 0 : _d.response) === null || _e === void 0 ? void 0 : _e.collectionTitles;
120
+ if (collectionTitles) {
121
+ for (const [id, title] of Object.entries(collectionTitles)) {
122
+ (_f = this.collectionTitles) === null || _f === void 0 ? void 0 : _f.set(id, title);
123
+ }
124
+ }
125
+ }
126
+ /**
127
+ * Handler for page number changes from the pagination widget.
128
+ */
129
+ pageNumberClicked(e) {
130
+ var _a, _b;
131
+ const page = (_a = e === null || e === void 0 ? void 0 : e.detail) === null || _a === void 0 ? void 0 : _a.page;
132
+ if (page) {
133
+ this.pageNumber = Number(page);
134
+ }
135
+ (_b = this.analyticsHandler) === null || _b === void 0 ? void 0 : _b.sendEvent({
136
+ category: analyticsCategories.default,
137
+ action: analyticsActions.moreFacetsPageChange,
138
+ label: `${this.pageNumber}`,
139
+ });
140
+ }
141
+ /**
142
+ * Combines the selected facets with the aggregations to create a single list of facets
143
+ */
144
+ get mergedFacets() {
145
+ var _a;
146
+ if (!this.facetKey || !this.selectedFacets)
147
+ return undefined;
148
+ const { selectedFacetGroup, aggregationFacetGroup } = this;
149
+ const unappliedFacetBuckets = Object.values(this.unappliedFacetChanges[this.facetKey]);
150
+ // If we don't have any aggregations, then there is nothing to show yet
151
+ if (!aggregationFacetGroup)
152
+ return undefined;
153
+ // Start with either the selected group if we have one, or the aggregate group otherwise
154
+ const facetGroup = { ...(selectedFacetGroup !== null && selectedFacetGroup !== void 0 ? selectedFacetGroup : aggregationFacetGroup) };
155
+ // Attach the counts to the selected buckets
156
+ const bucketsWithCount = (_a = selectedFacetGroup === null || selectedFacetGroup === void 0 ? void 0 : selectedFacetGroup.buckets.map(bucket => {
157
+ const selectedBucket = aggregationFacetGroup.buckets.find(b => b.key === bucket.key);
158
+ return selectedBucket
159
+ ? {
160
+ ...bucket,
161
+ count: selectedBucket.count,
162
+ }
163
+ : bucket;
164
+ })) !== null && _a !== void 0 ? _a : [];
165
+ // Sort the buckets by selection state
166
+ // We do this *prior* to considering unapplied selections, because we want the facets
167
+ // to remain in position when they are selected/unselected, rather than re-sort themselves.
168
+ sortBucketsBySelectionState(bucketsWithCount, this.sortedBy);
169
+ // Append any additional buckets that were not selected
170
+ aggregationFacetGroup.buckets.forEach(bucket => {
171
+ const existingBucket = bucketsWithCount.find(b => b.key === bucket.key);
172
+ if (existingBucket)
173
+ return;
174
+ bucketsWithCount.push(bucket);
175
+ });
176
+ // Apply any unapplied selections that appear on this page
177
+ for (const bucket of unappliedFacetBuckets) {
178
+ const existingBucketIndex = bucketsWithCount.findIndex(b => b.key === bucket.key);
179
+ if (existingBucketIndex >= 0) {
180
+ bucketsWithCount[existingBucketIndex] = { ...bucket };
181
+ }
182
+ }
183
+ facetGroup.buckets = bucketsWithCount;
184
+ return facetGroup;
185
+ }
186
+ /**
187
+ * Converts the selected facets for the current facet key to a `FacetGroup`,
188
+ * which is easier to work with.
189
+ */
190
+ get selectedFacetGroup() {
191
+ if (!this.selectedFacets || !this.facetKey)
192
+ return undefined;
193
+ const selectedFacetsForKey = this.selectedFacets[this.facetKey];
194
+ if (!selectedFacetsForKey)
195
+ return undefined;
196
+ const facetGroupTitle = facetTitles[this.facetKey];
197
+ const buckets = Object.entries(selectedFacetsForKey).map(([value, data]) => {
198
+ const displayText = value;
199
+ return {
200
+ displayText,
201
+ key: value,
202
+ count: data === null || data === void 0 ? void 0 : data.count,
203
+ state: data === null || data === void 0 ? void 0 : data.state,
204
+ };
205
+ });
206
+ return {
207
+ title: facetGroupTitle,
208
+ key: this.facetKey,
209
+ buckets,
210
+ };
211
+ }
212
+ /**
213
+ * Converts the raw `aggregations` for the current facet key to a `FacetGroup`,
214
+ * which is easier to work with.
215
+ */
216
+ get aggregationFacetGroup() {
217
+ if (!this.aggregations || !this.facetKey)
218
+ return undefined;
219
+ const currentAggregation = this.aggregations[this.facetKey];
220
+ if (!currentAggregation)
221
+ return undefined;
222
+ const facetGroupTitle = facetTitles[this.facetKey];
223
+ // Order the facets according to the current sort option
224
+ let sortedBuckets = currentAggregation.getSortedBuckets(this.sortedBy);
225
+ if (this.facetKey === 'collection') {
226
+ // we are not showing fav- collections or certain deemphasized collections in facets
227
+ sortedBuckets = sortedBuckets === null || sortedBuckets === void 0 ? void 0 : sortedBuckets.filter(bucket => {
228
+ var _a;
229
+ const bucketKey = (_a = bucket === null || bucket === void 0 ? void 0 : bucket.key) === null || _a === void 0 ? void 0 : _a.toString();
230
+ return (!suppressedCollections[bucketKey] && !(bucketKey === null || bucketKey === void 0 ? void 0 : bucketKey.startsWith('fav-')));
231
+ });
232
+ }
233
+ // Construct the array of facet buckets from the aggregation buckets
234
+ const facetBuckets = sortedBuckets.map(bucket => {
235
+ const bucketKeyStr = `${bucket.key}`;
236
+ return {
237
+ displayText: `${bucketKeyStr}`,
238
+ key: `${bucketKeyStr}`,
239
+ count: bucket.doc_count,
240
+ state: 'none',
241
+ };
242
+ });
243
+ return {
244
+ title: facetGroupTitle,
245
+ key: this.facetKey,
246
+ buckets: facetBuckets,
247
+ };
248
+ }
249
+ /**
250
+ * Returns a FacetGroup representing only the current page of facet buckets to show.
251
+ */
252
+ get facetGroupForCurrentPage() {
253
+ const { facetGroup } = this;
254
+ if (!facetGroup)
255
+ return undefined;
256
+ // Slice out only the current page of facet buckets
257
+ const firstBucketIndexOnPage = (this.pageNumber - 1) * this.facetsPerPage;
258
+ const truncatedBuckets = facetGroup.buckets.slice(firstBucketIndexOnPage, firstBucketIndexOnPage + this.facetsPerPage);
259
+ return {
260
+ ...facetGroup,
261
+ buckets: truncatedBuckets,
262
+ };
263
+ }
264
+ get moreFacetsTemplate() {
230
265
  return html `
231
266
  <facets-template
232
- .facetGroup=${(_a = this.mergedFacets) === null || _a === void 0 ? void 0 : _a.shift()}
267
+ .facetGroup=${this.facetGroupForCurrentPage}
233
268
  .selectedFacets=${this.selectedFacets}
234
- .renderOn=${'modal'}
235
269
  .collectionTitles=${this.collectionTitles}
236
- @selectedFacetsChanged=${(e) => {
237
- this.selectedFacets = e.detail;
270
+ @facetClick=${(e) => {
271
+ if (this.facetKey) {
272
+ this.unappliedFacetChanges = updateSelectedFacetBucket(this.unappliedFacetChanges, this.facetKey, e.detail.bucket);
273
+ }
238
274
  }}
239
275
  ></facets-template>
240
- `;
241
- }
242
- get loaderTemplate() {
276
+ `;
277
+ }
278
+ get loaderTemplate() {
243
279
  return html `<div class="facets-loader">
244
280
  <ia-activity-indicator .mode=${'processing'}></ia-activity-indicator>
245
- </div> `;
246
- }
247
- // render pagination if more then 1 page
248
- get facetsPaginationTemplate() {
249
- return this.paginationSize > 1
281
+ </div> `;
282
+ }
283
+ /**
284
+ * How many pages of facets to show in the modal pagination widget
285
+ */
286
+ get paginationSize() {
287
+ var _a;
288
+ if (!this.aggregations || !this.facetKey)
289
+ return 0;
290
+ // Calculate the appropriate number of pages to show in the modal pagination widget
291
+ const length = (_a = this.aggregations[this.facetKey]) === null || _a === void 0 ? void 0 : _a.buckets.length;
292
+ return Math.ceil(length / this.facetsPerPage);
293
+ }
294
+ // render pagination if more then 1 page
295
+ get facetsPaginationTemplate() {
296
+ return this.paginationSize > 1
250
297
  ? html `<more-facets-pagination
251
298
  .size=${this.paginationSize}
252
299
  .currentPage=${1}
253
300
  @pageNumberClicked=${this.pageNumberClicked}
254
- ></more-facets-pagination>`
255
- : nothing;
256
- }
257
- get footerTemplate() {
258
- if (this.paginationSize > 0) {
301
+ ></more-facets-pagination>`
302
+ : nothing;
303
+ }
304
+ get footerTemplate() {
305
+ if (this.paginationSize > 0) {
259
306
  return html `${this.facetsPaginationTemplate}
260
307
  <div class="footer">
261
308
  <button
@@ -272,92 +319,87 @@ let MoreFacetsContent = class MoreFacetsContent extends LitElement {
272
319
  >
273
320
  Apply filters
274
321
  </button>
275
- </div> `;
276
- }
277
- return nothing;
278
- }
279
- sortFacetAggregation(facetSortType) {
280
- this.sortedBy = facetSortType;
281
- this.dispatchEvent(new CustomEvent('sortedFacets', { detail: this.sortedBy }));
282
- }
283
- get getModalHeaderTemplate() {
284
- var _a;
285
- const facetSort = (_a = this.sortedBy) !== null && _a !== void 0 ? _a : defaultFacetSort[this.facetKey];
286
- const defaultSwitchSide = facetSort === AggregationSortType.COUNT ? 'left' : 'right';
287
- return html `<span class="sr-only">More facets for:</span>
322
+ </div> `;
323
+ }
324
+ return nothing;
325
+ }
326
+ sortFacetAggregation(facetSortType) {
327
+ this.sortedBy = facetSortType;
328
+ this.dispatchEvent(new CustomEvent('sortedFacets', { detail: this.sortedBy }));
329
+ }
330
+ get modalHeaderTemplate() {
331
+ var _a, _b, _c;
332
+ const facetSort = (_a = this.sortedBy) !== null && _a !== void 0 ? _a : defaultFacetSort[this.facetKey];
333
+ const defaultSwitchSide = facetSort === AggregationSortType.COUNT ? 'left' : 'right';
334
+ return html `<span class="sr-only">${msg('More facets for:')}</span>
288
335
  <span class="title">
289
- ${this.facetGroupTitle}
336
+ ${(_b = this.facetGroup) === null || _b === void 0 ? void 0 : _b.title}
290
337
 
291
- <label class="sort-label">Sort by:</label>
292
- ${this.facetKey
338
+ <label class="sort-label">${msg('Sort by:')}</label>
339
+ ${this.facetKey
293
340
  ? html `<toggle-switch
294
341
  class="sort-toggle"
295
342
  leftValue=${AggregationSortType.COUNT}
296
343
  leftLabel="Count"
297
344
  rightValue=${valueFacetSort[this.facetKey]}
298
- rightLabel=${this.facetGroupTitle}
345
+ rightLabel=${(_c = this.facetGroup) === null || _c === void 0 ? void 0 : _c.title}
299
346
  side=${defaultSwitchSide}
300
- @change=${(e) => {
301
- this.sortFacetAggregation(Number(e.detail));
347
+ @change=${(e) => {
348
+ this.sortFacetAggregation(Number(e.detail));
302
349
  }}
303
- ></toggle-switch>`
350
+ ></toggle-switch>`
304
351
  : nothing}
305
- </span>`;
306
- }
307
- render() {
352
+ </span>`;
353
+ }
354
+ render() {
308
355
  return html `
309
- ${this.facetsLoading
310
- ? this.loaderTemplate
356
+ ${this.facetsLoading
357
+ ? this.loaderTemplate
311
358
  : html `
312
359
  <section id="more-facets">
313
- <div class="header-content">${this.getModalHeaderTemplate}</div>
314
- <div class="facets-content">${this.getMoreFacetsTemplate}</div>
360
+ <div class="header-content">${this.modalHeaderTemplate}</div>
361
+ <div class="facets-content">${this.moreFacetsTemplate}</div>
315
362
  ${this.footerTemplate}
316
363
  </section>
317
364
  `}
318
- `;
319
- }
320
- applySearchFacetsClicked() {
321
- var _a, _b;
322
- const event = new CustomEvent('facetsChanged', {
323
- detail: this.selectedFacets,
324
- bubbles: true,
325
- composed: true,
326
- });
327
- this.dispatchEvent(event);
328
- (_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.closeModal();
329
- (_b = this.analyticsHandler) === null || _b === void 0 ? void 0 : _b.sendEvent({
330
- category: analyticsCategories.default,
331
- action: `${analyticsActions.applyMoreFacetsModal}`,
332
- label: `${this.facetKey}`,
333
- });
334
- }
335
- cancelClick() {
336
- var _a, _b;
337
- (_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.closeModal();
338
- (_b = this.analyticsHandler) === null || _b === void 0 ? void 0 : _b.sendEvent({
339
- category: analyticsCategories.default,
340
- action: analyticsActions.closeMoreFacetsModal,
341
- label: `${this.facetKey}`,
342
- });
343
- }
344
- static get styles() {
345
- const modalSubmitButton = css `var(--primaryButtonBGColor, #194880)`;
346
- return [
347
- srOnlyStyle,
365
+ `;
366
+ }
367
+ applySearchFacetsClicked() {
368
+ var _a, _b;
369
+ const mergedSelections = mergeSelectedFacets(this.selectedFacets, this.unappliedFacetChanges);
370
+ const event = new CustomEvent('facetsChanged', {
371
+ detail: mergedSelections,
372
+ bubbles: true,
373
+ composed: true,
374
+ });
375
+ this.dispatchEvent(event);
376
+ // Reset the unapplied changes back to default, now that they have been applied
377
+ this.unappliedFacetChanges = getDefaultSelectedFacets();
378
+ (_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.closeModal();
379
+ (_b = this.analyticsHandler) === null || _b === void 0 ? void 0 : _b.sendEvent({
380
+ category: analyticsCategories.default,
381
+ action: `${analyticsActions.applyMoreFacetsModal}`,
382
+ label: `${this.facetKey}`,
383
+ });
384
+ }
385
+ cancelClick() {
386
+ var _a, _b;
387
+ (_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.closeModal();
388
+ (_b = this.analyticsHandler) === null || _b === void 0 ? void 0 : _b.sendEvent({
389
+ category: analyticsCategories.default,
390
+ action: analyticsActions.closeMoreFacetsModal,
391
+ label: `${this.facetKey}`,
392
+ });
393
+ }
394
+ static get styles() {
395
+ const modalSubmitButton = css `var(--primaryButtonBGColor, #194880)`;
396
+ return [
397
+ srOnlyStyle,
348
398
  css `
349
- @media (max-width: 560px) {
350
- section#more-facets {
351
- max-height: 450px;
352
- }
353
- .facets-content {
354
- overflow-y: auto;
355
- height: 300px;
356
- }
357
- }
358
399
  section#more-facets {
359
400
  overflow: auto;
360
401
  padding: 10px; /* leaves room for scroll bar to appear without overlaying on content */
402
+ --facetsColumnCount: 3;
361
403
  }
362
404
  .header-content .title {
363
405
  display: block;
@@ -409,69 +451,74 @@ let MoreFacetsContent = class MoreFacetsContent extends LitElement {
409
451
  text-align: center;
410
452
  margin-top: 10px;
411
453
  }
412
- `,
413
- ];
414
- }
415
- };
416
- __decorate([
417
- property({ type: String })
418
- ], MoreFacetsContent.prototype, "facetKey", void 0);
419
- __decorate([
420
- property({ type: String })
421
- ], MoreFacetsContent.prototype, "facetAggregationKey", void 0);
422
- __decorate([
423
- property({ type: String })
424
- ], MoreFacetsContent.prototype, "query", void 0);
425
- __decorate([
426
- property({ type: Object })
427
- ], MoreFacetsContent.prototype, "filterMap", void 0);
428
- __decorate([
429
- property({ type: Object })
430
- ], MoreFacetsContent.prototype, "modalManager", void 0);
431
- __decorate([
432
- property({ type: Object })
433
- ], MoreFacetsContent.prototype, "searchService", void 0);
434
- __decorate([
435
- property({ type: String })
436
- ], MoreFacetsContent.prototype, "searchType", void 0);
437
- __decorate([
438
- property({ type: Object })
439
- ], MoreFacetsContent.prototype, "pageSpecifierParams", void 0);
440
- __decorate([
441
- property({ type: Object })
442
- ], MoreFacetsContent.prototype, "collectionTitles", void 0);
443
- __decorate([
444
- property({ type: Object })
445
- ], MoreFacetsContent.prototype, "selectedFacets", void 0);
446
- __decorate([
447
- property({ type: String })
448
- ], MoreFacetsContent.prototype, "sortedBy", void 0);
449
- __decorate([
450
- property({ type: Object, attribute: false })
451
- ], MoreFacetsContent.prototype, "analyticsHandler", void 0);
452
- __decorate([
453
- state()
454
- ], MoreFacetsContent.prototype, "aggregations", void 0);
455
- __decorate([
456
- state()
457
- ], MoreFacetsContent.prototype, "facetGroup", void 0);
458
- __decorate([
459
- state()
460
- ], MoreFacetsContent.prototype, "facetGroupTitle", void 0);
461
- __decorate([
462
- state()
463
- ], MoreFacetsContent.prototype, "pageNumber", void 0);
464
- __decorate([
465
- state()
466
- ], MoreFacetsContent.prototype, "facetsLoading", void 0);
467
- __decorate([
468
- state()
469
- ], MoreFacetsContent.prototype, "paginationSize", void 0);
470
- __decorate([
471
- state()
472
- ], MoreFacetsContent.prototype, "facetsType", void 0);
473
- MoreFacetsContent = __decorate([
474
- customElement('more-facets-content')
475
- ], MoreFacetsContent);
476
- export { MoreFacetsContent };
454
+
455
+ @media (max-width: 560px) {
456
+ section#more-facets {
457
+ max-height: 450px;
458
+ --facetsColumnCount: 1;
459
+ }
460
+ .facets-content {
461
+ overflow-y: auto;
462
+ height: 300px;
463
+ }
464
+ }
465
+ `,
466
+ ];
467
+ }
468
+ };
469
+ __decorate([
470
+ property({ type: String })
471
+ ], MoreFacetsContent.prototype, "facetKey", void 0);
472
+ __decorate([
473
+ property({ type: String })
474
+ ], MoreFacetsContent.prototype, "query", void 0);
475
+ __decorate([
476
+ property({ type: Object })
477
+ ], MoreFacetsContent.prototype, "filterMap", void 0);
478
+ __decorate([
479
+ property({ type: String })
480
+ ], MoreFacetsContent.prototype, "searchType", void 0);
481
+ __decorate([
482
+ property({ type: Object })
483
+ ], MoreFacetsContent.prototype, "pageSpecifierParams", void 0);
484
+ __decorate([
485
+ property({ type: Object })
486
+ ], MoreFacetsContent.prototype, "collectionTitles", void 0);
487
+ __decorate([
488
+ property({ type: Number })
489
+ ], MoreFacetsContent.prototype, "facetsPerPage", void 0);
490
+ __decorate([
491
+ property({ type: Boolean })
492
+ ], MoreFacetsContent.prototype, "facetsLoading", void 0);
493
+ __decorate([
494
+ property({ type: Object })
495
+ ], MoreFacetsContent.prototype, "selectedFacets", void 0);
496
+ __decorate([
497
+ property({ type: String })
498
+ ], MoreFacetsContent.prototype, "sortedBy", void 0);
499
+ __decorate([
500
+ property({ type: Object })
501
+ ], MoreFacetsContent.prototype, "modalManager", void 0);
502
+ __decorate([
503
+ property({ type: Object })
504
+ ], MoreFacetsContent.prototype, "searchService", void 0);
505
+ __decorate([
506
+ property({ type: Object, attribute: false })
507
+ ], MoreFacetsContent.prototype, "analyticsHandler", void 0);
508
+ __decorate([
509
+ state()
510
+ ], MoreFacetsContent.prototype, "aggregations", void 0);
511
+ __decorate([
512
+ state()
513
+ ], MoreFacetsContent.prototype, "facetGroup", void 0);
514
+ __decorate([
515
+ state()
516
+ ], MoreFacetsContent.prototype, "unappliedFacetChanges", void 0);
517
+ __decorate([
518
+ state()
519
+ ], MoreFacetsContent.prototype, "pageNumber", void 0);
520
+ MoreFacetsContent = __decorate([
521
+ customElement('more-facets-content')
522
+ ], MoreFacetsContent);
523
+ export { MoreFacetsContent };
477
524
  //# sourceMappingURL=more-facets-content.js.map