@internetarchive/collection-browser 3.3.2 → 3.3.3

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 (532) hide show
  1. package/.editorconfig +29 -29
  2. package/.github/workflows/ci.yml +27 -27
  3. package/.github/workflows/gh-pages-main.yml +39 -39
  4. package/.github/workflows/npm-publish.yml +39 -39
  5. package/.github/workflows/pr-preview.yml +38 -38
  6. package/.husky/pre-commit +4 -4
  7. package/.prettierignore +1 -1
  8. package/LICENSE +661 -661
  9. package/README.md +83 -83
  10. package/dist/index.d.ts +16 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/src/app-root.d.ts +105 -0
  13. package/dist/src/app-root.js +1076 -0
  14. package/dist/src/app-root.js.map +1 -0
  15. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -0
  16. package/dist/src/assets/img/icons/arrow-left.js +10 -0
  17. package/dist/src/assets/img/icons/arrow-left.js.map +1 -0
  18. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -0
  19. package/dist/src/assets/img/icons/arrow-right.js +10 -0
  20. package/dist/src/assets/img/icons/arrow-right.js.map +1 -0
  21. package/dist/src/assets/img/icons/chevron.d.ts +2 -0
  22. package/dist/src/assets/img/icons/chevron.js +4 -0
  23. package/dist/src/assets/img/icons/chevron.js.map +1 -0
  24. package/dist/src/assets/img/icons/close-circle-dark.d.ts +2 -0
  25. package/dist/src/assets/img/icons/close-circle-dark.js +5 -0
  26. package/dist/src/assets/img/icons/close-circle-dark.js.map +1 -0
  27. package/dist/src/assets/img/icons/contract.d.ts +2 -0
  28. package/dist/src/assets/img/icons/contract.js +9 -0
  29. package/dist/src/assets/img/icons/contract.js.map +1 -0
  30. package/dist/src/assets/img/icons/empty-query.d.ts +2 -0
  31. package/dist/src/assets/img/icons/empty-query.js +5 -0
  32. package/dist/src/assets/img/icons/empty-query.js.map +1 -0
  33. package/dist/src/assets/img/icons/expand.d.ts +2 -0
  34. package/dist/src/assets/img/icons/expand.js +9 -0
  35. package/dist/src/assets/img/icons/expand.js.map +1 -0
  36. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -0
  37. package/dist/src/assets/img/icons/eye-closed.js +5 -0
  38. package/dist/src/assets/img/icons/eye-closed.js.map +1 -0
  39. package/dist/src/assets/img/icons/eye.d.ts +2 -0
  40. package/dist/src/assets/img/icons/eye.js +5 -0
  41. package/dist/src/assets/img/icons/eye.js.map +1 -0
  42. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -0
  43. package/dist/src/assets/img/icons/favorite-filled.js +10 -0
  44. package/dist/src/assets/img/icons/favorite-filled.js.map +1 -0
  45. package/dist/src/assets/img/icons/favorite-unfilled.d.ts +1 -0
  46. package/dist/src/assets/img/icons/favorite-unfilled.js +9 -0
  47. package/dist/src/assets/img/icons/favorite-unfilled.js.map +1 -0
  48. package/dist/src/assets/img/icons/filter.d.ts +2 -0
  49. package/dist/src/assets/img/icons/filter.js +10 -0
  50. package/dist/src/assets/img/icons/filter.js.map +1 -0
  51. package/dist/src/assets/img/icons/login-required.d.ts +1 -0
  52. package/dist/src/assets/img/icons/login-required.js +18 -0
  53. package/dist/src/assets/img/icons/login-required.js.map +1 -0
  54. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -0
  55. package/dist/src/assets/img/icons/mediatype/account.js +14 -0
  56. package/dist/src/assets/img/icons/mediatype/account.js.map +1 -0
  57. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -0
  58. package/dist/src/assets/img/icons/mediatype/audio.js +14 -0
  59. package/dist/src/assets/img/icons/mediatype/audio.js.map +1 -0
  60. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -0
  61. package/dist/src/assets/img/icons/mediatype/collection.js +12 -0
  62. package/dist/src/assets/img/icons/mediatype/collection.js.map +1 -0
  63. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -0
  64. package/dist/src/assets/img/icons/mediatype/data.js +15 -0
  65. package/dist/src/assets/img/icons/mediatype/data.js.map +1 -0
  66. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -0
  67. package/dist/src/assets/img/icons/mediatype/etree.js +14 -0
  68. package/dist/src/assets/img/icons/mediatype/etree.js.map +1 -0
  69. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -0
  70. package/dist/src/assets/img/icons/mediatype/film.js +14 -0
  71. package/dist/src/assets/img/icons/mediatype/film.js.map +1 -0
  72. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -0
  73. package/dist/src/assets/img/icons/mediatype/images.js +13 -0
  74. package/dist/src/assets/img/icons/mediatype/images.js.map +1 -0
  75. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -0
  76. package/dist/src/assets/img/icons/mediatype/radio.js +15 -0
  77. package/dist/src/assets/img/icons/mediatype/radio.js.map +1 -0
  78. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -0
  79. package/dist/src/assets/img/icons/mediatype/search.js +14 -0
  80. package/dist/src/assets/img/icons/mediatype/search.js.map +1 -0
  81. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -0
  82. package/dist/src/assets/img/icons/mediatype/software.js +13 -0
  83. package/dist/src/assets/img/icons/mediatype/software.js.map +1 -0
  84. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -0
  85. package/dist/src/assets/img/icons/mediatype/texts.js +13 -0
  86. package/dist/src/assets/img/icons/mediatype/texts.js.map +1 -0
  87. package/dist/src/assets/img/icons/mediatype/tv-commercial.d.ts +1 -0
  88. package/dist/src/assets/img/icons/mediatype/tv-commercial.js +12 -0
  89. package/dist/src/assets/img/icons/mediatype/tv-commercial.js.map +1 -0
  90. package/dist/src/assets/img/icons/mediatype/tv-fact-check.d.ts +1 -0
  91. package/dist/src/assets/img/icons/mediatype/tv-fact-check.js +12 -0
  92. package/dist/src/assets/img/icons/mediatype/tv-fact-check.js.map +1 -0
  93. package/dist/src/assets/img/icons/mediatype/tv-quote.d.ts +1 -0
  94. package/dist/src/assets/img/icons/mediatype/tv-quote.js +12 -0
  95. package/dist/src/assets/img/icons/mediatype/tv-quote.js.map +1 -0
  96. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -0
  97. package/dist/src/assets/img/icons/mediatype/tv.js +14 -0
  98. package/dist/src/assets/img/icons/mediatype/tv.js.map +1 -0
  99. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -0
  100. package/dist/src/assets/img/icons/mediatype/video.js +14 -0
  101. package/dist/src/assets/img/icons/mediatype/video.js.map +1 -0
  102. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -0
  103. package/dist/src/assets/img/icons/mediatype/web.js +13 -0
  104. package/dist/src/assets/img/icons/mediatype/web.js.map +1 -0
  105. package/dist/src/assets/img/icons/null-result.d.ts +2 -0
  106. package/dist/src/assets/img/icons/null-result.js +5 -0
  107. package/dist/src/assets/img/icons/null-result.js.map +1 -0
  108. package/dist/src/assets/img/icons/quote.d.ts +1 -0
  109. package/dist/src/assets/img/icons/quote.js +7 -0
  110. package/dist/src/assets/img/icons/quote.js.map +1 -0
  111. package/dist/src/assets/img/icons/restricted.d.ts +1 -0
  112. package/dist/src/assets/img/icons/restricted.js +13 -0
  113. package/dist/src/assets/img/icons/restricted.js.map +1 -0
  114. package/dist/src/assets/img/icons/reviews.d.ts +1 -0
  115. package/dist/src/assets/img/icons/reviews.js +11 -0
  116. package/dist/src/assets/img/icons/reviews.js.map +1 -0
  117. package/dist/src/assets/img/icons/upload.d.ts +1 -0
  118. package/dist/src/assets/img/icons/upload.js +12 -0
  119. package/dist/src/assets/img/icons/upload.js.map +1 -0
  120. package/dist/src/assets/img/icons/views.d.ts +1 -0
  121. package/dist/src/assets/img/icons/views.js +11 -0
  122. package/dist/src/assets/img/icons/views.js.map +1 -0
  123. package/dist/src/circular-activity-indicator.d.ts +5 -0
  124. package/dist/src/circular-activity-indicator.js +66 -0
  125. package/dist/src/circular-activity-indicator.js.map +1 -0
  126. package/dist/src/collection-browser.d.ts +684 -0
  127. package/dist/src/collection-browser.js +2567 -0
  128. package/dist/src/collection-browser.js.map +1 -0
  129. package/dist/src/collection-facets/facet-row.d.ts +30 -0
  130. package/dist/src/collection-facets/facet-row.js +265 -0
  131. package/dist/src/collection-facets/facet-row.js.map +1 -0
  132. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -0
  133. package/dist/src/collection-facets/facet-tombstone-row.js +43 -0
  134. package/dist/src/collection-facets/facet-tombstone-row.js.map +1 -0
  135. package/dist/src/collection-facets/facets-template.d.ts +13 -0
  136. package/dist/src/collection-facets/facets-template.js +68 -0
  137. package/dist/src/collection-facets/facets-template.js.map +1 -0
  138. package/dist/src/collection-facets/models.d.ts +9 -0
  139. package/dist/src/collection-facets/models.js +10 -0
  140. package/dist/src/collection-facets/models.js.map +1 -0
  141. package/dist/src/collection-facets/more-facets-content.d.ts +109 -0
  142. package/dist/src/collection-facets/more-facets-content.js +547 -0
  143. package/dist/src/collection-facets/more-facets-content.js.map +1 -0
  144. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -0
  145. package/dist/src/collection-facets/more-facets-pagination.js +264 -0
  146. package/dist/src/collection-facets/more-facets-pagination.js.map +1 -0
  147. package/dist/src/collection-facets/smart-facets/dedupe.d.ts +10 -0
  148. package/dist/src/collection-facets/smart-facets/dedupe.js +35 -0
  149. package/dist/src/collection-facets/smart-facets/dedupe.js.map +1 -0
  150. package/dist/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.d.ts +5 -0
  151. package/dist/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.js +24 -0
  152. package/dist/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.js.map +1 -0
  153. package/dist/src/collection-facets/smart-facets/heuristics/index.d.ts +3 -0
  154. package/dist/src/collection-facets/smart-facets/heuristics/index.js +4 -0
  155. package/dist/src/collection-facets/smart-facets/heuristics/index.js.map +1 -0
  156. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.d.ts +4 -0
  157. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.js +14 -0
  158. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.js.map +1 -0
  159. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.d.ts +6 -0
  160. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.js +68 -0
  161. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.js.map +1 -0
  162. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.d.ts +9 -0
  163. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.js +69 -0
  164. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.js.map +1 -0
  165. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.d.ts +21 -0
  166. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js +76 -0
  167. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js.map +1 -0
  168. package/dist/src/collection-facets/smart-facets/models.d.ts +30 -0
  169. package/dist/src/collection-facets/smart-facets/models.js +2 -0
  170. package/dist/src/collection-facets/smart-facets/models.js.map +1 -0
  171. package/dist/src/collection-facets/smart-facets/smart-facet-bar.d.ts +54 -0
  172. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +383 -0
  173. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js.map +1 -0
  174. package/dist/src/collection-facets/smart-facets/smart-facet-button.d.ts +11 -0
  175. package/dist/src/collection-facets/smart-facets/smart-facet-button.js +133 -0
  176. package/dist/src/collection-facets/smart-facets/smart-facet-button.js.map +1 -0
  177. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.d.ts +28 -0
  178. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js +172 -0
  179. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js.map +1 -0
  180. package/dist/src/collection-facets/smart-facets/smart-facet-equals.d.ts +2 -0
  181. package/dist/src/collection-facets/smart-facets/smart-facet-equals.js +13 -0
  182. package/dist/src/collection-facets/smart-facets/smart-facet-equals.js.map +1 -0
  183. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.d.ts +5 -0
  184. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js +18 -0
  185. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js.map +1 -0
  186. package/dist/src/collection-facets/toggle-switch.d.ts +41 -0
  187. package/dist/src/collection-facets/toggle-switch.js +174 -0
  188. package/dist/src/collection-facets/toggle-switch.js.map +1 -0
  189. package/dist/src/collection-facets.d.ts +113 -0
  190. package/dist/src/collection-facets.js +872 -0
  191. package/dist/src/collection-facets.js.map +1 -0
  192. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +261 -0
  193. package/dist/src/data-source/collection-browser-data-source-interface.js +2 -0
  194. package/dist/src/data-source/collection-browser-data-source-interface.js.map +1 -0
  195. package/dist/src/data-source/collection-browser-data-source.d.ts +400 -0
  196. package/dist/src/data-source/collection-browser-data-source.js +1103 -0
  197. package/dist/src/data-source/collection-browser-data-source.js.map +1 -0
  198. package/dist/src/data-source/collection-browser-query-state.d.ts +49 -0
  199. package/dist/src/data-source/collection-browser-query-state.js +2 -0
  200. package/dist/src/data-source/collection-browser-query-state.js.map +1 -0
  201. package/dist/src/data-source/models.d.ts +32 -0
  202. package/dist/src/data-source/models.js +9 -0
  203. package/dist/src/data-source/models.js.map +1 -0
  204. package/dist/src/empty-placeholder.d.ts +23 -0
  205. package/dist/src/empty-placeholder.js +165 -0
  206. package/dist/src/empty-placeholder.js.map +1 -0
  207. package/dist/src/expanded-date-picker.d.ts +50 -0
  208. package/dist/src/expanded-date-picker.js +182 -0
  209. package/dist/src/expanded-date-picker.js.map +1 -0
  210. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -0
  211. package/dist/src/language-code-handler/language-code-handler.js +27 -0
  212. package/dist/src/language-code-handler/language-code-handler.js.map +1 -0
  213. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -0
  214. package/dist/src/language-code-handler/language-code-mapping.js +563 -0
  215. package/dist/src/language-code-handler/language-code-mapping.js.map +1 -0
  216. package/dist/src/manage/manage-bar.d.ts +58 -0
  217. package/dist/src/manage/manage-bar.js +237 -0
  218. package/dist/src/manage/manage-bar.js.map +1 -0
  219. package/dist/src/manage/remove-items-modal-content.d.ts +9 -0
  220. package/dist/src/manage/remove-items-modal-content.js +104 -0
  221. package/dist/src/manage/remove-items-modal-content.js.map +1 -0
  222. package/dist/src/mediatype/mediatype-config.d.ts +11 -0
  223. package/dist/src/mediatype/mediatype-config.js +116 -0
  224. package/dist/src/mediatype/mediatype-config.js.map +1 -0
  225. package/dist/src/models.d.ts +302 -0
  226. package/dist/src/models.js +511 -0
  227. package/dist/src/models.js.map +1 -0
  228. package/dist/src/restoration-state-handler.d.ts +75 -0
  229. package/dist/src/restoration-state-handler.js +403 -0
  230. package/dist/src/restoration-state-handler.js.map +1 -0
  231. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -0
  232. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +60 -0
  233. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js.map +1 -0
  234. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -0
  235. package/dist/src/sort-filter-bar/alpha-bar.js +241 -0
  236. package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -0
  237. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -0
  238. package/dist/src/sort-filter-bar/img/compact.js +5 -0
  239. package/dist/src/sort-filter-bar/img/compact.js.map +1 -0
  240. package/dist/src/sort-filter-bar/img/list.d.ts +1 -0
  241. package/dist/src/sort-filter-bar/img/list.js +5 -0
  242. package/dist/src/sort-filter-bar/img/list.js.map +1 -0
  243. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -0
  244. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +15 -0
  245. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js.map +1 -0
  246. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -0
  247. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +17 -0
  248. package/dist/src/sort-filter-bar/img/sort-toggle-down.js.map +1 -0
  249. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -0
  250. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +17 -0
  251. package/dist/src/sort-filter-bar/img/sort-toggle-up.js.map +1 -0
  252. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -0
  253. package/dist/src/sort-filter-bar/img/sort-triangle.js +5 -0
  254. package/dist/src/sort-filter-bar/img/sort-triangle.js.map +1 -0
  255. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -0
  256. package/dist/src/sort-filter-bar/img/tile.js +5 -0
  257. package/dist/src/sort-filter-bar/img/tile.js.map +1 -0
  258. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +278 -0
  259. package/dist/src/sort-filter-bar/sort-filter-bar.js +1161 -0
  260. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -0
  261. package/dist/src/styles/ia-button.d.ts +2 -0
  262. package/dist/src/styles/ia-button.js +134 -0
  263. package/dist/src/styles/ia-button.js.map +1 -0
  264. package/dist/src/styles/item-image-styles.d.ts +8 -0
  265. package/dist/src/styles/item-image-styles.js +123 -0
  266. package/dist/src/styles/item-image-styles.js.map +1 -0
  267. package/dist/src/styles/sr-only.d.ts +1 -0
  268. package/dist/src/styles/sr-only.js +18 -0
  269. package/dist/src/styles/sr-only.js.map +1 -0
  270. package/dist/src/tiles/base-tile-component.d.ts +27 -0
  271. package/dist/src/tiles/base-tile-component.js +82 -0
  272. package/dist/src/tiles/base-tile-component.js.map +1 -0
  273. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -0
  274. package/dist/src/tiles/collection-browser-loading-tile.js +29 -0
  275. package/dist/src/tiles/collection-browser-loading-tile.js.map +1 -0
  276. package/dist/src/tiles/grid/account-tile.d.ts +18 -0
  277. package/dist/src/tiles/grid/account-tile.js +111 -0
  278. package/dist/src/tiles/grid/account-tile.js.map +1 -0
  279. package/dist/src/tiles/grid/collection-tile.d.ts +15 -0
  280. package/dist/src/tiles/grid/collection-tile.js +160 -0
  281. package/dist/src/tiles/grid/collection-tile.js.map +1 -0
  282. package/dist/src/tiles/grid/item-tile.d.ts +41 -0
  283. package/dist/src/tiles/grid/item-tile.js +321 -0
  284. package/dist/src/tiles/grid/item-tile.js.map +1 -0
  285. package/dist/src/tiles/grid/search-tile.d.ts +10 -0
  286. package/dist/src/tiles/grid/search-tile.js +95 -0
  287. package/dist/src/tiles/grid/search-tile.js.map +1 -0
  288. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -0
  289. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +128 -0
  290. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js.map +1 -0
  291. package/dist/src/tiles/grid/tile-stats.d.ts +58 -0
  292. package/dist/src/tiles/grid/tile-stats.js +204 -0
  293. package/dist/src/tiles/grid/tile-stats.js.map +1 -0
  294. package/dist/src/tiles/hover/hover-pane-controller.d.ts +228 -0
  295. package/dist/src/tiles/hover/hover-pane-controller.js +446 -0
  296. package/dist/src/tiles/hover/hover-pane-controller.js.map +1 -0
  297. package/dist/src/tiles/hover/tile-hover-pane.d.ts +20 -0
  298. package/dist/src/tiles/hover/tile-hover-pane.js +185 -0
  299. package/dist/src/tiles/hover/tile-hover-pane.js.map +1 -0
  300. package/dist/src/tiles/image-block.d.ts +19 -0
  301. package/dist/src/tiles/image-block.js +175 -0
  302. package/dist/src/tiles/image-block.js.map +1 -0
  303. package/dist/src/tiles/item-image.d.ts +40 -0
  304. package/dist/src/tiles/item-image.js +191 -0
  305. package/dist/src/tiles/item-image.js.map +1 -0
  306. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -0
  307. package/dist/src/tiles/list/tile-list-compact-header.js +85 -0
  308. package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -0
  309. package/dist/src/tiles/list/tile-list-compact.d.ts +19 -0
  310. package/dist/src/tiles/list/tile-list-compact.js +223 -0
  311. package/dist/src/tiles/list/tile-list-compact.js.map +1 -0
  312. package/dist/src/tiles/list/tile-list.d.ts +54 -0
  313. package/dist/src/tiles/list/tile-list.js +621 -0
  314. package/dist/src/tiles/list/tile-list.js.map +1 -0
  315. package/dist/src/tiles/models.d.ts +1 -0
  316. package/dist/src/tiles/models.js +2 -0
  317. package/dist/src/tiles/models.js.map +1 -0
  318. package/dist/src/tiles/overlay/icon-overlay.d.ts +8 -0
  319. package/dist/src/tiles/overlay/icon-overlay.js +55 -0
  320. package/dist/src/tiles/overlay/icon-overlay.js.map +1 -0
  321. package/dist/src/tiles/overlay/text-overlay.d.ts +9 -0
  322. package/dist/src/tiles/overlay/text-overlay.js +74 -0
  323. package/dist/src/tiles/overlay/text-overlay.js.map +1 -0
  324. package/dist/src/tiles/review-block.d.ts +12 -0
  325. package/dist/src/tiles/review-block.js +134 -0
  326. package/dist/src/tiles/review-block.js.map +1 -0
  327. package/dist/src/tiles/text-snippet-block.d.ts +27 -0
  328. package/dist/src/tiles/text-snippet-block.js +132 -0
  329. package/dist/src/tiles/text-snippet-block.js.map +1 -0
  330. package/dist/src/tiles/tile-dispatcher.d.ts +71 -0
  331. package/dist/src/tiles/tile-dispatcher.js +472 -0
  332. package/dist/src/tiles/tile-dispatcher.js.map +1 -0
  333. package/dist/src/tiles/tile-display-value-provider.d.ts +47 -0
  334. package/dist/src/tiles/tile-display-value-provider.js +95 -0
  335. package/dist/src/tiles/tile-display-value-provider.js.map +1 -0
  336. package/dist/src/tiles/tile-mediatype-icon.d.ts +27 -0
  337. package/dist/src/tiles/tile-mediatype-icon.js +130 -0
  338. package/dist/src/tiles/tile-mediatype-icon.js.map +1 -0
  339. package/dist/src/utils/analytics-events.d.ts +28 -0
  340. package/dist/src/utils/analytics-events.js +31 -0
  341. package/dist/src/utils/analytics-events.js.map +1 -0
  342. package/dist/src/utils/array-equals.d.ts +4 -0
  343. package/dist/src/utils/array-equals.js +11 -0
  344. package/dist/src/utils/array-equals.js.map +1 -0
  345. package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -0
  346. package/dist/src/utils/collapse-repeated-quotes.js +14 -0
  347. package/dist/src/utils/collapse-repeated-quotes.js.map +1 -0
  348. package/dist/src/utils/facet-utils.d.ts +83 -0
  349. package/dist/src/utils/facet-utils.js +152 -0
  350. package/dist/src/utils/facet-utils.js.map +1 -0
  351. package/dist/src/utils/format-count.d.ts +7 -0
  352. package/dist/src/utils/format-count.js +76 -0
  353. package/dist/src/utils/format-count.js.map +1 -0
  354. package/dist/src/utils/format-date.d.ts +16 -0
  355. package/dist/src/utils/format-date.js +33 -0
  356. package/dist/src/utils/format-date.js.map +1 -0
  357. package/dist/src/utils/format-unit-size.d.ts +2 -0
  358. package/dist/src/utils/format-unit-size.js +34 -0
  359. package/dist/src/utils/format-unit-size.js.map +1 -0
  360. package/dist/src/utils/local-date-from-utc.d.ts +9 -0
  361. package/dist/src/utils/local-date-from-utc.js +16 -0
  362. package/dist/src/utils/local-date-from-utc.js.map +1 -0
  363. package/dist/src/utils/log.d.ts +7 -0
  364. package/dist/src/utils/log.js +14 -0
  365. package/dist/src/utils/log.js.map +1 -0
  366. package/dist/src/utils/resolve-mediatype.d.ts +8 -0
  367. package/dist/src/utils/resolve-mediatype.js +24 -0
  368. package/dist/src/utils/resolve-mediatype.js.map +1 -0
  369. package/dist/src/utils/sha1.d.ts +2 -0
  370. package/dist/src/utils/sha1.js +9 -0
  371. package/dist/src/utils/sha1.js.map +1 -0
  372. package/dist/test/collection-browser.test.d.ts +1 -0
  373. package/dist/test/collection-browser.test.js +1711 -0
  374. package/dist/test/collection-browser.test.js.map +1 -0
  375. package/dist/test/collection-facets/facet-row.test.d.ts +1 -0
  376. package/dist/test/collection-facets/facet-row.test.js +274 -0
  377. package/dist/test/collection-facets/facet-row.test.js.map +1 -0
  378. package/dist/test/collection-facets/facets-template.test.d.ts +1 -0
  379. package/dist/test/collection-facets/facets-template.test.js +101 -0
  380. package/dist/test/collection-facets/facets-template.test.js.map +1 -0
  381. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -0
  382. package/dist/test/collection-facets/more-facets-content.test.js +169 -0
  383. package/dist/test/collection-facets/more-facets-content.test.js.map +1 -0
  384. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -0
  385. package/dist/test/collection-facets/more-facets-pagination.test.js +132 -0
  386. package/dist/test/collection-facets/more-facets-pagination.test.js.map +1 -0
  387. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -0
  388. package/dist/test/collection-facets/toggle-switch.test.js +96 -0
  389. package/dist/test/collection-facets/toggle-switch.test.js.map +1 -0
  390. package/dist/test/collection-facets.test.d.ts +2 -0
  391. package/dist/test/collection-facets.test.js +745 -0
  392. package/dist/test/collection-facets.test.js.map +1 -0
  393. package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -0
  394. package/dist/test/data-source/collection-browser-data-source.test.js +102 -0
  395. package/dist/test/data-source/collection-browser-data-source.test.js.map +1 -0
  396. package/dist/test/empty-placeholder.test.d.ts +1 -0
  397. package/dist/test/empty-placeholder.test.js +63 -0
  398. package/dist/test/empty-placeholder.test.js.map +1 -0
  399. package/dist/test/expanded-date-picker.test.d.ts +1 -0
  400. package/dist/test/expanded-date-picker.test.js +130 -0
  401. package/dist/test/expanded-date-picker.test.js.map +1 -0
  402. package/dist/test/icon-overlay.test.d.ts +1 -0
  403. package/dist/test/icon-overlay.test.js +30 -0
  404. package/dist/test/icon-overlay.test.js.map +1 -0
  405. package/dist/test/image-block.test.d.ts +1 -0
  406. package/dist/test/image-block.test.js +218 -0
  407. package/dist/test/image-block.test.js.map +1 -0
  408. package/dist/test/item-image.test.d.ts +1 -0
  409. package/dist/test/item-image.test.js +196 -0
  410. package/dist/test/item-image.test.js.map +1 -0
  411. package/dist/test/manage/manage-bar.test.d.ts +2 -0
  412. package/dist/test/manage/manage-bar.test.js +106 -0
  413. package/dist/test/manage/manage-bar.test.js.map +1 -0
  414. package/dist/test/manage/remove-items-modal-content.test.d.ts +1 -0
  415. package/dist/test/manage/remove-items-modal-content.test.js +65 -0
  416. package/dist/test/manage/remove-items-modal-content.test.js.map +1 -0
  417. package/dist/test/mediatype-config.test.d.ts +1 -0
  418. package/dist/test/mediatype-config.test.js +11 -0
  419. package/dist/test/mediatype-config.test.js.map +1 -0
  420. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -0
  421. package/dist/test/mocks/mock-analytics-handler.js +16 -0
  422. package/dist/test/mocks/mock-analytics-handler.js.map +1 -0
  423. package/dist/test/mocks/mock-search-responses.d.ts +31 -0
  424. package/dist/test/mocks/mock-search-responses.js +1241 -0
  425. package/dist/test/mocks/mock-search-responses.js.map +1 -0
  426. package/dist/test/mocks/mock-search-service.d.ts +16 -0
  427. package/dist/test/mocks/mock-search-service.js +65 -0
  428. package/dist/test/mocks/mock-search-service.js.map +1 -0
  429. package/dist/test/restoration-state-handler.test.d.ts +1 -0
  430. package/dist/test/restoration-state-handler.test.js +375 -0
  431. package/dist/test/restoration-state-handler.test.js.map +1 -0
  432. package/dist/test/review-block.test.d.ts +1 -0
  433. package/dist/test/review-block.test.js +48 -0
  434. package/dist/test/review-block.test.js.map +1 -0
  435. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -0
  436. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +13 -0
  437. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js.map +1 -0
  438. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -0
  439. package/dist/test/sort-filter-bar/alpha-bar.test.js +74 -0
  440. package/dist/test/sort-filter-bar/alpha-bar.test.js.map +1 -0
  441. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -0
  442. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +609 -0
  443. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -0
  444. package/dist/test/text-overlay.test.d.ts +1 -0
  445. package/dist/test/text-overlay.test.js +42 -0
  446. package/dist/test/text-overlay.test.js.map +1 -0
  447. package/dist/test/text-snippet-block.test.d.ts +1 -0
  448. package/dist/test/text-snippet-block.test.js +63 -0
  449. package/dist/test/text-snippet-block.test.js.map +1 -0
  450. package/dist/test/tile-stats.test.d.ts +1 -0
  451. package/dist/test/tile-stats.test.js +128 -0
  452. package/dist/test/tile-stats.test.js.map +1 -0
  453. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -0
  454. package/dist/test/tiles/grid/account-tile.test.js +96 -0
  455. package/dist/test/tiles/grid/account-tile.test.js.map +1 -0
  456. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -0
  457. package/dist/test/tiles/grid/collection-tile.test.js +96 -0
  458. package/dist/test/tiles/grid/collection-tile.test.js.map +1 -0
  459. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -0
  460. package/dist/test/tiles/grid/item-tile.test.js +427 -0
  461. package/dist/test/tiles/grid/item-tile.test.js.map +1 -0
  462. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -0
  463. package/dist/test/tiles/grid/search-tile.test.js +66 -0
  464. package/dist/test/tiles/grid/search-tile.test.js.map +1 -0
  465. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -0
  466. package/dist/test/tiles/hover/hover-pane-controller.test.js +329 -0
  467. package/dist/test/tiles/hover/hover-pane-controller.test.js.map +1 -0
  468. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -0
  469. package/dist/test/tiles/hover/tile-hover-pane.test.js +57 -0
  470. package/dist/test/tiles/hover/tile-hover-pane.test.js.map +1 -0
  471. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -0
  472. package/dist/test/tiles/list/tile-list-compact.test.js +251 -0
  473. package/dist/test/tiles/list/tile-list-compact.test.js.map +1 -0
  474. package/dist/test/tiles/list/tile-list.test.d.ts +1 -0
  475. package/dist/test/tiles/list/tile-list.test.js +469 -0
  476. package/dist/test/tiles/list/tile-list.test.js.map +1 -0
  477. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -0
  478. package/dist/test/tiles/tile-dispatcher.test.js +231 -0
  479. package/dist/test/tiles/tile-dispatcher.test.js.map +1 -0
  480. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -0
  481. package/dist/test/tiles/tile-display-value-provider.test.js +142 -0
  482. package/dist/test/tiles/tile-display-value-provider.test.js.map +1 -0
  483. package/dist/test/tiles/tile-mediatype-icon.test.d.ts +1 -0
  484. package/dist/test/tiles/tile-mediatype-icon.test.js +145 -0
  485. package/dist/test/tiles/tile-mediatype-icon.test.js.map +1 -0
  486. package/dist/test/utils/array-equals.test.d.ts +1 -0
  487. package/dist/test/utils/array-equals.test.js +27 -0
  488. package/dist/test/utils/array-equals.test.js.map +1 -0
  489. package/dist/test/utils/format-count.test.d.ts +1 -0
  490. package/dist/test/utils/format-count.test.js +24 -0
  491. package/dist/test/utils/format-count.test.js.map +1 -0
  492. package/dist/test/utils/format-date.test.d.ts +1 -0
  493. package/dist/test/utils/format-date.test.js +61 -0
  494. package/dist/test/utils/format-date.test.js.map +1 -0
  495. package/dist/test/utils/format-unit-size.test.d.ts +1 -0
  496. package/dist/test/utils/format-unit-size.test.js +18 -0
  497. package/dist/test/utils/format-unit-size.test.js.map +1 -0
  498. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -0
  499. package/dist/test/utils/local-date-from-utc.test.js +27 -0
  500. package/dist/test/utils/local-date-from-utc.test.js.map +1 -0
  501. package/eslint.config.mjs +53 -53
  502. package/index.html +24 -24
  503. package/local.archive.org.cert +86 -86
  504. package/local.archive.org.key +27 -27
  505. package/package.json +118 -117
  506. package/renovate.json +6 -6
  507. package/src/collection-browser.ts +2829 -2829
  508. package/src/collection-facets/more-facets-content.ts +639 -639
  509. package/src/collection-facets.ts +994 -995
  510. package/src/data-source/collection-browser-data-source.ts +1401 -1401
  511. package/src/data-source/collection-browser-query-state.ts +65 -65
  512. package/src/data-source/models.ts +43 -43
  513. package/src/tiles/base-tile-component.ts +65 -65
  514. package/src/tiles/grid/account-tile.ts +113 -113
  515. package/src/tiles/grid/collection-tile.ts +163 -163
  516. package/src/tiles/grid/item-tile.ts +340 -340
  517. package/src/tiles/hover/hover-pane-controller.ts +613 -517
  518. package/src/tiles/hover/tile-hover-pane.ts +184 -180
  519. package/src/tiles/list/tile-list-compact.ts +239 -239
  520. package/src/tiles/list/tile-list.ts +700 -700
  521. package/src/tiles/tile-dispatcher.ts +517 -490
  522. package/src/utils/format-date.ts +62 -62
  523. package/test/collection-browser.test.ts +2403 -2403
  524. package/test/tiles/grid/item-tile.test.ts +520 -520
  525. package/test/tiles/hover/hover-pane-controller.test.ts +418 -353
  526. package/test/tiles/list/tile-list-compact.test.ts +282 -282
  527. package/test/tiles/list/tile-list.test.ts +552 -552
  528. package/test/tiles/tile-dispatcher.test.ts +283 -187
  529. package/test/utils/format-date.test.ts +89 -89
  530. package/tsconfig.json +20 -20
  531. package/web-dev-server.config.mjs +30 -30
  532. package/web-test-runner.config.mjs +41 -41
@@ -0,0 +1,66 @@
1
+ import { expect, fixture } from '@open-wc/testing';
2
+ import { html } from 'lit';
3
+ import '../../../src/tiles/grid/search-tile';
4
+ describe('Search Tile', () => {
5
+ it('should render initial component', async () => {
6
+ var _a, _b, _c, _d;
7
+ const el = await fixture(html `<search-tile></search-tile>`);
8
+ const itemInfo = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.item-info');
9
+ const itemImage = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('image-block');
10
+ const title = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#title');
11
+ const itemStats = (_d = el.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('#item-stats');
12
+ expect(itemInfo).to.exist;
13
+ expect(itemImage).to.exist;
14
+ expect(title).to.exist;
15
+ expect(itemStats).not.exist; // search tiles doesn't have stats bar
16
+ });
17
+ it('should render with title element', async () => {
18
+ var _a, _b, _c;
19
+ const el = await fixture(html `
20
+ <search-tile
21
+ .model=${{
22
+ identifier: 'searched query',
23
+ title: 'searched query',
24
+ }}
25
+ >
26
+ </search-tile>
27
+ `);
28
+ await el.updateComplete;
29
+ const itemInfo = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.item-info');
30
+ const itemTitle = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#title');
31
+ expect(itemInfo).to.exist;
32
+ expect(itemTitle).to.exist;
33
+ expect((_c = itemTitle === null || itemTitle === void 0 ? void 0 : itemTitle.querySelector('.truncated')) === null || _c === void 0 ? void 0 : _c.textContent).to.equal('searched query');
34
+ });
35
+ it('should render with image-block element', async () => {
36
+ var _a;
37
+ const el = await fixture(html `
38
+ <search-tile
39
+ .model=${{
40
+ identifier: 'title:hello-world',
41
+ }}
42
+ >
43
+ </search-tile>
44
+ `);
45
+ await el.updateComplete;
46
+ const itemImageBlock = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('image-block');
47
+ expect(itemImageBlock).to.exist;
48
+ });
49
+ it('should not render with item stats element', async () => {
50
+ var _a;
51
+ const el = await fixture(html `
52
+ <search-tile
53
+ .model=${{
54
+ identifier: '@jack-sparrow',
55
+ itemCount: 14521,
56
+ collectionSize: 23222543,
57
+ }}
58
+ >
59
+ </search-tile>
60
+ `);
61
+ await el.updateComplete;
62
+ const itemStats = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#item-stats');
63
+ expect(itemStats).not.exist;
64
+ });
65
+ });
66
+ //# sourceMappingURL=search-tile.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-tile.test.js","sourceRoot":"","sources":["../../../../test/tiles/grid/search-tile.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport type { SearchTile } from '../../../src/tiles/grid/search-tile';\n\nimport '../../../src/tiles/grid/search-tile';\n\ndescribe('Search Tile', () => {\n it('should render initial component', async () => {\n const el = await fixture<SearchTile>(html`<search-tile></search-tile>`);\n\n const itemInfo = el.shadowRoot?.querySelector('.item-info');\n const itemImage = el.shadowRoot?.querySelector('image-block');\n const title = el.shadowRoot?.querySelector('#title');\n const itemStats = el.shadowRoot?.querySelector('#item-stats');\n\n expect(itemInfo).to.exist;\n expect(itemImage).to.exist;\n expect(title).to.exist;\n expect(itemStats).not.exist; // search tiles doesn't have stats bar\n });\n\n it('should render with title element', async () => {\n const el = await fixture<SearchTile>(html`\n <search-tile\n .model=${{\n identifier: 'searched query',\n title: 'searched query',\n }}\n >\n </search-tile>\n `);\n await el.updateComplete;\n\n const itemInfo = el.shadowRoot?.querySelector('.item-info');\n const itemTitle = el.shadowRoot?.querySelector('#title');\n\n expect(itemInfo).to.exist;\n expect(itemTitle).to.exist;\n expect(itemTitle?.querySelector('.truncated')?.textContent).to.equal(\n 'searched query',\n );\n });\n\n it('should render with image-block element', async () => {\n const el = await fixture<SearchTile>(html`\n <search-tile\n .model=${{\n identifier: 'title:hello-world',\n }}\n >\n </search-tile>\n `);\n await el.updateComplete;\n\n const itemImageBlock = el.shadowRoot?.querySelector('image-block');\n expect(itemImageBlock).to.exist;\n });\n\n it('should not render with item stats element', async () => {\n const el = await fixture<SearchTile>(html`\n <search-tile\n .model=${{\n identifier: '@jack-sparrow',\n itemCount: 14521,\n collectionSize: 23222543,\n }}\n >\n </search-tile>\n `);\n await el.updateComplete;\n\n const itemStats = el.shadowRoot?.querySelector('#item-stats');\n expect(itemStats).not.exist;\n });\n});\n"]}
@@ -0,0 +1,329 @@
1
+ import { __decorate } from "tslib";
2
+ import { expect, fixture } from '@open-wc/testing';
3
+ import { html, LitElement, nothing } from 'lit';
4
+ import { customElement, property, query } from 'lit/decorators.js';
5
+ import { HoverPaneController, } from '../../../src/tiles/hover/hover-pane-controller';
6
+ import { TileModel } from '../../../src/models';
7
+ import sinon from 'sinon';
8
+ let HostElement = class HostElement extends LitElement {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.suppressHoverPane = false;
12
+ }
13
+ render() {
14
+ var _a;
15
+ return html ` ${(_a = this.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()} `;
16
+ }
17
+ firstUpdated() {
18
+ this.controller = new HoverPaneController(this, this.controllerOptions);
19
+ }
20
+ acquireFocus() { }
21
+ releaseFocus() { }
22
+ getHoverPane() {
23
+ return this.suppressHoverPane ? undefined : this.hoverPane;
24
+ }
25
+ getHoverPaneProps() {
26
+ const tileModel = new TileModel({});
27
+ tileModel.checked = false;
28
+ tileModel.collectionFilesCount = 1;
29
+ tileModel.collections = ['foo', 'bar'];
30
+ tileModel.collectionSize = 1;
31
+ tileModel.commentCount = 1;
32
+ tileModel.contentWarning = false;
33
+ tileModel.creators = ['foo', 'bar'];
34
+ tileModel.favCount = 1;
35
+ tileModel.identifier = 'foo';
36
+ tileModel.itemCount = 1;
37
+ tileModel.loginRequired = false;
38
+ tileModel.mediatype = 'data';
39
+ tileModel.subjects = ['foo', 'bar'];
40
+ tileModel.title = 'foo';
41
+ tileModel.viewCount = 1;
42
+ return {
43
+ model: tileModel,
44
+ loggedIn: false,
45
+ suppressBlurring: false,
46
+ sortParam: null,
47
+ };
48
+ }
49
+ };
50
+ __decorate([
51
+ property({ type: Object })
52
+ ], HostElement.prototype, "controllerOptions", void 0);
53
+ __decorate([
54
+ property({ type: Boolean })
55
+ ], HostElement.prototype, "suppressHoverPane", void 0);
56
+ __decorate([
57
+ query('tile-hover-pane')
58
+ ], HostElement.prototype, "hoverPane", void 0);
59
+ HostElement = __decorate([
60
+ customElement('host-element')
61
+ ], HostElement);
62
+ describe('Hover Pane Controller', () => {
63
+ let oldMatchMedia;
64
+ let oldOnTouchStart;
65
+ before(() => {
66
+ oldMatchMedia = window.matchMedia;
67
+ oldOnTouchStart = window.ontouchstart;
68
+ window.matchMedia = () => ({ matches: true });
69
+ window.ontouchstart = () => { };
70
+ });
71
+ after(() => {
72
+ window.matchMedia = oldMatchMedia;
73
+ window.ontouchstart = oldOnTouchStart;
74
+ });
75
+ it('should initially provide empty template', async () => {
76
+ var _a;
77
+ const host = await fixture(html `<host-element></host-element>`);
78
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).to.equal(nothing);
79
+ });
80
+ it('should produce a hover pane template after mousemove, and hide it after mouseleave', async () => {
81
+ var _a, _b;
82
+ const host = await fixture(html `<host-element
83
+ .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}
84
+ ></host-element>`);
85
+ host.dispatchEvent(new MouseEvent('mousemove'));
86
+ // Need to wait a tick for the event handlers to run
87
+ await new Promise(resolve => {
88
+ setTimeout(resolve, 0);
89
+ });
90
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing); // Is a TemplateResult
91
+ host.dispatchEvent(new MouseEvent('mouseleave'));
92
+ // Need to wait for the fade out transition
93
+ await new Promise(resolve => {
94
+ setTimeout(resolve, 150);
95
+ });
96
+ expect((_b = host.controller) === null || _b === void 0 ? void 0 : _b.getTemplate()).to.equal(nothing);
97
+ });
98
+ it('should produce a hover pane template after mouseenter, even without mousemove', async () => {
99
+ var _a;
100
+ const host = await fixture(html `<host-element
101
+ .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}
102
+ ></host-element>`);
103
+ host.dispatchEvent(new MouseEvent('mouseenter'));
104
+ // Need to wait a tick for the event handlers to run
105
+ await new Promise(resolve => {
106
+ setTimeout(resolve, 0);
107
+ });
108
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing); // Is a TemplateResult
109
+ });
110
+ it('should immediately fade back in if mouse enters while fading out', async () => {
111
+ var _a;
112
+ const host = await fixture(html `<host-element
113
+ .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}
114
+ ></host-element>`);
115
+ // Enter the host element and wait for the show handlers to run
116
+ host.dispatchEvent(new MouseEvent('mousemove'));
117
+ await new Promise(resolve => {
118
+ setTimeout(resolve, 0);
119
+ });
120
+ // Leave the host element so it begins fading out, but not all the way
121
+ host.dispatchEvent(new MouseEvent('mouseleave'));
122
+ await new Promise(resolve => {
123
+ setTimeout(resolve, 20);
124
+ });
125
+ // Re-enter the host element and wait long enough that it would disappear
126
+ // if the hide were not cancelled
127
+ host.dispatchEvent(new MouseEvent('mousemove'));
128
+ await new Promise(resolve => {
129
+ setTimeout(resolve, 150);
130
+ });
131
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing);
132
+ });
133
+ it('should flip hover pane if it would overflow the viewport', async () => {
134
+ var _a, _b, _c, _d, _e;
135
+ const host = await fixture(html `<host-element
136
+ .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}
137
+ ></host-element>`);
138
+ host.dispatchEvent(new MouseEvent('mousemove', { clientX: 800, clientY: 600 }));
139
+ // Need to wait a tick for the event handlers to run
140
+ await new Promise(resolve => {
141
+ setTimeout(resolve, 0);
142
+ });
143
+ await host.updateComplete;
144
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing);
145
+ expect((_c = (_b = host.getHoverPane()) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect()) === null || _c === void 0 ? void 0 : _c.right).to.be.lessThan(window.innerWidth);
146
+ expect((_e = (_d = host.getHoverPane()) === null || _d === void 0 ? void 0 : _d.getBoundingClientRect()) === null || _e === void 0 ? void 0 : _e.bottom).to.be.lessThan(window.innerHeight);
147
+ });
148
+ it('should gracefully handle undefined hover pane from host element', async () => {
149
+ var _a, _b;
150
+ const host = await fixture(html `<host-element
151
+ .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}
152
+ ?suppressHoverPane=${true}
153
+ ></host-element>`);
154
+ host.dispatchEvent(new MouseEvent('mousemove'));
155
+ // Need to wait a tick for the event handlers to run
156
+ await new Promise(resolve => {
157
+ setTimeout(resolve, 0);
158
+ });
159
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing);
160
+ host.dispatchEvent(new MouseEvent('mouseleave'));
161
+ await new Promise(resolve => {
162
+ setTimeout(resolve, 20);
163
+ });
164
+ host.dispatchEvent(new MouseEvent('mousemove'));
165
+ await new Promise(resolve => {
166
+ setTimeout(resolve, 0);
167
+ });
168
+ host.dispatchEvent(new MouseEvent('mouseleave'));
169
+ // Need to wait for the fade out transition
170
+ await new Promise(resolve => {
171
+ setTimeout(resolve, 150);
172
+ });
173
+ expect((_b = host.controller) === null || _b === void 0 ? void 0 : _b.getTemplate()).to.equal(nothing);
174
+ });
175
+ describe('Touch & long-press', () => {
176
+ const getTouchStartEvent = (host) => new TouchEvent('touchstart', {
177
+ touches: [new Touch({ identifier: 0, target: host })],
178
+ });
179
+ it('should produce a hover pane after long press', async () => {
180
+ var _a;
181
+ const host = await fixture(html `<host-element
182
+ .controllerOptions=${{
183
+ showDelay: 0,
184
+ longPressDelay: 0,
185
+ enableLongPress: true,
186
+ }}
187
+ ></host-element>`);
188
+ // Touch the host element and wait for the long press handlers to run
189
+ host.dispatchEvent(getTouchStartEvent(host));
190
+ await new Promise(resolve => {
191
+ setTimeout(resolve, 0);
192
+ });
193
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing); // Is a TemplateResult
194
+ });
195
+ it('should cancel a long press by moving', async () => {
196
+ var _a;
197
+ const host = await fixture(html `<host-element
198
+ .controllerOptions=${{
199
+ showDelay: 0,
200
+ longPressDelay: 100,
201
+ enableLongPress: true,
202
+ }}
203
+ ></host-element>`);
204
+ // Touch the host element
205
+ host.dispatchEvent(getTouchStartEvent(host));
206
+ await new Promise(resolve => {
207
+ setTimeout(resolve, 0);
208
+ });
209
+ // Move the touch point, cancelling the long press
210
+ host.dispatchEvent(new TouchEvent('touchmove'));
211
+ await new Promise(resolve => {
212
+ setTimeout(resolve, 150);
213
+ });
214
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).to.equal(nothing);
215
+ });
216
+ it('should cancel a long press by ending touch', async () => {
217
+ var _a;
218
+ const host = await fixture(html `<host-element
219
+ .controllerOptions=${{
220
+ showDelay: 0,
221
+ longPressDelay: 100,
222
+ enableLongPress: true,
223
+ }}
224
+ ></host-element>`);
225
+ // Touch the host element
226
+ host.dispatchEvent(getTouchStartEvent(host));
227
+ await new Promise(resolve => {
228
+ setTimeout(resolve, 0);
229
+ });
230
+ // Lift the touch point, cancelling the long press
231
+ host.dispatchEvent(new TouchEvent('touchend'));
232
+ await new Promise(resolve => {
233
+ setTimeout(resolve, 150);
234
+ });
235
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).to.equal(nothing);
236
+ });
237
+ it('should cancel a long press by cancelling touch (e.g., too many touch points)', async () => {
238
+ var _a;
239
+ const host = await fixture(html `<host-element
240
+ .controllerOptions=${{
241
+ showDelay: 0,
242
+ longPressDelay: 100,
243
+ enableLongPress: true,
244
+ }}
245
+ ></host-element>`);
246
+ // Touch the host element
247
+ host.dispatchEvent(getTouchStartEvent(host));
248
+ await new Promise(resolve => {
249
+ setTimeout(resolve, 0);
250
+ });
251
+ // Cancel the touch point, also cancelling the long press
252
+ host.dispatchEvent(new TouchEvent('touchcancel'));
253
+ await new Promise(resolve => {
254
+ setTimeout(resolve, 150);
255
+ });
256
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).to.equal(nothing);
257
+ });
258
+ it('should close the hover pane on mobile when touching the backdrop', async () => {
259
+ var _a, _b, _c, _d;
260
+ const host = await fixture(html `<host-element
261
+ .controllerOptions=${{
262
+ showDelay: 0,
263
+ hideDelay: 0,
264
+ longPressDelay: 0,
265
+ enableLongPress: true,
266
+ mobileBreakpoint: 9999, // Ensure we get the mobile view
267
+ }}
268
+ ></host-element>`);
269
+ // Touch the host element
270
+ host.dispatchEvent(getTouchStartEvent(host));
271
+ await new Promise(resolve => {
272
+ setTimeout(resolve, 0);
273
+ });
274
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing);
275
+ await host.updateComplete;
276
+ // Touch the backdrop
277
+ (_c = (_b = host.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#touch-backdrop')) === null || _c === void 0 ? void 0 : _c.dispatchEvent(new TouchEvent('touchstart'));
278
+ await new Promise(resolve => {
279
+ setTimeout(resolve, 150);
280
+ });
281
+ expect((_d = host.controller) === null || _d === void 0 ? void 0 : _d.getTemplate()).to.equal(nothing);
282
+ });
283
+ });
284
+ describe('keyboard accessibility', () => {
285
+ it('should call host getBoundingClientRect if anchor is host', async () => {
286
+ const host = await fixture(html `<host-element
287
+ .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}
288
+ ></host-element>`);
289
+ const getBoundingClientRectSpy = sinon.spy(host, 'getBoundingClientRect');
290
+ host.dispatchEvent(new FocusEvent('focus'));
291
+ // Need to wait a tick for the event handlers to run
292
+ await new Promise(resolve => {
293
+ setTimeout(resolve, 0);
294
+ });
295
+ expect(getBoundingClientRectSpy.called).to.be.true;
296
+ });
297
+ it('should show hover pane on focus', async () => {
298
+ var _a;
299
+ const host = await fixture(html `<host-element
300
+ .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}
301
+ ></host-element>`);
302
+ host.dispatchEvent(new FocusEvent('focus'));
303
+ // Need to wait a tick for the event handlers to run
304
+ await new Promise(resolve => {
305
+ setTimeout(resolve, 0);
306
+ });
307
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing); // Is a TemplateResult
308
+ });
309
+ it('should hide hover pane on blur', async () => {
310
+ var _a, _b;
311
+ const host = await fixture(html `<host-element
312
+ .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}
313
+ ></host-element>`);
314
+ host.dispatchEvent(new FocusEvent('focus'));
315
+ // Need to wait a tick for the event handlers to run
316
+ await new Promise(resolve => {
317
+ setTimeout(resolve, 0);
318
+ });
319
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing); // Is a TemplateResult
320
+ host.dispatchEvent(new FocusEvent('blur'));
321
+ // Need to wait for the fade out transition
322
+ await new Promise(resolve => {
323
+ setTimeout(resolve, 150);
324
+ });
325
+ expect((_b = host.controller) === null || _b === void 0 ? void 0 : _b.getTemplate()).to.equal(nothing);
326
+ });
327
+ });
328
+ });
329
+ //# sourceMappingURL=hover-pane-controller.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hover-pane-controller.test.js","sourceRoot":"","sources":["../../../../test/tiles/hover/hover-pane-controller.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\r\nimport { html, LitElement, nothing, TemplateResult } from 'lit';\r\nimport { customElement, property, query } from 'lit/decorators.js';\r\nimport {\r\n HoverPaneController,\r\n HoverPaneControllerInterface,\r\n HoverPaneControllerOptions,\r\n HoverPaneProperties,\r\n HoverPaneProviderInterface,\r\n} from '../../../src/tiles/hover/hover-pane-controller';\r\nimport type { TileHoverPane } from '../../../src/tiles/hover/tile-hover-pane';\r\nimport { TileModel } from '../../../src/models';\r\nimport sinon from 'sinon';\r\n\r\n@customElement('host-element')\r\nclass HostElement extends LitElement implements HoverPaneProviderInterface {\r\n @property({ type: Object }) controllerOptions?: HoverPaneControllerOptions;\r\n\r\n @property({ type: Boolean }) suppressHoverPane: boolean = false;\r\n\r\n @query('tile-hover-pane') hoverPane?: TileHoverPane;\r\n\r\n controller?: HoverPaneControllerInterface;\r\n\r\n render(): TemplateResult {\r\n return html` ${this.controller?.getTemplate()} `;\r\n }\r\n\r\n protected firstUpdated(): void {\r\n this.controller = new HoverPaneController(this, this.controllerOptions);\r\n }\r\n\r\n acquireFocus(): void {}\r\n\r\n releaseFocus(): void {}\r\n\r\n getHoverPane(): HTMLElement | undefined {\r\n return this.suppressHoverPane ? undefined : this.hoverPane;\r\n }\r\n\r\n getHoverPaneProps(): HoverPaneProperties {\r\n const tileModel = new TileModel({});\r\n tileModel.checked = false;\r\n tileModel.collectionFilesCount = 1;\r\n tileModel.collections = ['foo', 'bar'];\r\n tileModel.collectionSize = 1;\r\n tileModel.commentCount = 1;\r\n tileModel.contentWarning = false;\r\n tileModel.creators = ['foo', 'bar'];\r\n tileModel.favCount = 1;\r\n tileModel.identifier = 'foo';\r\n tileModel.itemCount = 1;\r\n tileModel.loginRequired = false;\r\n tileModel.mediatype = 'data';\r\n tileModel.subjects = ['foo', 'bar'];\r\n tileModel.title = 'foo';\r\n tileModel.viewCount = 1;\r\n\r\n return {\r\n model: tileModel,\r\n loggedIn: false,\r\n suppressBlurring: false,\r\n sortParam: null,\r\n };\r\n }\r\n}\r\n\r\ndescribe('Hover Pane Controller', () => {\r\n let oldMatchMedia: typeof window.matchMedia;\r\n let oldOnTouchStart: typeof window.ontouchstart;\r\n\r\n before(() => {\r\n oldMatchMedia = window.matchMedia;\r\n oldOnTouchStart = window.ontouchstart;\r\n window.matchMedia = () => ({ matches: true }) as MediaQueryList;\r\n window.ontouchstart = () => {};\r\n });\r\n\r\n after(() => {\r\n window.matchMedia = oldMatchMedia;\r\n window.ontouchstart = oldOnTouchStart;\r\n });\r\n\r\n it('should initially provide empty template', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element></host-element>`,\r\n );\r\n expect(host.controller?.getTemplate()).to.equal(nothing);\r\n });\r\n\r\n it('should produce a hover pane template after mousemove, and hide it after mouseleave', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\r\n ></host-element>`,\r\n );\r\n\r\n host.dispatchEvent(new MouseEvent('mousemove'));\r\n // Need to wait a tick for the event handlers to run\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).not.to.equal(nothing); // Is a TemplateResult\r\n\r\n host.dispatchEvent(new MouseEvent('mouseleave'));\r\n // Need to wait for the fade out transition\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 150);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).to.equal(nothing);\r\n });\r\n\r\n it('should produce a hover pane template after mouseenter, even without mousemove', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\r\n ></host-element>`,\r\n );\r\n\r\n host.dispatchEvent(new MouseEvent('mouseenter'));\r\n // Need to wait a tick for the event handlers to run\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).not.to.equal(nothing); // Is a TemplateResult\r\n });\r\n\r\n it('should immediately fade back in if mouse enters while fading out', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\r\n ></host-element>`,\r\n );\r\n\r\n // Enter the host element and wait for the show handlers to run\r\n host.dispatchEvent(new MouseEvent('mousemove'));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n // Leave the host element so it begins fading out, but not all the way\r\n host.dispatchEvent(new MouseEvent('mouseleave'));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 20);\r\n });\r\n\r\n // Re-enter the host element and wait long enough that it would disappear\r\n // if the hide were not cancelled\r\n host.dispatchEvent(new MouseEvent('mousemove'));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 150);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).not.to.equal(nothing);\r\n });\r\n\r\n it('should flip hover pane if it would overflow the viewport', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\r\n ></host-element>`,\r\n );\r\n\r\n host.dispatchEvent(\r\n new MouseEvent('mousemove', { clientX: 800, clientY: 600 }),\r\n );\r\n // Need to wait a tick for the event handlers to run\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n await host.updateComplete;\r\n\r\n expect(host.controller?.getTemplate()).not.to.equal(nothing);\r\n expect(host.getHoverPane()?.getBoundingClientRect()?.right).to.be.lessThan(\r\n window.innerWidth,\r\n );\r\n expect(host.getHoverPane()?.getBoundingClientRect()?.bottom).to.be.lessThan(\r\n window.innerHeight,\r\n );\r\n });\r\n\r\n it('should gracefully handle undefined hover pane from host element', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\r\n ?suppressHoverPane=${true}\r\n ></host-element>`,\r\n );\r\n\r\n host.dispatchEvent(new MouseEvent('mousemove'));\r\n // Need to wait a tick for the event handlers to run\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).not.to.equal(nothing);\r\n\r\n host.dispatchEvent(new MouseEvent('mouseleave'));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 20);\r\n });\r\n\r\n host.dispatchEvent(new MouseEvent('mousemove'));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n host.dispatchEvent(new MouseEvent('mouseleave'));\r\n // Need to wait for the fade out transition\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 150);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).to.equal(nothing);\r\n });\r\n\r\n describe('Touch & long-press', () => {\r\n const getTouchStartEvent = (host: EventTarget) =>\r\n new TouchEvent('touchstart', {\r\n touches: [new Touch({ identifier: 0, target: host })],\r\n });\r\n\r\n it('should produce a hover pane after long press', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{\r\n showDelay: 0,\r\n longPressDelay: 0,\r\n enableLongPress: true,\r\n }}\r\n ></host-element>`,\r\n );\r\n\r\n // Touch the host element and wait for the long press handlers to run\r\n host.dispatchEvent(getTouchStartEvent(host));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).not.to.equal(nothing); // Is a TemplateResult\r\n });\r\n\r\n it('should cancel a long press by moving', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{\r\n showDelay: 0,\r\n longPressDelay: 100,\r\n enableLongPress: true,\r\n }}\r\n ></host-element>`,\r\n );\r\n\r\n // Touch the host element\r\n host.dispatchEvent(getTouchStartEvent(host));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n // Move the touch point, cancelling the long press\r\n host.dispatchEvent(new TouchEvent('touchmove'));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 150);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).to.equal(nothing);\r\n });\r\n\r\n it('should cancel a long press by ending touch', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{\r\n showDelay: 0,\r\n longPressDelay: 100,\r\n enableLongPress: true,\r\n }}\r\n ></host-element>`,\r\n );\r\n\r\n // Touch the host element\r\n host.dispatchEvent(getTouchStartEvent(host));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n // Lift the touch point, cancelling the long press\r\n host.dispatchEvent(new TouchEvent('touchend'));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 150);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).to.equal(nothing);\r\n });\r\n\r\n it('should cancel a long press by cancelling touch (e.g., too many touch points)', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{\r\n showDelay: 0,\r\n longPressDelay: 100,\r\n enableLongPress: true,\r\n }}\r\n ></host-element>`,\r\n );\r\n\r\n // Touch the host element\r\n host.dispatchEvent(getTouchStartEvent(host));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n // Cancel the touch point, also cancelling the long press\r\n host.dispatchEvent(new TouchEvent('touchcancel'));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 150);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).to.equal(nothing);\r\n });\r\n\r\n it('should close the hover pane on mobile when touching the backdrop', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{\r\n showDelay: 0,\r\n hideDelay: 0,\r\n longPressDelay: 0,\r\n enableLongPress: true,\r\n mobileBreakpoint: 9999, // Ensure we get the mobile view\r\n }}\r\n ></host-element>`,\r\n );\r\n\r\n // Touch the host element\r\n host.dispatchEvent(getTouchStartEvent(host));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).not.to.equal(nothing);\r\n\r\n await host.updateComplete;\r\n\r\n // Touch the backdrop\r\n host.shadowRoot\r\n ?.querySelector('#touch-backdrop')\r\n ?.dispatchEvent(new TouchEvent('touchstart'));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 150);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).to.equal(nothing);\r\n });\r\n });\r\n\r\n describe('keyboard accessibility', () => {\r\n it('should call host getBoundingClientRect if anchor is host', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\r\n ></host-element>`,\r\n );\r\n\r\n const getBoundingClientRectSpy = sinon.spy(host, 'getBoundingClientRect');\r\n\r\n host.dispatchEvent(new FocusEvent('focus'));\r\n // Need to wait a tick for the event handlers to run\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n expect(getBoundingClientRectSpy.called).to.be.true;\r\n });\r\n\r\n it('should show hover pane on focus', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\r\n ></host-element>`,\r\n );\r\n\r\n host.dispatchEvent(new FocusEvent('focus'));\r\n // Need to wait a tick for the event handlers to run\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).not.to.equal(nothing); // Is a TemplateResult\r\n });\r\n\r\n it('should hide hover pane on blur', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\r\n ></host-element>`,\r\n );\r\n\r\n host.dispatchEvent(new FocusEvent('focus'));\r\n // Need to wait a tick for the event handlers to run\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).not.to.equal(nothing); // Is a TemplateResult\r\n\r\n host.dispatchEvent(new FocusEvent('blur'));\r\n // Need to wait for the fade out transition\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 150);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).to.equal(nothing);\r\n });\r\n });\r\n});\r\n"]}
@@ -0,0 +1 @@
1
+ import '../../../src/tiles/hover/tile-hover-pane';
@@ -0,0 +1,57 @@
1
+ import { expect, fixture } from '@open-wc/testing';
2
+ import { html } from 'lit';
3
+ import '../../../src/tiles/hover/tile-hover-pane';
4
+ describe('Tile Hover Pane', () => {
5
+ it('should render initial component', async () => {
6
+ var _a, _b;
7
+ const el = await fixture(html `<tile-hover-pane></tile-hover-pane>`);
8
+ const container = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#container');
9
+ const listView = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('tile-list');
10
+ expect(container).to.exist;
11
+ expect(listView).to.exist;
12
+ });
13
+ it('should render component with header element', async () => {
14
+ var _a, _b;
15
+ const model = {
16
+ mediatype: 'texts',
17
+ collections: ['collection1', 'fav-jack-sparrow'],
18
+ };
19
+ const el = await fixture(html `<tile-hover-pane .model=${model}></tile-hover-pane>`);
20
+ const container = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#container');
21
+ const listView = container === null || container === void 0 ? void 0 : container.querySelector('tile-list');
22
+ const headerElement = container === null || container === void 0 ? void 0 : container.querySelector('#list-line-header');
23
+ expect(container).to.exist;
24
+ expect(listView).to.exist;
25
+ expect(headerElement).to.exist;
26
+ expect((_b = headerElement === null || headerElement === void 0 ? void 0 : headerElement.querySelector('a')) === null || _b === void 0 ? void 0 : _b.getAttribute('href')).contains('/details/collection1');
27
+ });
28
+ it('should NOT render header element when fav- collection', async () => {
29
+ var _a;
30
+ const model = {
31
+ mediatype: 'texts',
32
+ collections: ['fav-jack-sparrow'],
33
+ };
34
+ const el = await fixture(html `<tile-hover-pane .model=${model}></tile-hover-pane>`);
35
+ const container = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#container');
36
+ const listView = container === null || container === void 0 ? void 0 : container.querySelector('tile-list');
37
+ const headerElement = container === null || container === void 0 ? void 0 : container.querySelector('#list-line-header');
38
+ expect(container).to.exist;
39
+ expect(listView).to.exist;
40
+ expect(headerElement).not.exist;
41
+ });
42
+ it('should NOT render header element when no collections', async () => {
43
+ var _a;
44
+ const model = {
45
+ mediatype: 'texts',
46
+ collections: [],
47
+ };
48
+ const el = await fixture(html `<tile-hover-pane .model=${model}></tile-hover-pane>`);
49
+ const container = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#container');
50
+ const listView = container === null || container === void 0 ? void 0 : container.querySelector('tile-list');
51
+ const headerElement = container === null || container === void 0 ? void 0 : container.querySelector('#list-line-header');
52
+ expect(container).to.exist;
53
+ expect(listView).to.exist;
54
+ expect(headerElement).not.exist;
55
+ });
56
+ });
57
+ //# sourceMappingURL=tile-hover-pane.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tile-hover-pane.test.js","sourceRoot":"","sources":["../../../../test/tiles/hover/tile-hover-pane.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport type { TileModel } from '../../../src/models';\nimport type { TileHoverPane } from '../../../src/tiles/hover/tile-hover-pane';\n\nimport '../../../src/tiles/hover/tile-hover-pane';\n\ndescribe('Tile Hover Pane', () => {\n it('should render initial component', async () => {\n const el = await fixture<TileHoverPane>(\n html`<tile-hover-pane></tile-hover-pane>`,\n );\n\n const container = el.shadowRoot?.querySelector('#container');\n const listView = el.shadowRoot?.querySelector('tile-list');\n\n expect(container).to.exist;\n expect(listView).to.exist;\n });\n\n it('should render component with header element', async () => {\n const model: Partial<TileModel> = {\n mediatype: 'texts',\n collections: ['collection1', 'fav-jack-sparrow'],\n };\n\n const el = await fixture<TileHoverPane>(\n html`<tile-hover-pane .model=${model}></tile-hover-pane>`,\n );\n\n const container = el.shadowRoot?.querySelector('#container');\n const listView = container?.querySelector('tile-list');\n const headerElement = container?.querySelector('#list-line-header');\n\n expect(container).to.exist;\n expect(listView).to.exist;\n expect(headerElement).to.exist;\n expect(headerElement?.querySelector('a')?.getAttribute('href')).contains(\n '/details/collection1',\n );\n });\n\n it('should NOT render header element when fav- collection', async () => {\n const model: Partial<TileModel> = {\n mediatype: 'texts',\n collections: ['fav-jack-sparrow'],\n };\n\n const el = await fixture<TileHoverPane>(\n html`<tile-hover-pane .model=${model}></tile-hover-pane>`,\n );\n\n const container = el.shadowRoot?.querySelector('#container');\n const listView = container?.querySelector('tile-list');\n const headerElement = container?.querySelector('#list-line-header');\n\n expect(container).to.exist;\n expect(listView).to.exist;\n expect(headerElement).not.exist;\n });\n\n it('should NOT render header element when no collections', async () => {\n const model: Partial<TileModel> = {\n mediatype: 'texts',\n collections: [],\n };\n\n const el = await fixture<TileHoverPane>(\n html`<tile-hover-pane .model=${model}></tile-hover-pane>`,\n );\n\n const container = el.shadowRoot?.querySelector('#container');\n const listView = container?.querySelector('tile-list');\n const headerElement = container?.querySelector('#list-line-header');\n\n expect(container).to.exist;\n expect(listView).to.exist;\n expect(headerElement).not.exist;\n });\n});\n"]}
@@ -0,0 +1 @@
1
+ import '../../../src/tiles/list/tile-list-compact';