@internetarchive/collection-browser 2.7.14-alpha-webdev7002.4 → 2.7.14-alpha-webdev7397.1

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 (509) hide show
  1. package/.github/workflows/ci.yml +3 -3
  2. package/.github/workflows/gh-pages-main.yml +2 -2
  3. package/.github/workflows/pr-preview.yml +2 -2
  4. package/.prettierignore +1 -0
  5. package/dist/index.d.ts +13 -16
  6. package/dist/index.js +11 -16
  7. package/dist/index.js.map +1 -1
  8. package/dist/src/app-root.d.ts +107 -107
  9. package/dist/src/app-root.js +531 -531
  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/favorite-unfilled.d.ts +1 -1
  30. package/dist/src/assets/img/icons/favorite-unfilled.js +2 -2
  31. package/dist/src/assets/img/icons/filter.d.ts +2 -2
  32. package/dist/src/assets/img/icons/filter.js +2 -2
  33. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  34. package/dist/src/assets/img/icons/login-required.js +2 -2
  35. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  36. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  37. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  38. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  39. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  40. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  41. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  42. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  43. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  44. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  45. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  46. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  47. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  48. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  49. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  50. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  51. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
  52. package/dist/src/assets/img/icons/mediatype/search.js +2 -2
  53. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  54. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  55. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  56. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  57. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  58. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  59. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  60. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  61. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  62. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  63. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  64. package/dist/src/assets/img/icons/null-result.js +2 -2
  65. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  66. package/dist/src/assets/img/icons/restricted.js +2 -2
  67. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  68. package/dist/src/assets/img/icons/reviews.js +2 -2
  69. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  70. package/dist/src/assets/img/icons/upload.js +2 -2
  71. package/dist/src/assets/img/icons/views.d.ts +1 -1
  72. package/dist/src/assets/img/icons/views.js +2 -2
  73. package/dist/src/circular-activity-indicator.d.ts +5 -5
  74. package/dist/src/circular-activity-indicator.js +17 -17
  75. package/dist/src/circular-activity-indicator.js.map +1 -1
  76. package/dist/src/collection-browser.d.ts +606 -606
  77. package/dist/src/collection-browser.js +1684 -1677
  78. package/dist/src/collection-browser.js.map +1 -1
  79. package/dist/src/collection-facets/facet-row.d.ts +30 -30
  80. package/dist/src/collection-facets/facet-row.js +118 -118
  81. package/dist/src/collection-facets/facet-row.js.map +1 -1
  82. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  83. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  84. package/dist/src/collection-facets/facet-tombstone-row.js.map +1 -1
  85. package/dist/src/collection-facets/facets-template.d.ts +13 -13
  86. package/dist/src/collection-facets/facets-template.js +49 -49
  87. package/dist/src/collection-facets/facets-template.js.map +1 -1
  88. package/dist/src/collection-facets/more-facets-content.d.ts +106 -106
  89. package/dist/src/collection-facets/more-facets-content.js +406 -408
  90. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  91. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  92. package/dist/src/collection-facets/more-facets-pagination.js +197 -196
  93. package/dist/src/collection-facets/more-facets-pagination.js.map +1 -1
  94. package/dist/src/collection-facets/smart-facets/dedupe.d.ts +10 -10
  95. package/dist/src/collection-facets/smart-facets/dedupe.js +33 -33
  96. package/dist/src/collection-facets/smart-facets/dedupe.js.map +1 -1
  97. package/dist/src/collection-facets/smart-facets/heuristics/{browser-language/browser-language-heuristic.d.ts → browser-language-heuristic.d.ts} +5 -5
  98. package/dist/src/collection-facets/smart-facets/heuristics/{browser-language/browser-language-heuristic.js → browser-language-heuristic.js} +23 -23
  99. package/dist/src/collection-facets/smart-facets/heuristics/browser-language-heuristic.js.map +1 -0
  100. package/dist/src/collection-facets/smart-facets/heuristics/{query-keywords/query-keywords-heuristic.d.ts → query-keywords-heuristic.d.ts} +5 -4
  101. package/dist/src/collection-facets/smart-facets/heuristics/{query-keywords/query-keywords-map.js → query-keywords-heuristic.js} +45 -35
  102. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.js.map +1 -0
  103. package/dist/src/collection-facets/smart-facets/heuristics/{wikidata/wikidata-heuristic.d.ts → wikidata-heuristic.d.ts} +5 -4
  104. package/dist/src/collection-facets/smart-facets/heuristics/{wikidata/wikidata-entity-map.js → wikidata-heuristic.js} +173 -133
  105. package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.js.map +1 -0
  106. package/dist/src/collection-facets/smart-facets/models.d.ts +26 -26
  107. package/dist/src/collection-facets/smart-facets/models.js +1 -1
  108. package/dist/src/collection-facets/smart-facets/smart-facet-bar.d.ts +31 -31
  109. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +237 -240
  110. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js.map +1 -1
  111. package/dist/src/collection-facets/smart-facets/smart-facet-button.d.ts +11 -11
  112. package/dist/src/collection-facets/smart-facets/smart-facet-button.js +86 -86
  113. package/dist/src/collection-facets/smart-facets/smart-facet-button.js.map +1 -1
  114. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.d.ts +16 -16
  115. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js +100 -100
  116. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js.map +1 -1
  117. package/dist/src/collection-facets/smart-facets/smart-facet-equals.d.ts +2 -2
  118. package/dist/src/collection-facets/smart-facets/smart-facet-equals.js +12 -12
  119. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.d.ts +5 -5
  120. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js +15 -17
  121. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js.map +1 -1
  122. package/dist/src/collection-facets/toggle-switch.d.ts +41 -41
  123. package/dist/src/collection-facets/toggle-switch.js +94 -94
  124. package/dist/src/collection-facets/toggle-switch.js.map +1 -1
  125. package/dist/src/collection-facets.d.ts +103 -103
  126. package/dist/src/collection-facets.js +521 -522
  127. package/dist/src/collection-facets.js.map +1 -1
  128. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +245 -245
  129. package/dist/src/data-source/collection-browser-data-source-interface.js +1 -1
  130. package/dist/src/data-source/collection-browser-data-source-interface.js.map +1 -1
  131. package/dist/src/data-source/collection-browser-data-source.d.ts +377 -377
  132. package/dist/src/data-source/collection-browser-data-source.js +1003 -1004
  133. package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
  134. package/dist/src/data-source/collection-browser-query-state.d.ts +44 -44
  135. package/dist/src/data-source/collection-browser-query-state.js +1 -1
  136. package/dist/src/data-source/models.d.ts +28 -28
  137. package/dist/src/data-source/models.js +8 -8
  138. package/dist/src/empty-placeholder.d.ts +23 -23
  139. package/dist/src/empty-placeholder.js +87 -88
  140. package/dist/src/empty-placeholder.js.map +1 -1
  141. package/dist/src/expanded-date-picker.d.ts +43 -43
  142. package/dist/src/expanded-date-picker.js +109 -109
  143. package/dist/src/expanded-date-picker.js.map +1 -1
  144. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  145. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  146. package/dist/src/language-code-handler/language-code-handler.js.map +1 -1
  147. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  148. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  149. package/dist/src/language-code-handler/language-code-mapping.js.map +1 -1
  150. package/dist/src/manage/manage-bar.d.ts +58 -58
  151. package/dist/src/manage/manage-bar.js +175 -175
  152. package/dist/src/manage/manage-bar.js.map +1 -1
  153. package/dist/src/manage/remove-items-modal-content.d.ts +9 -9
  154. package/dist/src/manage/remove-items-modal-content.js +34 -34
  155. package/dist/src/manage/remove-items-modal-content.js.map +1 -1
  156. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  157. package/dist/src/mediatype/mediatype-config.js +92 -91
  158. package/dist/src/mediatype/mediatype-config.js.map +1 -1
  159. package/dist/src/models.d.ts +228 -228
  160. package/dist/src/models.js +401 -401
  161. package/dist/src/models.js.map +1 -1
  162. package/dist/src/restoration-state-handler.d.ts +70 -70
  163. package/dist/src/restoration-state-handler.js +362 -363
  164. package/dist/src/restoration-state-handler.js.map +1 -1
  165. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  166. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  167. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js.map +1 -1
  168. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
  169. package/dist/src/sort-filter-bar/alpha-bar.js +136 -136
  170. package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -1
  171. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  172. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  173. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  174. package/dist/src/sort-filter-bar/img/list.js +2 -2
  175. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  176. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
  177. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  178. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
  179. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  180. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
  181. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  182. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  183. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  184. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  185. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +223 -223
  186. package/dist/src/sort-filter-bar/sort-filter-bar.js +696 -697
  187. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  188. package/dist/src/styles/ia-button.d.ts +2 -2
  189. package/dist/src/styles/ia-button.js +17 -17
  190. package/dist/src/styles/item-image-styles.d.ts +8 -8
  191. package/dist/src/styles/item-image-styles.js +9 -9
  192. package/dist/src/styles/sr-only.d.ts +1 -1
  193. package/dist/src/styles/sr-only.js +2 -2
  194. package/dist/src/tiles/base-tile-component.d.ts +19 -19
  195. package/dist/src/tiles/base-tile-component.js +64 -64
  196. package/dist/src/tiles/base-tile-component.js.map +1 -1
  197. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  198. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  199. package/dist/src/tiles/collection-browser-loading-tile.js.map +1 -1
  200. package/dist/src/tiles/grid/account-tile.d.ts +18 -18
  201. package/dist/src/tiles/grid/account-tile.js +72 -72
  202. package/dist/src/tiles/grid/account-tile.js.map +1 -1
  203. package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
  204. package/dist/src/tiles/grid/collection-tile.js +80 -80
  205. package/dist/src/tiles/grid/collection-tile.js.map +1 -1
  206. package/dist/src/tiles/grid/item-tile.d.ts +34 -34
  207. package/dist/src/tiles/grid/item-tile.js +159 -160
  208. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  209. package/dist/src/tiles/grid/search-tile.d.ts +10 -10
  210. package/dist/src/tiles/grid/search-tile.js +51 -51
  211. package/dist/src/tiles/grid/search-tile.js.map +1 -1
  212. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  213. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
  214. package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
  215. package/dist/src/tiles/grid/tile-stats.js +54 -54
  216. package/dist/src/tiles/grid/tile-stats.js.map +1 -1
  217. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  218. package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
  219. package/dist/src/tiles/hover/hover-pane-controller.js.map +1 -1
  220. package/dist/src/tiles/hover/tile-hover-pane.d.ts +18 -18
  221. package/dist/src/tiles/hover/tile-hover-pane.js +72 -70
  222. package/dist/src/tiles/hover/tile-hover-pane.js.map +1 -1
  223. package/dist/src/tiles/image-block.d.ts +18 -18
  224. package/dist/src/tiles/image-block.js +89 -89
  225. package/dist/src/tiles/image-block.js.map +1 -1
  226. package/dist/src/tiles/item-image.d.ts +39 -39
  227. package/dist/src/tiles/item-image.js +154 -154
  228. package/dist/src/tiles/item-image.js.map +1 -1
  229. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
  230. package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
  231. package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -1
  232. package/dist/src/tiles/list/tile-list-compact.d.ts +19 -19
  233. package/dist/src/tiles/list/tile-list-compact.js +122 -122
  234. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  235. package/dist/src/tiles/list/tile-list.d.ts +54 -54
  236. package/dist/src/tiles/list/tile-list.js +324 -326
  237. package/dist/src/tiles/list/tile-list.js.map +1 -1
  238. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  239. package/dist/src/tiles/mediatype-icon.js +47 -47
  240. package/dist/src/tiles/mediatype-icon.js.map +1 -1
  241. package/dist/src/tiles/overlay/icon-overlay.d.ts +8 -8
  242. package/dist/src/tiles/overlay/icon-overlay.js +25 -25
  243. package/dist/src/tiles/overlay/icon-overlay.js.map +1 -1
  244. package/dist/src/tiles/overlay/text-overlay.d.ts +9 -9
  245. package/dist/src/tiles/overlay/text-overlay.js +31 -31
  246. package/dist/src/tiles/overlay/text-overlay.js.map +1 -1
  247. package/dist/src/tiles/review-block.d.ts +12 -12
  248. package/dist/src/tiles/review-block.js +56 -56
  249. package/dist/src/tiles/review-block.js.map +1 -1
  250. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  251. package/dist/src/tiles/text-snippet-block.js +73 -73
  252. package/dist/src/tiles/text-snippet-block.js.map +1 -1
  253. package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
  254. package/dist/src/tiles/tile-dispatcher.js +230 -230
  255. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  256. package/dist/src/tiles/tile-display-value-provider.d.ts +47 -47
  257. package/dist/src/tiles/tile-display-value-provider.js +94 -94
  258. package/dist/src/tiles/tile-display-value-provider.js.map +1 -1
  259. package/dist/src/utils/analytics-events.d.ts +28 -28
  260. package/dist/src/utils/analytics-events.js +30 -30
  261. package/dist/src/utils/array-equals.d.ts +4 -4
  262. package/dist/src/utils/array-equals.js +10 -10
  263. package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -11
  264. package/dist/src/utils/collapse-repeated-quotes.js +13 -13
  265. package/dist/src/utils/facet-utils.d.ts +83 -83
  266. package/dist/src/utils/facet-utils.js +145 -145
  267. package/dist/src/utils/facet-utils.js.map +1 -1
  268. package/dist/src/utils/format-count.d.ts +7 -7
  269. package/dist/src/utils/format-count.js +75 -76
  270. package/dist/src/utils/format-count.js.map +1 -1
  271. package/dist/src/utils/format-date.d.ts +2 -2
  272. package/dist/src/utils/format-date.js +27 -27
  273. package/dist/src/utils/format-date.js.map +1 -1
  274. package/dist/src/utils/format-unit-size.d.ts +2 -2
  275. package/dist/src/utils/format-unit-size.js +33 -33
  276. package/dist/src/utils/format-unit-size.js.map +1 -1
  277. package/dist/src/utils/local-date-from-utc.d.ts +9 -9
  278. package/dist/src/utils/local-date-from-utc.js +15 -15
  279. package/dist/src/utils/log.d.ts +7 -7
  280. package/dist/src/utils/log.js +13 -15
  281. package/dist/src/utils/log.js.map +1 -1
  282. package/dist/src/utils/resolve-mediatype.d.ts +8 -8
  283. package/dist/src/utils/resolve-mediatype.js +23 -23
  284. package/dist/src/utils/resolve-mediatype.js.map +1 -1
  285. package/dist/src/utils/sha1.d.ts +2 -2
  286. package/dist/src/utils/sha1.js +8 -8
  287. package/dist/test/collection-browser.test.d.ts +1 -1
  288. package/dist/test/collection-browser.test.js +1309 -1308
  289. package/dist/test/collection-browser.test.js.map +1 -1
  290. package/dist/test/collection-facets/facet-row.test.d.ts +1 -1
  291. package/dist/test/collection-facets/facet-row.test.js +230 -227
  292. package/dist/test/collection-facets/facet-row.test.js.map +1 -1
  293. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  294. package/dist/test/collection-facets/facets-template.test.js +91 -91
  295. package/dist/test/collection-facets/facets-template.test.js.map +1 -1
  296. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  297. package/dist/test/collection-facets/more-facets-content.test.js +140 -141
  298. package/dist/test/collection-facets/more-facets-content.test.js.map +1 -1
  299. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  300. package/dist/test/collection-facets/more-facets-pagination.test.js +116 -117
  301. package/dist/test/collection-facets/more-facets-pagination.test.js.map +1 -1
  302. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
  303. package/dist/test/collection-facets/toggle-switch.test.js +82 -73
  304. package/dist/test/collection-facets/toggle-switch.test.js.map +1 -1
  305. package/dist/test/collection-facets.test.d.ts +2 -2
  306. package/dist/test/collection-facets.test.js +692 -692
  307. package/dist/test/collection-facets.test.js.map +1 -1
  308. package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -1
  309. package/dist/test/data-source/collection-browser-data-source.test.js +89 -89
  310. package/dist/test/data-source/collection-browser-data-source.test.js.map +1 -1
  311. package/dist/test/empty-placeholder.test.d.ts +1 -1
  312. package/dist/test/empty-placeholder.test.js +62 -63
  313. package/dist/test/empty-placeholder.test.js.map +1 -1
  314. package/dist/test/expanded-date-picker.test.d.ts +1 -1
  315. package/dist/test/expanded-date-picker.test.js +97 -96
  316. package/dist/test/expanded-date-picker.test.js.map +1 -1
  317. package/dist/test/icon-overlay.test.d.ts +1 -1
  318. package/dist/test/icon-overlay.test.js +23 -24
  319. package/dist/test/icon-overlay.test.js.map +1 -1
  320. package/dist/test/image-block.test.d.ts +1 -1
  321. package/dist/test/image-block.test.js +106 -107
  322. package/dist/test/image-block.test.js.map +1 -1
  323. package/dist/test/item-image.test.d.ts +1 -1
  324. package/dist/test/item-image.test.js +84 -85
  325. package/dist/test/item-image.test.js.map +1 -1
  326. package/dist/test/manage/manage-bar.test.d.ts +2 -2
  327. package/dist/test/manage/manage-bar.test.js +100 -101
  328. package/dist/test/manage/manage-bar.test.js.map +1 -1
  329. package/dist/test/manage/remove-items-modal-content.test.d.ts +1 -1
  330. package/dist/test/manage/remove-items-modal-content.test.js +44 -45
  331. package/dist/test/manage/remove-items-modal-content.test.js.map +1 -1
  332. package/dist/test/mediatype-config.test.d.ts +1 -1
  333. package/dist/test/mediatype-config.test.js +16 -16
  334. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  335. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  336. package/dist/test/mocks/mock-search-responses.d.ts +25 -25
  337. package/dist/test/mocks/mock-search-responses.js +942 -942
  338. package/dist/test/mocks/mock-search-responses.js.map +1 -1
  339. package/dist/test/mocks/mock-search-service.d.ts +15 -15
  340. package/dist/test/mocks/mock-search-service.js +54 -54
  341. package/dist/test/mocks/mock-search-service.js.map +1 -1
  342. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  343. package/dist/test/restoration-state-handler.test.js +270 -270
  344. package/dist/test/restoration-state-handler.test.js.map +1 -1
  345. package/dist/test/review-block.test.d.ts +1 -1
  346. package/dist/test/review-block.test.js +43 -44
  347. package/dist/test/review-block.test.js.map +1 -1
  348. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  349. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  350. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js.map +1 -1
  351. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  352. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  353. package/dist/test/sort-filter-bar/alpha-bar.test.js.map +1 -1
  354. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  355. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +425 -426
  356. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -1
  357. package/dist/test/text-overlay.test.d.ts +1 -1
  358. package/dist/test/text-overlay.test.js +37 -38
  359. package/dist/test/text-overlay.test.js.map +1 -1
  360. package/dist/test/text-snippet-block.test.d.ts +1 -1
  361. package/dist/test/text-snippet-block.test.js +56 -57
  362. package/dist/test/text-snippet-block.test.js.map +1 -1
  363. package/dist/test/tile-stats.test.d.ts +1 -1
  364. package/dist/test/tile-stats.test.js +98 -99
  365. package/dist/test/tile-stats.test.js.map +1 -1
  366. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  367. package/dist/test/tiles/grid/account-tile.test.js +75 -76
  368. package/dist/test/tiles/grid/account-tile.test.js.map +1 -1
  369. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  370. package/dist/test/tiles/grid/collection-tile.test.js +72 -73
  371. package/dist/test/tiles/grid/collection-tile.test.js.map +1 -1
  372. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  373. package/dist/test/tiles/grid/item-tile.test.js +311 -312
  374. package/dist/test/tiles/grid/item-tile.test.js.map +1 -1
  375. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
  376. package/dist/test/tiles/grid/search-tile.test.js +50 -51
  377. package/dist/test/tiles/grid/search-tile.test.js.map +1 -1
  378. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  379. package/dist/test/tiles/hover/hover-pane-controller.test.js +259 -259
  380. package/dist/test/tiles/hover/hover-pane-controller.test.js.map +1 -1
  381. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  382. package/dist/test/tiles/hover/tile-hover-pane.test.js +56 -56
  383. package/dist/test/tiles/hover/tile-hover-pane.test.js.map +1 -1
  384. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  385. package/dist/test/tiles/list/tile-list-compact.test.js +142 -143
  386. package/dist/test/tiles/list/tile-list-compact.test.js.map +1 -1
  387. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  388. package/dist/test/tiles/list/tile-list.test.js +296 -297
  389. package/dist/test/tiles/list/tile-list.test.js.map +1 -1
  390. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  391. package/dist/test/tiles/tile-dispatcher.test.js +100 -100
  392. package/dist/test/tiles/tile-dispatcher.test.js.map +1 -1
  393. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
  394. package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
  395. package/dist/test/utils/array-equals.test.d.ts +1 -1
  396. package/dist/test/utils/array-equals.test.js +26 -26
  397. package/dist/test/utils/format-count.test.d.ts +1 -1
  398. package/dist/test/utils/format-count.test.js +23 -23
  399. package/dist/test/utils/format-count.test.js.map +1 -1
  400. package/dist/test/utils/format-date.test.d.ts +1 -1
  401. package/dist/test/utils/format-date.test.js +30 -30
  402. package/dist/test/utils/format-date.test.js.map +1 -1
  403. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  404. package/dist/test/utils/format-unit-size.test.js +17 -17
  405. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
  406. package/dist/test/utils/local-date-from-utc.test.js +26 -26
  407. package/dist/test/utils/local-date-from-utc.test.js.map +1 -1
  408. package/eslint.config.mjs +53 -0
  409. package/index.html +0 -3
  410. package/index.ts +1 -15
  411. package/package.json +41 -39
  412. package/src/app-root.ts +21 -22
  413. package/src/collection-browser.ts +50 -42
  414. package/src/collection-facets/facets-template.ts +7 -6
  415. package/src/collection-facets/more-facets-content.ts +11 -13
  416. package/src/collection-facets/more-facets-pagination.ts +3 -2
  417. package/src/collection-facets/smart-facets/dedupe.ts +2 -2
  418. package/src/collection-facets/smart-facets/heuristics/{browser-language/browser-language-heuristic.ts → browser-language-heuristic.ts} +1 -1
  419. package/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.ts +55 -0
  420. package/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.ts +191 -0
  421. package/src/collection-facets/smart-facets/smart-facet-bar.ts +6 -8
  422. package/src/collection-facets/smart-facets/smart-facet-button.ts +5 -3
  423. package/src/collection-facets/smart-facets/smart-facet-dropdown.ts +4 -4
  424. package/src/collection-facets/smart-facets/smart-facet-heuristics.ts +8 -13
  425. package/src/collection-facets/toggle-switch.ts +2 -2
  426. package/src/collection-facets.ts +18 -19
  427. package/src/data-source/collection-browser-data-source-interface.ts +5 -1
  428. package/src/data-source/collection-browser-data-source.ts +37 -34
  429. package/src/empty-placeholder.ts +19 -16
  430. package/src/expanded-date-picker.ts +1 -1
  431. package/src/language-code-handler/language-code-handler.ts +1 -1
  432. package/src/manage/manage-bar.ts +23 -20
  433. package/src/manage/remove-items-modal-content.ts +2 -2
  434. package/src/mediatype/mediatype-config.ts +1 -0
  435. package/src/models.ts +3 -3
  436. package/src/restoration-state-handler.ts +14 -15
  437. package/src/sort-filter-bar/alpha-bar.ts +16 -17
  438. package/src/sort-filter-bar/sort-filter-bar.ts +14 -15
  439. package/src/tiles/grid/account-tile.ts +1 -1
  440. package/src/tiles/grid/collection-tile.ts +1 -1
  441. package/src/tiles/grid/item-tile.ts +9 -9
  442. package/src/tiles/grid/tile-stats.ts +4 -4
  443. package/src/tiles/hover/hover-pane-controller.ts +1 -1
  444. package/src/tiles/hover/tile-hover-pane.ts +4 -2
  445. package/src/tiles/item-image.ts +1 -1
  446. package/src/tiles/list/tile-list-compact.ts +2 -2
  447. package/src/tiles/list/tile-list.ts +22 -24
  448. package/src/tiles/tile-dispatcher.ts +5 -5
  449. package/src/tiles/tile-display-value-provider.ts +4 -4
  450. package/src/utils/facet-utils.ts +6 -6
  451. package/src/utils/format-count.ts +2 -3
  452. package/src/utils/format-date.ts +1 -1
  453. package/src/utils/format-unit-size.ts +1 -1
  454. package/src/utils/log.ts +1 -3
  455. package/test/collection-browser.test.ts +125 -124
  456. package/test/collection-facets/facet-row.test.ts +31 -28
  457. package/test/collection-facets/facets-template.test.ts +9 -9
  458. package/test/collection-facets/more-facets-content.test.ts +14 -15
  459. package/test/collection-facets/more-facets-pagination.test.ts +18 -19
  460. package/test/collection-facets/toggle-switch.test.ts +28 -18
  461. package/test/collection-facets.test.ts +46 -39
  462. package/test/data-source/collection-browser-data-source.test.ts +2 -2
  463. package/test/empty-placeholder.test.ts +6 -7
  464. package/test/expanded-date-picker.test.ts +25 -20
  465. package/test/icon-overlay.test.ts +0 -1
  466. package/test/image-block.test.ts +6 -7
  467. package/test/item-image.test.ts +0 -1
  468. package/test/manage/manage-bar.test.ts +19 -16
  469. package/test/manage/remove-items-modal-content.test.ts +4 -5
  470. package/test/mocks/mock-search-responses.ts +2 -1
  471. package/test/mocks/mock-search-service.ts +1 -1
  472. package/test/restoration-state-handler.test.ts +12 -12
  473. package/test/review-block.test.ts +1 -2
  474. package/test/sort-filter-bar/alpha-bar-tooltip.test.ts +1 -1
  475. package/test/sort-filter-bar/alpha-bar.test.ts +5 -5
  476. package/test/sort-filter-bar/sort-filter-bar.test.ts +38 -39
  477. package/test/text-overlay.test.ts +0 -1
  478. package/test/text-snippet-block.test.ts +5 -6
  479. package/test/tile-stats.test.ts +26 -35
  480. package/test/tiles/grid/account-tile.test.ts +2 -3
  481. package/test/tiles/grid/collection-tile.test.ts +3 -4
  482. package/test/tiles/grid/item-tile.test.ts +13 -14
  483. package/test/tiles/grid/search-tile.test.ts +1 -2
  484. package/test/tiles/hover/hover-pane-controller.test.ts +15 -15
  485. package/test/tiles/hover/tile-hover-pane.test.ts +5 -5
  486. package/test/tiles/list/tile-list-compact.test.ts +1 -2
  487. package/test/tiles/list/tile-list.test.ts +10 -11
  488. package/test/tiles/tile-dispatcher.test.ts +5 -5
  489. package/test/utils/format-count.test.ts +1 -1
  490. package/test/utils/format-date.test.ts +1 -1
  491. package/test/utils/local-date-from-utc.test.ts +1 -1
  492. package/tsconfig.json +0 -1
  493. package/dist/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.js.map +0 -1
  494. package/dist/src/collection-facets/smart-facets/heuristics/index.d.ts +0 -3
  495. package/dist/src/collection-facets/smart-facets/heuristics/index.js +0 -4
  496. package/dist/src/collection-facets/smart-facets/heuristics/index.js.map +0 -1
  497. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.js +0 -14
  498. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.js.map +0 -1
  499. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.d.ts +0 -6
  500. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.js.map +0 -1
  501. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.d.ts +0 -9
  502. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.js.map +0 -1
  503. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js +0 -49
  504. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js.map +0 -1
  505. package/src/collection-facets/smart-facets/heuristics/index.ts +0 -3
  506. package/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.ts +0 -17
  507. package/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.ts +0 -36
  508. package/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.ts +0 -134
  509. package/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.ts +0 -60
@@ -1,30 +1,30 @@
1
- import { LitElement, TemplateResult, CSSResultGroup } from 'lit';
2
- import type { FacetOption, FacetBucket, FacetState } from '../models';
3
- import type { CollectionTitles } from '../data-source/models';
4
- export declare class FacetRow extends LitElement {
5
- /** The name of the facet group to which this facet belongs (e.g., "mediatype") */
6
- facetType?: FacetOption;
7
- /** The facet bucket containing details about the state, count, and key for this row */
8
- bucket?: FacetBucket;
9
- /** The collection name cache for converting collection identifiers to titles */
10
- collectionTitles?: CollectionTitles;
11
- render(): TemplateResult<1>;
12
- /**
13
- * Template for the full facet row, including the positive/negative checks,
14
- * the display name, and the count.
15
- */
16
- private get facetRowTemplate();
17
- /**
18
- * Handler for whenever this facet is clicked & its state changes
19
- */
20
- private facetClicked;
21
- /**
22
- * Emits a `facetClick` event with details about this facet & its current state
23
- */
24
- private dispatchFacetClickEvent;
25
- /**
26
- * Returns the composed facet state corresponding to a positive or negative facet's checked state
27
- */
28
- static getFacetState(checked: boolean, negative: boolean): FacetState;
29
- static get styles(): CSSResultGroup;
30
- }
1
+ import { LitElement, TemplateResult, CSSResultGroup } from 'lit';
2
+ import type { FacetOption, FacetBucket, FacetState } from '../models';
3
+ import type { CollectionTitles } from '../data-source/models';
4
+ export declare class FacetRow extends LitElement {
5
+ /** The name of the facet group to which this facet belongs (e.g., "mediatype") */
6
+ facetType?: FacetOption;
7
+ /** The facet bucket containing details about the state, count, and key for this row */
8
+ bucket?: FacetBucket;
9
+ /** The collection name cache for converting collection identifiers to titles */
10
+ collectionTitles?: CollectionTitles;
11
+ render(): TemplateResult<1>;
12
+ /**
13
+ * Template for the full facet row, including the positive/negative checks,
14
+ * the display name, and the count.
15
+ */
16
+ private get facetRowTemplate();
17
+ /**
18
+ * Handler for whenever this facet is clicked & its state changes
19
+ */
20
+ private facetClicked;
21
+ /**
22
+ * Emits a `facetClick` event with details about this facet & its current state
23
+ */
24
+ private dispatchFacetClickEvent;
25
+ /**
26
+ * Returns the composed facet state corresponding to a positive or negative facet's checked state
27
+ */
28
+ static getFacetState(checked: boolean, negative: boolean): FacetState;
29
+ static get styles(): CSSResultGroup;
30
+ }
@@ -1,48 +1,48 @@
1
- var FacetRow_1;
2
- import { __decorate } from "tslib";
3
- import { css, html, LitElement, nothing, } from 'lit';
4
- import { customElement, property } from 'lit/decorators.js';
5
- import eyeIcon from '../assets/img/icons/eye';
6
- import eyeClosedIcon from '../assets/img/icons/eye-closed';
7
- let FacetRow = FacetRow_1 = class FacetRow extends LitElement {
8
- //
9
- // COMPONENT LIFECYCLE METHODS
10
- //
11
- render() {
12
- return html `${this.facetRowTemplate}`;
13
- }
14
- //
15
- // TEMPLATE GETTERS
16
- //
17
- /**
18
- * Template for the full facet row, including the positive/negative checks,
19
- * the display name, and the count.
20
- */
21
- get facetRowTemplate() {
22
- var _a, _b, _c, _d;
23
- const { bucket, facetType } = this;
24
- if (!bucket || !facetType)
25
- return nothing;
26
- const showOnlyCheckboxId = `${facetType}:${bucket.key}-show-only`;
27
- const negativeCheckboxId = `${facetType}:${bucket.key}-negative`;
28
- // For collections, we render the collection title as a link.
29
- // For other facet types, we just have a static value to use.
30
- const bucketTextDisplay = facetType !== 'collection'
31
- ? html `${(_a = bucket.displayText) !== null && _a !== void 0 ? _a : bucket.key}`
1
+ var FacetRow_1;
2
+ import { __decorate } from "tslib";
3
+ import { css, html, LitElement, nothing, } from 'lit';
4
+ import { customElement, property } from 'lit/decorators.js';
5
+ import eyeIcon from '../assets/img/icons/eye';
6
+ import eyeClosedIcon from '../assets/img/icons/eye-closed';
7
+ let FacetRow = FacetRow_1 = class FacetRow extends LitElement {
8
+ //
9
+ // COMPONENT LIFECYCLE METHODS
10
+ //
11
+ render() {
12
+ return html `${this.facetRowTemplate}`;
13
+ }
14
+ //
15
+ // TEMPLATE GETTERS
16
+ //
17
+ /**
18
+ * Template for the full facet row, including the positive/negative checks,
19
+ * the display name, and the count.
20
+ */
21
+ get facetRowTemplate() {
22
+ var _a, _b, _c, _d;
23
+ const { bucket, facetType } = this;
24
+ if (!bucket || !facetType)
25
+ return nothing;
26
+ const showOnlyCheckboxId = `${facetType}:${bucket.key}-show-only`;
27
+ const negativeCheckboxId = `${facetType}:${bucket.key}-negative`;
28
+ // For collections, we render the collection title as a link.
29
+ // For other facet types, we just have a static value to use.
30
+ const bucketTextDisplay = facetType !== 'collection'
31
+ ? html `${(_a = bucket.displayText) !== null && _a !== void 0 ? _a : bucket.key}`
32
32
  : html `<a href="/details/${bucket.key}">
33
33
  ${(_c = (_b = this.collectionTitles) === null || _b === void 0 ? void 0 : _b.get(bucket.key)) !== null && _c !== void 0 ? _c : bucket.key}
34
- </a> `;
35
- const facetHidden = bucket.state === 'hidden';
36
- const facetSelected = bucket.state === 'selected';
37
- const titleText = `${facetType}: ${(_d = bucket.displayText) !== null && _d !== void 0 ? _d : bucket.key}`;
38
- const onlyShowText = facetSelected
39
- ? `Show all ${facetType}s`
40
- : `Only show ${titleText}`;
41
- const hideText = `Hide ${titleText}`;
42
- const unhideText = `Unhide ${titleText}`;
43
- const showHideText = facetHidden ? unhideText : hideText;
44
- const ariaLabel = `${titleText}, ${bucket.count} results`;
45
- // Added data-testid for Playwright testing
34
+ </a> `;
35
+ const facetHidden = bucket.state === 'hidden';
36
+ const facetSelected = bucket.state === 'selected';
37
+ const titleText = `${facetType}: ${(_d = bucket.displayText) !== null && _d !== void 0 ? _d : bucket.key}`;
38
+ const onlyShowText = facetSelected
39
+ ? `Show all ${facetType}s`
40
+ : `Only show ${titleText}`;
41
+ const hideText = `Hide ${titleText}`;
42
+ const unhideText = `Unhide ${titleText}`;
43
+ const showHideText = facetHidden ? unhideText : hideText;
44
+ const ariaLabel = `${titleText}, ${bucket.count} results`;
45
+ // Added data-testid for Playwright testing
46
46
  return html `
47
47
  <div class="facet-row-container">
48
48
  <div class="facet-checkboxes">
@@ -50,8 +50,8 @@ let FacetRow = FacetRow_1 = class FacetRow extends LitElement {
50
50
  type="checkbox"
51
51
  .name=${facetType}
52
52
  .value=${bucket.key}
53
- @click=${(e) => {
54
- this.facetClicked(e, false);
53
+ @click=${(e) => {
54
+ this.facetClicked(e, false);
55
55
  }}
56
56
  .checked=${facetSelected}
57
57
  class="select-facet-checkbox"
@@ -64,8 +64,8 @@ let FacetRow = FacetRow_1 = class FacetRow extends LitElement {
64
64
  id=${negativeCheckboxId}
65
65
  .name=${facetType}
66
66
  .value=${bucket.key}
67
- @click=${(e) => {
68
- this.facetClicked(e, true);
67
+ @click=${(e) => {
68
+ this.facetClicked(e, true);
69
69
  }}
70
70
  .checked=${facetHidden}
71
71
  class="hide-facet-checkbox"
@@ -90,61 +90,61 @@ let FacetRow = FacetRow_1 = class FacetRow extends LitElement {
90
90
  <div class="facet-count">${bucket.count.toLocaleString()}</div>
91
91
  </label>
92
92
  </div>
93
- `;
94
- }
95
- //
96
- // EVENT HANDLERS & DISPATCHERS
97
- //
98
- /**
99
- * Handler for whenever this facet is clicked & its state changes
100
- */
101
- facetClicked(e, negative) {
102
- const { bucket, facetType } = this;
103
- if (!bucket || !facetType)
104
- return;
105
- const target = e.target;
106
- const { checked } = target;
107
- this.bucket = {
108
- ...bucket,
109
- state: FacetRow_1.getFacetState(checked, negative),
110
- };
111
- this.dispatchFacetClickEvent({
112
- facetType,
113
- bucket: this.bucket,
114
- negative,
115
- });
116
- }
117
- /**
118
- * Emits a `facetClick` event with details about this facet & its current state
119
- */
120
- dispatchFacetClickEvent(detail) {
121
- const event = new CustomEvent('facetClick', {
122
- detail,
123
- });
124
- this.dispatchEvent(event);
125
- }
126
- //
127
- // OTHER METHODS
128
- //
129
- /**
130
- * Returns the composed facet state corresponding to a positive or negative facet's checked state
131
- */
132
- static getFacetState(checked, negative) {
133
- let state;
134
- if (checked) {
135
- state = negative ? 'hidden' : 'selected';
136
- }
137
- else {
138
- state = 'none';
139
- }
140
- return state;
141
- }
142
- //
143
- // STYLES
144
- //
145
- static get styles() {
146
- const facetRowBorderTop = css `var(--facet-row-border-top, 1px solid transparent)`;
147
- const facetRowBorderBottom = css `var(--facet-row-border-bottom, 1px solid transparent)`;
93
+ `;
94
+ }
95
+ //
96
+ // EVENT HANDLERS & DISPATCHERS
97
+ //
98
+ /**
99
+ * Handler for whenever this facet is clicked & its state changes
100
+ */
101
+ facetClicked(e, negative) {
102
+ const { bucket, facetType } = this;
103
+ if (!bucket || !facetType)
104
+ return;
105
+ const target = e.target;
106
+ const { checked } = target;
107
+ this.bucket = {
108
+ ...bucket,
109
+ state: FacetRow_1.getFacetState(checked, negative),
110
+ };
111
+ this.dispatchFacetClickEvent({
112
+ facetType,
113
+ bucket: this.bucket,
114
+ negative,
115
+ });
116
+ }
117
+ /**
118
+ * Emits a `facetClick` event with details about this facet & its current state
119
+ */
120
+ dispatchFacetClickEvent(detail) {
121
+ const event = new CustomEvent('facetClick', {
122
+ detail,
123
+ });
124
+ this.dispatchEvent(event);
125
+ }
126
+ //
127
+ // OTHER METHODS
128
+ //
129
+ /**
130
+ * Returns the composed facet state corresponding to a positive or negative facet's checked state
131
+ */
132
+ static getFacetState(checked, negative) {
133
+ let state;
134
+ if (checked) {
135
+ state = negative ? 'hidden' : 'selected';
136
+ }
137
+ else {
138
+ state = 'none';
139
+ }
140
+ return state;
141
+ }
142
+ //
143
+ // STYLES
144
+ //
145
+ static get styles() {
146
+ const facetRowBorderTop = css `var(--facet-row-border-top, 1px solid transparent)`;
147
+ const facetRowBorderBottom = css `var(--facet-row-border-bottom, 1px solid transparent)`;
148
148
  return css `
149
149
  async-collection-name {
150
150
  display: contents;
@@ -227,20 +227,20 @@ let FacetRow = FacetRow_1 = class FacetRow extends LitElement {
227
227
  a:hover {
228
228
  text-decoration: underline;
229
229
  }
230
- `;
231
- }
232
- };
233
- __decorate([
234
- property({ type: String })
235
- ], FacetRow.prototype, "facetType", void 0);
236
- __decorate([
237
- property({ type: Object })
238
- ], FacetRow.prototype, "bucket", void 0);
239
- __decorate([
240
- property({ type: Object })
241
- ], FacetRow.prototype, "collectionTitles", void 0);
242
- FacetRow = FacetRow_1 = __decorate([
243
- customElement('facet-row')
244
- ], FacetRow);
245
- export { FacetRow };
230
+ `;
231
+ }
232
+ };
233
+ __decorate([
234
+ property({ type: String })
235
+ ], FacetRow.prototype, "facetType", void 0);
236
+ __decorate([
237
+ property({ type: Object })
238
+ ], FacetRow.prototype, "bucket", void 0);
239
+ __decorate([
240
+ property({ type: Object })
241
+ ], FacetRow.prototype, "collectionTitles", void 0);
242
+ FacetRow = FacetRow_1 = __decorate([
243
+ customElement('facet-row')
244
+ ], FacetRow);
245
+ export { FacetRow };
246
246
  //# sourceMappingURL=facet-row.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"facet-row.js","sourceRoot":"","sources":["../../../src/collection-facets/facet-row.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n css,\n html,\n LitElement,\n TemplateResult,\n CSSResultGroup,\n nothing,\n} from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport eyeIcon from '../assets/img/icons/eye';\nimport eyeClosedIcon from '../assets/img/icons/eye-closed';\nimport type {\n FacetOption,\n FacetBucket,\n FacetEventDetails,\n FacetState,\n} from '../models';\nimport type { CollectionTitles } from '../data-source/models';\n\n@customElement('facet-row')\nexport class FacetRow extends LitElement {\n //\n // UI STATE\n //\n\n /** The name of the facet group to which this facet belongs (e.g., \"mediatype\") */\n @property({ type: String }) facetType?: FacetOption;\n\n /** The facet bucket containing details about the state, count, and key for this row */\n @property({ type: Object }) bucket?: FacetBucket;\n\n /** The collection name cache for converting collection identifiers to titles */\n @property({ type: Object })\n collectionTitles?: CollectionTitles;\n\n //\n // COMPONENT LIFECYCLE METHODS\n //\n\n render() {\n return html`${this.facetRowTemplate}`;\n }\n\n //\n // TEMPLATE GETTERS\n //\n\n /**\n * Template for the full facet row, including the positive/negative checks,\n * the display name, and the count.\n */\n private get facetRowTemplate(): TemplateResult | typeof nothing {\n const { bucket, facetType } = this;\n if (!bucket || !facetType) return nothing;\n\n const showOnlyCheckboxId = `${facetType}:${bucket.key}-show-only`;\n const negativeCheckboxId = `${facetType}:${bucket.key}-negative`;\n\n // For collections, we render the collection title as a link.\n // For other facet types, we just have a static value to use.\n const bucketTextDisplay =\n facetType !== 'collection'\n ? html`${bucket.displayText ?? bucket.key}`\n : html`<a href=\"/details/${bucket.key}\">\n ${this.collectionTitles?.get(bucket.key) ?? bucket.key}\n </a> `;\n\n const facetHidden = bucket.state === 'hidden';\n const facetSelected = bucket.state === 'selected';\n\n const titleText = `${facetType}: ${bucket.displayText ?? bucket.key}`;\n const onlyShowText = facetSelected\n ? `Show all ${facetType}s`\n : `Only show ${titleText}`;\n const hideText = `Hide ${titleText}`;\n const unhideText = `Unhide ${titleText}`;\n const showHideText = facetHidden ? unhideText : hideText;\n const ariaLabel = `${titleText}, ${bucket.count} results`;\n\n // Added data-testid for Playwright testing\n return html`\n <div class=\"facet-row-container\">\n <div class=\"facet-checkboxes\">\n <input\n type=\"checkbox\"\n .name=${facetType}\n .value=${bucket.key}\n @click=${(e: Event) => {\n this.facetClicked(e, false);\n }}\n .checked=${facetSelected}\n class=\"select-facet-checkbox\"\n title=${onlyShowText}\n id=${showOnlyCheckboxId}\n data-testid=${showOnlyCheckboxId}\n />\n <input\n type=\"checkbox\"\n id=${negativeCheckboxId}\n .name=${facetType}\n .value=${bucket.key}\n @click=${(e: Event) => {\n this.facetClicked(e, true);\n }}\n .checked=${facetHidden}\n class=\"hide-facet-checkbox\"\n />\n <label\n for=${negativeCheckboxId}\n class=\"hide-facet-icon${facetHidden ? ' active' : ''}\"\n title=${showHideText}\n data-testid=${negativeCheckboxId}\n >\n <span class=\"eye\">${eyeIcon}</span>\n <span class=\"eye-closed\">${eyeClosedIcon}</span>\n </label>\n </div>\n <label\n for=${showOnlyCheckboxId}\n class=\"facet-info-display\"\n title=${onlyShowText}\n aria-label=${ariaLabel}\n >\n <div class=\"facet-title\">${bucketTextDisplay}</div>\n <div class=\"facet-count\">${bucket.count.toLocaleString()}</div>\n </label>\n </div>\n `;\n }\n\n //\n // EVENT HANDLERS & DISPATCHERS\n //\n\n /**\n * Handler for whenever this facet is clicked & its state changes\n */\n private facetClicked(e: Event, negative: boolean) {\n const { bucket, facetType } = this;\n if (!bucket || !facetType) return;\n\n const target = e.target as HTMLInputElement;\n const { checked } = target;\n this.bucket = {\n ...bucket,\n state: FacetRow.getFacetState(checked, negative),\n };\n\n this.dispatchFacetClickEvent({\n facetType,\n bucket: this.bucket,\n negative,\n });\n }\n\n /**\n * Emits a `facetClick` event with details about this facet & its current state\n */\n private dispatchFacetClickEvent(detail: FacetEventDetails) {\n const event = new CustomEvent<FacetEventDetails>('facetClick', {\n detail,\n });\n this.dispatchEvent(event);\n }\n\n //\n // OTHER METHODS\n //\n\n /**\n * Returns the composed facet state corresponding to a positive or negative facet's checked state\n */\n static getFacetState(checked: boolean, negative: boolean): FacetState {\n let state: FacetState;\n if (checked) {\n state = negative ? 'hidden' : 'selected';\n } else {\n state = 'none';\n }\n return state;\n }\n\n //\n // STYLES\n //\n\n static get styles(): CSSResultGroup {\n const facetRowBorderTop = css`var(--facet-row-border-top, 1px solid transparent)`;\n const facetRowBorderBottom = css`var(--facet-row-border-bottom, 1px solid transparent)`;\n\n return css`\n async-collection-name {\n display: contents;\n }\n .facet-checkboxes {\n margin: 0 5px 0 0;\n display: flex;\n height: 15px;\n }\n .facet-checkboxes input:first-child {\n margin-right: 5px;\n }\n .facet-checkboxes input {\n height: 15px;\n width: 15px;\n margin: 0;\n }\n .facet-row-container {\n display: flex;\n font-weight: 500;\n font-size: 1.2rem;\n margin: 2.5px auto;\n height: auto;\n border-top: ${facetRowBorderTop};\n border-bottom: ${facetRowBorderBottom};\n overflow: hidden;\n }\n .facet-info-display {\n display: flex;\n flex: 1 1 0%;\n cursor: pointer;\n flex-wrap: wrap;\n }\n .facet-title {\n word-break: break-word;\n display: inline-block;\n flex: 1 1 0%;\n }\n .facet-count {\n text-align: right;\n }\n .select-facet-checkbox {\n cursor: pointer;\n display: inline-block;\n }\n .hide-facet-checkbox {\n display: none;\n }\n .hide-facet-icon {\n width: 15px;\n height: 15px;\n cursor: pointer;\n opacity: 0.3;\n display: inline-block;\n }\n .hide-facet-icon:hover,\n .active {\n opacity: 1;\n }\n .hide-facet-icon:hover .eye,\n .hide-facet-icon .eye-closed {\n display: none;\n }\n .hide-facet-icon:hover .eye-closed,\n .hide-facet-icon.active .eye-closed {\n display: inline;\n }\n .hide-facet-icon.active .eye {\n display: none;\n }\n .sorting-icon {\n cursor: pointer;\n }\n\n a:link,\n a:visited {\n text-decoration: none;\n color: var(--ia-theme-link-color, #4b64ff);\n }\n a:hover {\n text-decoration: underline;\n }\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"facet-row.js","sourceRoot":"","sources":["../../../src/collection-facets/facet-row.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n css,\n html,\n LitElement,\n TemplateResult,\n CSSResultGroup,\n nothing,\n} from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport eyeIcon from '../assets/img/icons/eye';\nimport eyeClosedIcon from '../assets/img/icons/eye-closed';\nimport type {\n FacetOption,\n FacetBucket,\n FacetEventDetails,\n FacetState,\n} from '../models';\nimport type { CollectionTitles } from '../data-source/models';\n\n@customElement('facet-row')\nexport class FacetRow extends LitElement {\n //\n // UI STATE\n //\n\n /** The name of the facet group to which this facet belongs (e.g., \"mediatype\") */\n @property({ type: String }) facetType?: FacetOption;\n\n /** The facet bucket containing details about the state, count, and key for this row */\n @property({ type: Object }) bucket?: FacetBucket;\n\n /** The collection name cache for converting collection identifiers to titles */\n @property({ type: Object })\n collectionTitles?: CollectionTitles;\n\n //\n // COMPONENT LIFECYCLE METHODS\n //\n\n render() {\n return html`${this.facetRowTemplate}`;\n }\n\n //\n // TEMPLATE GETTERS\n //\n\n /**\n * Template for the full facet row, including the positive/negative checks,\n * the display name, and the count.\n */\n private get facetRowTemplate(): TemplateResult | typeof nothing {\n const { bucket, facetType } = this;\n if (!bucket || !facetType) return nothing;\n\n const showOnlyCheckboxId = `${facetType}:${bucket.key}-show-only`;\n const negativeCheckboxId = `${facetType}:${bucket.key}-negative`;\n\n // For collections, we render the collection title as a link.\n // For other facet types, we just have a static value to use.\n const bucketTextDisplay =\n facetType !== 'collection'\n ? html`${bucket.displayText ?? bucket.key}`\n : html`<a href=\"/details/${bucket.key}\">\n ${this.collectionTitles?.get(bucket.key) ?? bucket.key}\n </a> `;\n\n const facetHidden = bucket.state === 'hidden';\n const facetSelected = bucket.state === 'selected';\n\n const titleText = `${facetType}: ${bucket.displayText ?? bucket.key}`;\n const onlyShowText = facetSelected\n ? `Show all ${facetType}s`\n : `Only show ${titleText}`;\n const hideText = `Hide ${titleText}`;\n const unhideText = `Unhide ${titleText}`;\n const showHideText = facetHidden ? unhideText : hideText;\n const ariaLabel = `${titleText}, ${bucket.count} results`;\n\n // Added data-testid for Playwright testing\n return html`\n <div class=\"facet-row-container\">\n <div class=\"facet-checkboxes\">\n <input\n type=\"checkbox\"\n .name=${facetType}\n .value=${bucket.key}\n @click=${(e: Event) => {\n this.facetClicked(e, false);\n }}\n .checked=${facetSelected}\n class=\"select-facet-checkbox\"\n title=${onlyShowText}\n id=${showOnlyCheckboxId}\n data-testid=${showOnlyCheckboxId}\n />\n <input\n type=\"checkbox\"\n id=${negativeCheckboxId}\n .name=${facetType}\n .value=${bucket.key}\n @click=${(e: Event) => {\n this.facetClicked(e, true);\n }}\n .checked=${facetHidden}\n class=\"hide-facet-checkbox\"\n />\n <label\n for=${negativeCheckboxId}\n class=\"hide-facet-icon${facetHidden ? ' active' : ''}\"\n title=${showHideText}\n data-testid=${negativeCheckboxId}\n >\n <span class=\"eye\">${eyeIcon}</span>\n <span class=\"eye-closed\">${eyeClosedIcon}</span>\n </label>\n </div>\n <label\n for=${showOnlyCheckboxId}\n class=\"facet-info-display\"\n title=${onlyShowText}\n aria-label=${ariaLabel}\n >\n <div class=\"facet-title\">${bucketTextDisplay}</div>\n <div class=\"facet-count\">${bucket.count.toLocaleString()}</div>\n </label>\n </div>\n `;\n }\n\n //\n // EVENT HANDLERS & DISPATCHERS\n //\n\n /**\n * Handler for whenever this facet is clicked & its state changes\n */\n private facetClicked(e: Event, negative: boolean) {\n const { bucket, facetType } = this;\n if (!bucket || !facetType) return;\n\n const target = e.target as HTMLInputElement;\n const { checked } = target;\n this.bucket = {\n ...bucket,\n state: FacetRow.getFacetState(checked, negative),\n };\n\n this.dispatchFacetClickEvent({\n facetType,\n bucket: this.bucket,\n negative,\n });\n }\n\n /**\n * Emits a `facetClick` event with details about this facet & its current state\n */\n private dispatchFacetClickEvent(detail: FacetEventDetails) {\n const event = new CustomEvent<FacetEventDetails>('facetClick', {\n detail,\n });\n this.dispatchEvent(event);\n }\n\n //\n // OTHER METHODS\n //\n\n /**\n * Returns the composed facet state corresponding to a positive or negative facet's checked state\n */\n static getFacetState(checked: boolean, negative: boolean): FacetState {\n let state: FacetState;\n if (checked) {\n state = negative ? 'hidden' : 'selected';\n } else {\n state = 'none';\n }\n return state;\n }\n\n //\n // STYLES\n //\n\n static get styles(): CSSResultGroup {\n const facetRowBorderTop = css`var(--facet-row-border-top, 1px solid transparent)`;\n const facetRowBorderBottom = css`var(--facet-row-border-bottom, 1px solid transparent)`;\n\n return css`\n async-collection-name {\n display: contents;\n }\n .facet-checkboxes {\n margin: 0 5px 0 0;\n display: flex;\n height: 15px;\n }\n .facet-checkboxes input:first-child {\n margin-right: 5px;\n }\n .facet-checkboxes input {\n height: 15px;\n width: 15px;\n margin: 0;\n }\n .facet-row-container {\n display: flex;\n font-weight: 500;\n font-size: 1.2rem;\n margin: 2.5px auto;\n height: auto;\n border-top: ${facetRowBorderTop};\n border-bottom: ${facetRowBorderBottom};\n overflow: hidden;\n }\n .facet-info-display {\n display: flex;\n flex: 1 1 0%;\n cursor: pointer;\n flex-wrap: wrap;\n }\n .facet-title {\n word-break: break-word;\n display: inline-block;\n flex: 1 1 0%;\n }\n .facet-count {\n text-align: right;\n }\n .select-facet-checkbox {\n cursor: pointer;\n display: inline-block;\n }\n .hide-facet-checkbox {\n display: none;\n }\n .hide-facet-icon {\n width: 15px;\n height: 15px;\n cursor: pointer;\n opacity: 0.3;\n display: inline-block;\n }\n .hide-facet-icon:hover,\n .active {\n opacity: 1;\n }\n .hide-facet-icon:hover .eye,\n .hide-facet-icon .eye-closed {\n display: none;\n }\n .hide-facet-icon:hover .eye-closed,\n .hide-facet-icon.active .eye-closed {\n display: inline;\n }\n .hide-facet-icon.active .eye {\n display: none;\n }\n .sorting-icon {\n cursor: pointer;\n }\n\n a:link,\n a:visited {\n text-decoration: none;\n color: var(--ia-theme-link-color, #4b64ff);\n }\n a:hover {\n text-decoration: underline;\n }\n `;\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { LitElement, CSSResultGroup } from 'lit';
2
- export declare class FacetTombstoneRow extends LitElement {
3
- render(): import("lit-html").TemplateResult<1>;
4
- static get styles(): CSSResultGroup;
5
- }
1
+ import { LitElement, CSSResultGroup } from 'lit';
2
+ export declare class FacetTombstoneRow extends LitElement {
3
+ render(): import("lit").TemplateResult<1>;
4
+ static get styles(): CSSResultGroup;
5
+ }
@@ -1,17 +1,17 @@
1
- import { __decorate } from "tslib";
2
- import { css, html, LitElement } from 'lit';
3
- import { customElement } from 'lit/decorators.js';
4
- let FacetTombstoneRow = class FacetTombstoneRow extends LitElement {
5
- render() {
1
+ import { __decorate } from "tslib";
2
+ import { css, html, LitElement } from 'lit';
3
+ import { customElement } from 'lit/decorators.js';
4
+ let FacetTombstoneRow = class FacetTombstoneRow extends LitElement {
5
+ render() {
6
6
  return html `
7
7
  <div id="row">
8
8
  <input type="checkbox" disabled />
9
9
  <div class="tombstone-line"></div>
10
10
  <div class="tombstone-line"></div>
11
11
  </div>
12
- `;
13
- }
14
- static get styles() {
12
+ `;
13
+ }
14
+ static get styles() {
15
15
  return css `
16
16
  #row {
17
17
  display: grid;
@@ -33,11 +33,11 @@ let FacetTombstoneRow = class FacetTombstoneRow extends LitElement {
33
33
  height: 15px;
34
34
  margin: 0;
35
35
  }
36
- `;
37
- }
38
- };
39
- FacetTombstoneRow = __decorate([
40
- customElement('facet-tombstone-row')
41
- ], FacetTombstoneRow);
42
- export { FacetTombstoneRow };
36
+ `;
37
+ }
38
+ };
39
+ FacetTombstoneRow = __decorate([
40
+ customElement('facet-tombstone-row')
41
+ ], FacetTombstoneRow);
42
+ export { FacetTombstoneRow };
43
43
  //# sourceMappingURL=facet-tombstone-row.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"facet-tombstone-row.js","sourceRoot":"","sources":["../../../src/collection-facets/facet-tombstone-row.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAkB,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,IAAa,iBAAiB,GAA9B,MAAa,iBAAkB,SAAQ,UAAU;IAC/C,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;;KAMV,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;KAqBT,CAAC;IACJ,CAAC;CACF,CAAA;AAnCY,iBAAiB;IAD7B,aAAa,CAAC,qBAAqB,CAAC;GACxB,iBAAiB,CAmC7B;SAnCY,iBAAiB","sourcesContent":["import { css, html, LitElement, CSSResultGroup } from 'lit';\nimport { customElement } from 'lit/decorators.js';\n\n@customElement('facet-tombstone-row')\nexport class FacetTombstoneRow extends LitElement {\n render() {\n return html`\n <div id=\"row\">\n <input type=\"checkbox\" disabled />\n <div class=\"tombstone-line\"></div>\n <div class=\"tombstone-line\"></div>\n </div>\n `;\n }\n\n static get styles(): CSSResultGroup {\n return css`\n #row {\n display: grid;\n grid-template-columns: 15px 1fr 36px;\n grid-gap: 9px 6px;\n align-items: center;\n margin: 2.5px auto;\n border: 1px solid transparent;\n }\n\n .tombstone-line {\n background: #ddd;\n height: 6px;\n border-radius: 50px;\n }\n\n input[type='checkbox'] {\n width: 15px;\n height: 15px;\n margin: 0;\n }\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"facet-tombstone-row.js","sourceRoot":"","sources":["../../../src/collection-facets/facet-tombstone-row.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAkB,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAG3C,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,UAAU;IAC/C,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;;KAMV,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;KAqBT,CAAC;IACJ,CAAC;CACF,CAAA;AAnCY,iBAAiB;IAD7B,aAAa,CAAC,qBAAqB,CAAC;GACxB,iBAAiB,CAmC7B","sourcesContent":["import { css, html, LitElement, CSSResultGroup } from 'lit';\nimport { customElement } from 'lit/decorators.js';\n\n@customElement('facet-tombstone-row')\nexport class FacetTombstoneRow extends LitElement {\n render() {\n return html`\n <div id=\"row\">\n <input type=\"checkbox\" disabled />\n <div class=\"tombstone-line\"></div>\n <div class=\"tombstone-line\"></div>\n </div>\n `;\n }\n\n static get styles(): CSSResultGroup {\n return css`\n #row {\n display: grid;\n grid-template-columns: 15px 1fr 36px;\n grid-gap: 9px 6px;\n align-items: center;\n margin: 2.5px auto;\n border: 1px solid transparent;\n }\n\n .tombstone-line {\n background: #ddd;\n height: 6px;\n border-radius: 50px;\n }\n\n input[type='checkbox'] {\n width: 15px;\n height: 15px;\n margin: 0;\n }\n `;\n }\n}\n"]}
@@ -1,13 +1,13 @@
1
- import { LitElement, TemplateResult, CSSResultGroup } from 'lit';
2
- import type { FacetGroup } from '../models';
3
- import type { CollectionTitles } from '../data-source/models';
4
- import './facet-row';
5
- export declare class FacetsTemplate extends LitElement {
6
- facetGroup?: FacetGroup;
7
- collectionTitles?: CollectionTitles;
8
- private facetClicked;
9
- private dispatchFacetClickEvent;
10
- private get facetsTemplate();
11
- render(): TemplateResult<1>;
12
- static get styles(): CSSResultGroup;
13
- }
1
+ import { LitElement, TemplateResult, CSSResultGroup } from 'lit';
2
+ import type { FacetGroup } from '../models';
3
+ import type { CollectionTitles } from '../data-source/models';
4
+ import './facet-row';
5
+ export declare class FacetsTemplate extends LitElement {
6
+ facetGroup?: FacetGroup;
7
+ collectionTitles?: CollectionTitles;
8
+ private facetClicked;
9
+ private dispatchFacetClickEvent;
10
+ private get facetsTemplate();
11
+ render(): TemplateResult<1>;
12
+ static get styles(): CSSResultGroup;
13
+ }
@@ -1,43 +1,43 @@
1
- import { __decorate } from "tslib";
2
- import { css, html, LitElement, nothing, } from 'lit';
3
- import { customElement, property } from 'lit/decorators.js';
4
- import { repeat } from 'lit/directives/repeat.js';
5
- import './facet-row';
6
- let FacetsTemplate = class FacetsTemplate extends LitElement {
7
- facetClicked(e) {
8
- this.dispatchFacetClickEvent(e.detail);
9
- }
10
- dispatchFacetClickEvent(detail) {
11
- const event = new CustomEvent('facetClick', {
12
- detail,
13
- composed: true,
14
- });
15
- this.dispatchEvent(event);
16
- }
17
- get facetsTemplate() {
18
- const { facetGroup } = this;
19
- if (!facetGroup)
20
- return nothing;
21
- const facetBuckets = facetGroup.buckets;
22
- // Added data-testid for Playwright testing
23
- // Using className and aria-labels is not ideal for Playwright locator
1
+ import { __decorate } from "tslib";
2
+ import { css, html, LitElement, nothing, } from 'lit';
3
+ import { customElement, property } from 'lit/decorators.js';
4
+ import { repeat } from 'lit/directives/repeat.js';
5
+ import './facet-row';
6
+ let FacetsTemplate = class FacetsTemplate extends LitElement {
7
+ facetClicked(e) {
8
+ this.dispatchFacetClickEvent(e.detail);
9
+ }
10
+ dispatchFacetClickEvent(detail) {
11
+ const event = new CustomEvent('facetClick', {
12
+ detail,
13
+ composed: true,
14
+ });
15
+ this.dispatchEvent(event);
16
+ }
17
+ get facetsTemplate() {
18
+ const { facetGroup } = this;
19
+ if (!facetGroup)
20
+ return nothing;
21
+ const facetBuckets = facetGroup.buckets;
22
+ // Added data-testid for Playwright testing
23
+ // Using className and aria-labels is not ideal for Playwright locator
24
24
  return html `
25
25
  <div class="facet-rows" data-testid="facets-on-${facetGroup.key}">
26
26
  ${repeat(facetBuckets, bucket => `${facetGroup.key}:${bucket.key}`, bucket => html `<facet-row
27
- .facetType=${facetGroup.key}
28
- .bucket=${bucket}
29
- .collectionTitles=${this.collectionTitles}
30
- @facetClick=${this.facetClicked}
31
- ></facet-row>`)}
27
+ .facetType=${facetGroup.key}
28
+ .bucket=${bucket}
29
+ .collectionTitles=${this.collectionTitles}
30
+ @facetClick=${this.facetClicked}
31
+ ></facet-row>`)}
32
32
  </div>
33
- `;
34
- }
35
- render() {
36
- return html `${this.facetsTemplate}`;
37
- }
38
- static get styles() {
39
- const columnCount = css `var(--facetsColumnCount, 1)`;
40
- const columnGap = css `var(--facetsColumnGap, 15px)`;
33
+ `;
34
+ }
35
+ render() {
36
+ return html `${this.facetsTemplate}`;
37
+ }
38
+ static get styles() {
39
+ const columnCount = css `var(--facetsColumnCount, 1)`;
40
+ const columnGap = css `var(--facetsColumnGap, 15px)`;
41
41
  return css `
42
42
  .facet-rows {
43
43
  column-count: ${columnCount};
@@ -52,17 +52,17 @@ let FacetsTemplate = class FacetsTemplate extends LitElement {
52
52
  a:hover {
53
53
  text-decoration: underline;
54
54
  }
55
- `;
56
- }
57
- };
58
- __decorate([
59
- property({ type: Object })
60
- ], FacetsTemplate.prototype, "facetGroup", void 0);
61
- __decorate([
62
- property({ type: Object })
63
- ], FacetsTemplate.prototype, "collectionTitles", void 0);
64
- FacetsTemplate = __decorate([
65
- customElement('facets-template')
66
- ], FacetsTemplate);
67
- export { FacetsTemplate };
55
+ `;
56
+ }
57
+ };
58
+ __decorate([
59
+ property({ type: Object })
60
+ ], FacetsTemplate.prototype, "facetGroup", void 0);
61
+ __decorate([
62
+ property({ type: Object })
63
+ ], FacetsTemplate.prototype, "collectionTitles", void 0);
64
+ FacetsTemplate = __decorate([
65
+ customElement('facets-template')
66
+ ], FacetsTemplate);
67
+ export { FacetsTemplate };
68
68
  //# sourceMappingURL=facets-template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"facets-template.js","sourceRoot":"","sources":["../../../src/collection-facets/facets-template.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,GAAG,EACH,IAAI,EACJ,UAAU,EAGV,OAAO,GACR,MAAM,KAAK,CAAC;AACb,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAGlD,OAAO,aAAa,CAAC;AAGrB,IAAa,cAAc,GAA3B,MAAa,cAAe,SAAQ,UAAU;IAMpC,YAAY,CAAC,CAAiC;QACpD,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAEO,uBAAuB,CAAC,MAAyB;QACvD,MAAM,KAAK,GAAG,IAAI,WAAW,CAAoB,YAAY,EAAE;YAC7D,MAAM;YACN,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,IAAY,cAAc;QACxB,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,UAAU;YAAE,OAAO,OAAO,CAAC;QAEhC,MAAM,YAAY,GAAG,UAAU,CAAC,OAAwB,CAAC;QAEzD,2CAA2C;QAC3C,sEAAsE;QACtE,OAAO,IAAI,CAAA;uDACwC,UAAU,CAAC,GAAG;UAC3D,MAAM,CACN,YAAY,EACZ,MAAM,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,EAC3C,MAAM,CAAC,EAAE,CAAC,IAAI,CAAA;yBACC,UAAU,CAAC,GAAG;sBACjB,MAAM;gCACI,IAAI,CAAC,gBAAgB;0BAC3B,IAAI,CAAC,YAAY;wBACnB,CACf;;KAEJ,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACtC,CAAC;IAED,MAAM,KAAK,MAAM;QACf,MAAM,WAAW,GAAG,GAAG,CAAA,6BAA6B,CAAC;QACrD,MAAM,SAAS,GAAG,GAAG,CAAA,8BAA8B,CAAC;QAEpD,OAAO,GAAG,CAAA;;wBAEU,WAAW;sBACb,SAAS;;;;;;;;;;;KAW1B,CAAC;IACJ,CAAC;CACF,CAAA;AAjE6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kDAAyB;AAGpD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wDACS;AAJzB,cAAc;IAD1B,aAAa,CAAC,iBAAiB,CAAC;GACpB,cAAc,CAkE1B;SAlEY,cAAc","sourcesContent":["import {\n css,\n html,\n LitElement,\n TemplateResult,\n CSSResultGroup,\n nothing,\n} from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport type { FacetGroup, FacetBucket, FacetEventDetails } from '../models';\nimport type { CollectionTitles } from '../data-source/models';\nimport './facet-row';\n\n@customElement('facets-template')\nexport class FacetsTemplate extends LitElement {\n @property({ type: Object }) facetGroup?: FacetGroup;\n\n @property({ type: Object })\n collectionTitles?: CollectionTitles;\n\n private facetClicked(e: CustomEvent<FacetEventDetails>) {\n this.dispatchFacetClickEvent(e.detail);\n }\n\n private dispatchFacetClickEvent(detail: FacetEventDetails) {\n const event = new CustomEvent<FacetEventDetails>('facetClick', {\n detail,\n composed: true,\n });\n this.dispatchEvent(event);\n }\n\n private get facetsTemplate(): TemplateResult | typeof nothing {\n const { facetGroup } = this;\n if (!facetGroup) return nothing;\n\n const facetBuckets = facetGroup.buckets as FacetBucket[];\n\n // Added data-testid for Playwright testing\n // Using className and aria-labels is not ideal for Playwright locator\n return html`\n <div class=\"facet-rows\" data-testid=\"facets-on-${facetGroup.key}\">\n ${repeat(\n facetBuckets,\n bucket => `${facetGroup.key}:${bucket.key}`,\n bucket => html`<facet-row\n .facetType=${facetGroup.key}\n .bucket=${bucket}\n .collectionTitles=${this.collectionTitles}\n @facetClick=${this.facetClicked}\n ></facet-row>`\n )}\n </div>\n `;\n }\n\n render() {\n return html`${this.facetsTemplate}`;\n }\n\n static get styles(): CSSResultGroup {\n const columnCount = css`var(--facetsColumnCount, 1)`;\n const columnGap = css`var(--facetsColumnGap, 15px)`;\n\n return css`\n .facet-rows {\n column-count: ${columnCount};\n column-gap: ${columnGap};\n }\n\n a:link,\n a:visited {\n text-decoration: none;\n color: var(--ia-theme-link-color, #4b64ff);\n }\n a:hover {\n text-decoration: underline;\n }\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"facets-template.js","sourceRoot":"","sources":["../../../src/collection-facets/facets-template.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,GAAG,EACH,IAAI,EACJ,UAAU,EAGV,OAAO,GACR,MAAM,KAAK,CAAC;AACb,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAGlD,OAAO,aAAa,CAAC;AAGd,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,UAAU;IAMpC,YAAY,CAAC,CAAiC;QACpD,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAEO,uBAAuB,CAAC,MAAyB;QACvD,MAAM,KAAK,GAAG,IAAI,WAAW,CAAoB,YAAY,EAAE;YAC7D,MAAM;YACN,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,IAAY,cAAc;QACxB,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,UAAU;YAAE,OAAO,OAAO,CAAC;QAEhC,MAAM,YAAY,GAAG,UAAU,CAAC,OAAwB,CAAC;QAEzD,2CAA2C;QAC3C,sEAAsE;QACtE,OAAO,IAAI,CAAA;uDACwC,UAAU,CAAC,GAAG;UAC3D,MAAM,CACN,YAAY,EACZ,MAAM,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,EAC3C,MAAM,CAAC,EAAE,CACP,IAAI,CAAA;2BACW,UAAU,CAAC,GAAG;wBACjB,MAAM;kCACI,IAAI,CAAC,gBAAgB;4BAC3B,IAAI,CAAC,YAAY;0BACnB,CACjB;;KAEJ,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACtC,CAAC;IAED,MAAM,KAAK,MAAM;QACf,MAAM,WAAW,GAAG,GAAG,CAAA,6BAA6B,CAAC;QACrD,MAAM,SAAS,GAAG,GAAG,CAAA,8BAA8B,CAAC;QAEpD,OAAO,GAAG,CAAA;;wBAEU,WAAW;sBACb,SAAS;;;;;;;;;;;KAW1B,CAAC;IACJ,CAAC;CACF,CAAA;AAlE6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kDAAyB;AAGpD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wDACS;AAJzB,cAAc;IAD1B,aAAa,CAAC,iBAAiB,CAAC;GACpB,cAAc,CAmE1B","sourcesContent":["import {\n css,\n html,\n LitElement,\n TemplateResult,\n CSSResultGroup,\n nothing,\n} from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport type { FacetGroup, FacetBucket, FacetEventDetails } from '../models';\nimport type { CollectionTitles } from '../data-source/models';\nimport './facet-row';\n\n@customElement('facets-template')\nexport class FacetsTemplate extends LitElement {\n @property({ type: Object }) facetGroup?: FacetGroup;\n\n @property({ type: Object })\n collectionTitles?: CollectionTitles;\n\n private facetClicked(e: CustomEvent<FacetEventDetails>) {\n this.dispatchFacetClickEvent(e.detail);\n }\n\n private dispatchFacetClickEvent(detail: FacetEventDetails) {\n const event = new CustomEvent<FacetEventDetails>('facetClick', {\n detail,\n composed: true,\n });\n this.dispatchEvent(event);\n }\n\n private get facetsTemplate(): TemplateResult | typeof nothing {\n const { facetGroup } = this;\n if (!facetGroup) return nothing;\n\n const facetBuckets = facetGroup.buckets as FacetBucket[];\n\n // Added data-testid for Playwright testing\n // Using className and aria-labels is not ideal for Playwright locator\n return html`\n <div class=\"facet-rows\" data-testid=\"facets-on-${facetGroup.key}\">\n ${repeat(\n facetBuckets,\n bucket => `${facetGroup.key}:${bucket.key}`,\n bucket =>\n html`<facet-row\n .facetType=${facetGroup.key}\n .bucket=${bucket}\n .collectionTitles=${this.collectionTitles}\n @facetClick=${this.facetClicked}\n ></facet-row>`,\n )}\n </div>\n `;\n }\n\n render() {\n return html`${this.facetsTemplate}`;\n }\n\n static get styles(): CSSResultGroup {\n const columnCount = css`var(--facetsColumnCount, 1)`;\n const columnGap = css`var(--facetsColumnGap, 15px)`;\n\n return css`\n .facet-rows {\n column-count: ${columnCount};\n column-gap: ${columnGap};\n }\n\n a:link,\n a:visited {\n text-decoration: none;\n color: var(--ia-theme-link-color, #4b64ff);\n }\n a:hover {\n text-decoration: underline;\n }\n `;\n }\n}\n"]}