@internetarchive/collection-browser 1.14.1 → 1.14.2-alpha1

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 (289) hide show
  1. package/.editorconfig +29 -29
  2. package/.github/workflows/ci.yml +26 -26
  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/LICENSE +661 -661
  8. package/README.md +83 -83
  9. package/dist/index.d.ts +9 -9
  10. package/dist/index.js +9 -9
  11. package/dist/src/app-root.d.ts +64 -64
  12. package/dist/src/app-root.js +311 -311
  13. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  14. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  15. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  16. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  17. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  18. package/dist/src/assets/img/icons/chevron.js +2 -2
  19. package/dist/src/assets/img/icons/contract.d.ts +2 -2
  20. package/dist/src/assets/img/icons/contract.js +2 -2
  21. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  22. package/dist/src/assets/img/icons/empty-query.js +2 -2
  23. package/dist/src/assets/img/icons/expand.d.ts +2 -2
  24. package/dist/src/assets/img/icons/expand.js +2 -2
  25. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  26. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  27. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  28. package/dist/src/assets/img/icons/eye.js +2 -2
  29. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  30. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  31. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  32. package/dist/src/assets/img/icons/login-required.js +2 -2
  33. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  34. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  35. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  36. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  37. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  38. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  39. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  40. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  41. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  42. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  43. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  44. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  45. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  46. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  47. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  48. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  49. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -0
  50. package/dist/src/assets/img/icons/mediatype/search.js +14 -0
  51. package/dist/src/assets/img/icons/mediatype/search.js.map +1 -0
  52. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  53. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  54. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  55. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  56. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  57. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  58. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  59. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  60. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  61. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  62. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  63. package/dist/src/assets/img/icons/null-result.js +2 -2
  64. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  65. package/dist/src/assets/img/icons/restricted.js +2 -2
  66. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  67. package/dist/src/assets/img/icons/reviews.js +2 -2
  68. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  69. package/dist/src/assets/img/icons/upload.js +2 -2
  70. package/dist/src/assets/img/icons/views.d.ts +1 -1
  71. package/dist/src/assets/img/icons/views.js +2 -2
  72. package/dist/src/circular-activity-indicator.d.ts +5 -5
  73. package/dist/src/circular-activity-indicator.js +17 -17
  74. package/dist/src/collection-browser.d.ts +524 -522
  75. package/dist/src/collection-browser.js +1859 -1834
  76. package/dist/src/collection-browser.js.map +1 -1
  77. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  78. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  79. package/dist/src/collection-facets/facets-template.d.ts +20 -20
  80. package/dist/src/collection-facets/facets-template.js +152 -152
  81. package/dist/src/collection-facets/more-facets-content.d.ts +77 -77
  82. package/dist/src/collection-facets/more-facets-content.js +359 -359
  83. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  84. package/dist/src/collection-facets/more-facets-pagination.js +196 -196
  85. package/dist/src/collection-facets/toggle-switch.d.ts +41 -41
  86. package/dist/src/collection-facets/toggle-switch.js +94 -94
  87. package/dist/src/collection-facets.d.ts +104 -104
  88. package/dist/src/collection-facets.js +506 -506
  89. package/dist/src/empty-placeholder.d.ts +23 -23
  90. package/dist/src/empty-placeholder.js +74 -74
  91. package/dist/src/expanded-date-picker.d.ts +43 -43
  92. package/dist/src/expanded-date-picker.js +109 -109
  93. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  94. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  95. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  96. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  97. package/dist/src/manage/manage-bar.d.ts +26 -26
  98. package/dist/src/manage/manage-bar.js +53 -53
  99. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  100. package/dist/src/mediatype/mediatype-config.js +91 -85
  101. package/dist/src/mediatype/mediatype-config.js.map +1 -1
  102. package/dist/src/models.d.ts +164 -164
  103. package/dist/src/models.js +269 -269
  104. package/dist/src/restoration-state-handler.d.ts +70 -70
  105. package/dist/src/restoration-state-handler.js +355 -355
  106. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  107. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  108. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
  109. package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
  110. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  111. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  112. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  113. package/dist/src/sort-filter-bar/img/list.js +2 -2
  114. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  115. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
  116. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  117. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
  118. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  119. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
  120. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  121. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  122. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  123. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  124. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +208 -208
  125. package/dist/src/sort-filter-bar/sort-filter-bar.js +637 -637
  126. package/dist/src/styles/item-image-styles.d.ts +8 -8
  127. package/dist/src/styles/item-image-styles.js +13 -9
  128. package/dist/src/styles/item-image-styles.js.map +1 -1
  129. package/dist/src/styles/sr-only.d.ts +1 -1
  130. package/dist/src/styles/sr-only.js +2 -2
  131. package/dist/src/tiles/base-tile-component.d.ts +18 -18
  132. package/dist/src/tiles/base-tile-component.js +59 -59
  133. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  134. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  135. package/dist/src/tiles/grid/account-tile.d.ts +18 -18
  136. package/dist/src/tiles/grid/account-tile.js +72 -72
  137. package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
  138. package/dist/src/tiles/grid/collection-tile.js +80 -80
  139. package/dist/src/tiles/grid/item-tile.d.ts +27 -27
  140. package/dist/src/tiles/grid/item-tile.js +134 -134
  141. package/dist/src/tiles/grid/search-tile.d.ts +10 -0
  142. package/dist/src/tiles/grid/search-tile.js +92 -0
  143. package/dist/src/tiles/grid/search-tile.js.map +1 -0
  144. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  145. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
  146. package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
  147. package/dist/src/tiles/grid/tile-stats.js +48 -48
  148. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  149. package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
  150. package/dist/src/tiles/hover/tile-hover-pane.d.ts +15 -15
  151. package/dist/src/tiles/hover/tile-hover-pane.js +38 -38
  152. package/dist/src/tiles/image-block.d.ts +17 -17
  153. package/dist/src/tiles/image-block.js +75 -73
  154. package/dist/src/tiles/image-block.js.map +1 -1
  155. package/dist/src/tiles/item-image.d.ts +36 -35
  156. package/dist/src/tiles/item-image.js +148 -125
  157. package/dist/src/tiles/item-image.js.map +1 -1
  158. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
  159. package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
  160. package/dist/src/tiles/list/tile-list-compact.d.ts +15 -15
  161. package/dist/src/tiles/list/tile-list-compact.js +114 -114
  162. package/dist/src/tiles/list/tile-list.d.ts +46 -46
  163. package/dist/src/tiles/list/tile-list.js +302 -298
  164. package/dist/src/tiles/list/tile-list.js.map +1 -1
  165. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  166. package/dist/src/tiles/mediatype-icon.js +47 -47
  167. package/dist/src/tiles/overlay/icon-overlay.d.ts +10 -10
  168. package/dist/src/tiles/overlay/icon-overlay.js +40 -40
  169. package/dist/src/tiles/overlay/icon-text-overlay.d.ts +9 -9
  170. package/dist/src/tiles/overlay/icon-text-overlay.js +38 -38
  171. package/dist/src/tiles/overlay/text-overlay.d.ts +10 -10
  172. package/dist/src/tiles/overlay/text-overlay.js +42 -42
  173. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  174. package/dist/src/tiles/text-snippet-block.js +73 -73
  175. package/dist/src/tiles/tile-dispatcher.d.ts +64 -63
  176. package/dist/src/tiles/tile-dispatcher.js +249 -225
  177. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  178. package/dist/src/tiles/tile-display-value-provider.d.ts +43 -43
  179. package/dist/src/tiles/tile-display-value-provider.js +80 -80
  180. package/dist/src/utils/analytics-events.d.ts +25 -25
  181. package/dist/src/utils/analytics-events.js +27 -27
  182. package/dist/src/utils/array-equals.d.ts +4 -4
  183. package/dist/src/utils/array-equals.js +10 -10
  184. package/dist/src/utils/format-count.d.ts +7 -7
  185. package/dist/src/utils/format-count.js +76 -76
  186. package/dist/src/utils/format-date.d.ts +2 -2
  187. package/dist/src/utils/format-date.js +25 -25
  188. package/dist/src/utils/format-unit-size.d.ts +2 -2
  189. package/dist/src/utils/format-unit-size.js +33 -33
  190. package/dist/src/utils/local-date-from-utc.d.ts +9 -9
  191. package/dist/src/utils/local-date-from-utc.js +15 -15
  192. package/dist/src/utils/sha1.d.ts +2 -2
  193. package/dist/src/utils/sha1.js +8 -8
  194. package/dist/test/collection-browser.test.d.ts +1 -1
  195. package/dist/test/collection-browser.test.js +1098 -1098
  196. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  197. package/dist/test/collection-facets/facets-template.test.js +134 -134
  198. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  199. package/dist/test/collection-facets/more-facets-content.test.js +133 -133
  200. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  201. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  202. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
  203. package/dist/test/collection-facets/toggle-switch.test.js +73 -73
  204. package/dist/test/collection-facets.test.d.ts +2 -2
  205. package/dist/test/collection-facets.test.js +682 -682
  206. package/dist/test/empty-placeholder.test.d.ts +1 -1
  207. package/dist/test/empty-placeholder.test.js +63 -63
  208. package/dist/test/expanded-date-picker.test.d.ts +1 -1
  209. package/dist/test/expanded-date-picker.test.js +95 -95
  210. package/dist/test/icon-overlay.test.d.ts +1 -1
  211. package/dist/test/icon-overlay.test.js +24 -24
  212. package/dist/test/image-block.test.d.ts +1 -1
  213. package/dist/test/image-block.test.js +48 -48
  214. package/dist/test/item-image.test.d.ts +1 -1
  215. package/dist/test/item-image.test.js +86 -86
  216. package/dist/test/manage/manage-bar.test.d.ts +1 -1
  217. package/dist/test/manage/manage-bar.test.js +72 -72
  218. package/dist/test/mediatype-config.test.d.ts +1 -1
  219. package/dist/test/mediatype-config.test.js +16 -16
  220. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  221. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  222. package/dist/test/mocks/mock-collection-name-cache.d.ts +9 -9
  223. package/dist/test/mocks/mock-collection-name-cache.js +17 -17
  224. package/dist/test/mocks/mock-search-responses.d.ts +21 -21
  225. package/dist/test/mocks/mock-search-responses.js +709 -709
  226. package/dist/test/mocks/mock-search-service.d.ts +15 -15
  227. package/dist/test/mocks/mock-search-service.js +50 -50
  228. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  229. package/dist/test/restoration-state-handler.test.js +270 -270
  230. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  231. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  232. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  233. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  234. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  235. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +378 -378
  236. package/dist/test/text-overlay.test.d.ts +1 -1
  237. package/dist/test/text-overlay.test.js +48 -48
  238. package/dist/test/text-snippet-block.test.d.ts +1 -1
  239. package/dist/test/text-snippet-block.test.js +57 -57
  240. package/dist/test/tile-stats.test.d.ts +1 -1
  241. package/dist/test/tile-stats.test.js +33 -33
  242. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  243. package/dist/test/tiles/grid/account-tile.test.js +76 -76
  244. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  245. package/dist/test/tiles/grid/collection-tile.test.js +73 -73
  246. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  247. package/dist/test/tiles/grid/item-tile.test.js +254 -254
  248. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -0
  249. package/dist/test/tiles/grid/search-tile.test.js +67 -0
  250. package/dist/test/tiles/grid/search-tile.test.js.map +1 -0
  251. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  252. package/dist/test/tiles/hover/hover-pane-controller.test.js +258 -258
  253. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  254. package/dist/test/tiles/hover/tile-hover-pane.test.js +13 -13
  255. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  256. package/dist/test/tiles/list/tile-list-compact.test.js +143 -143
  257. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  258. package/dist/test/tiles/list/tile-list.test.js +242 -242
  259. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  260. package/dist/test/tiles/tile-dispatcher.test.js +94 -94
  261. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
  262. package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
  263. package/dist/test/utils/array-equals.test.d.ts +1 -1
  264. package/dist/test/utils/array-equals.test.js +26 -26
  265. package/dist/test/utils/format-count.test.d.ts +1 -1
  266. package/dist/test/utils/format-count.test.js +23 -23
  267. package/dist/test/utils/format-date.test.d.ts +1 -1
  268. package/dist/test/utils/format-date.test.js +17 -17
  269. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  270. package/dist/test/utils/format-unit-size.test.js +17 -17
  271. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
  272. package/dist/test/utils/local-date-from-utc.test.js +26 -26
  273. package/local.archive.org.cert +86 -86
  274. package/local.archive.org.key +27 -27
  275. package/package.json +4 -4
  276. package/renovate.json +6 -6
  277. package/src/assets/img/icons/mediatype/search.ts +14 -0
  278. package/src/collection-browser.ts +29 -1
  279. package/src/mediatype/mediatype-config.ts +6 -0
  280. package/src/styles/item-image-styles.ts +4 -0
  281. package/src/tiles/grid/search-tile.ts +87 -0
  282. package/src/tiles/image-block.ts +3 -1
  283. package/src/tiles/item-image.ts +31 -8
  284. package/src/tiles/list/tile-list.ts +5 -0
  285. package/src/tiles/tile-dispatcher.ts +23 -1
  286. package/test/tiles/grid/search-tile.test.ts +76 -0
  287. package/tsconfig.json +21 -21
  288. package/web-dev-server.config.mjs +30 -30
  289. package/web-test-runner.config.mjs +41 -41
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,280 +1,280 @@
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
- let HostElement = class HostElement extends LitElement {
7
- constructor() {
8
- super(...arguments);
9
- this.suppressHoverPane = false;
10
- }
11
- render() {
12
- var _a;
13
- return html ` ${(_a = this.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()} `;
14
- }
15
- firstUpdated() {
16
- this.controller = new HoverPaneController(this, this.controllerOptions);
17
- }
18
- getHoverPane() {
19
- return this.suppressHoverPane ? undefined : this.hoverPane;
20
- }
21
- getHoverPaneProps() {
22
- return {
23
- model: {
24
- checked: false,
25
- collectionFilesCount: 1,
26
- collections: ['foo', 'bar'],
27
- collectionSize: 1,
28
- commentCount: 1,
29
- contentWarning: false,
30
- creators: ['foo', 'bar'],
31
- favCount: 1,
32
- identifier: 'foo',
33
- itemCount: 1,
34
- loginRequired: false,
35
- mediatype: 'data',
36
- subjects: ['foo', 'bar'],
37
- title: 'foo',
38
- viewCount: 1,
39
- },
40
- loggedIn: false,
41
- sortParam: null,
42
- };
43
- }
44
- };
45
- __decorate([
46
- property({ type: Object })
47
- ], HostElement.prototype, "controllerOptions", void 0);
48
- __decorate([
49
- property({ type: Boolean })
50
- ], HostElement.prototype, "suppressHoverPane", void 0);
51
- __decorate([
52
- query('tile-hover-pane')
53
- ], HostElement.prototype, "hoverPane", void 0);
54
- HostElement = __decorate([
55
- customElement('host-element')
56
- ], HostElement);
57
- describe('Hover Pane Controller', () => {
58
- let oldMatchMedia;
59
- let oldOnTouchStart;
60
- before(() => {
61
- oldMatchMedia = window.matchMedia;
62
- oldOnTouchStart = window.ontouchstart;
63
- window.matchMedia = () => ({ matches: true });
64
- window.ontouchstart = () => { };
65
- });
66
- after(() => {
67
- window.matchMedia = oldMatchMedia;
68
- window.ontouchstart = oldOnTouchStart;
69
- });
70
- it('should initially provide empty template', async () => {
71
- var _a;
72
- const host = await fixture(html `<host-element></host-element>`);
73
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).to.equal(nothing);
74
- });
75
- it('should produce a hover pane template after mousemove, and hide it after mouseleave', async () => {
76
- var _a, _b;
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
+ let HostElement = class HostElement extends LitElement {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.suppressHoverPane = false;
10
+ }
11
+ render() {
12
+ var _a;
13
+ return html ` ${(_a = this.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()} `;
14
+ }
15
+ firstUpdated() {
16
+ this.controller = new HoverPaneController(this, this.controllerOptions);
17
+ }
18
+ getHoverPane() {
19
+ return this.suppressHoverPane ? undefined : this.hoverPane;
20
+ }
21
+ getHoverPaneProps() {
22
+ return {
23
+ model: {
24
+ checked: false,
25
+ collectionFilesCount: 1,
26
+ collections: ['foo', 'bar'],
27
+ collectionSize: 1,
28
+ commentCount: 1,
29
+ contentWarning: false,
30
+ creators: ['foo', 'bar'],
31
+ favCount: 1,
32
+ identifier: 'foo',
33
+ itemCount: 1,
34
+ loginRequired: false,
35
+ mediatype: 'data',
36
+ subjects: ['foo', 'bar'],
37
+ title: 'foo',
38
+ viewCount: 1,
39
+ },
40
+ loggedIn: false,
41
+ sortParam: null,
42
+ };
43
+ }
44
+ };
45
+ __decorate([
46
+ property({ type: Object })
47
+ ], HostElement.prototype, "controllerOptions", void 0);
48
+ __decorate([
49
+ property({ type: Boolean })
50
+ ], HostElement.prototype, "suppressHoverPane", void 0);
51
+ __decorate([
52
+ query('tile-hover-pane')
53
+ ], HostElement.prototype, "hoverPane", void 0);
54
+ HostElement = __decorate([
55
+ customElement('host-element')
56
+ ], HostElement);
57
+ describe('Hover Pane Controller', () => {
58
+ let oldMatchMedia;
59
+ let oldOnTouchStart;
60
+ before(() => {
61
+ oldMatchMedia = window.matchMedia;
62
+ oldOnTouchStart = window.ontouchstart;
63
+ window.matchMedia = () => ({ matches: true });
64
+ window.ontouchstart = () => { };
65
+ });
66
+ after(() => {
67
+ window.matchMedia = oldMatchMedia;
68
+ window.ontouchstart = oldOnTouchStart;
69
+ });
70
+ it('should initially provide empty template', async () => {
71
+ var _a;
72
+ const host = await fixture(html `<host-element></host-element>`);
73
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).to.equal(nothing);
74
+ });
75
+ it('should produce a hover pane template after mousemove, and hide it after mouseleave', async () => {
76
+ var _a, _b;
77
77
  const host = await fixture(html `<host-element
78
78
  .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}
79
- ></host-element>`);
80
- host.dispatchEvent(new MouseEvent('mousemove'));
81
- // Need to wait a tick for the event handlers to run
82
- await new Promise(resolve => {
83
- setTimeout(resolve, 0);
84
- });
85
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing); // Is a TemplateResult
86
- host.dispatchEvent(new MouseEvent('mouseleave'));
87
- // Need to wait for the fade out transition
88
- await new Promise(resolve => {
89
- setTimeout(resolve, 150);
90
- });
91
- expect((_b = host.controller) === null || _b === void 0 ? void 0 : _b.getTemplate()).to.equal(nothing);
92
- });
93
- it('should produce a hover pane template after mouseenter, even without mousemove', async () => {
94
- var _a;
79
+ ></host-element>`);
80
+ host.dispatchEvent(new MouseEvent('mousemove'));
81
+ // Need to wait a tick for the event handlers to run
82
+ await new Promise(resolve => {
83
+ setTimeout(resolve, 0);
84
+ });
85
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing); // Is a TemplateResult
86
+ host.dispatchEvent(new MouseEvent('mouseleave'));
87
+ // Need to wait for the fade out transition
88
+ await new Promise(resolve => {
89
+ setTimeout(resolve, 150);
90
+ });
91
+ expect((_b = host.controller) === null || _b === void 0 ? void 0 : _b.getTemplate()).to.equal(nothing);
92
+ });
93
+ it('should produce a hover pane template after mouseenter, even without mousemove', async () => {
94
+ var _a;
95
95
  const host = await fixture(html `<host-element
96
96
  .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}
97
- ></host-element>`);
98
- host.dispatchEvent(new MouseEvent('mouseenter'));
99
- // Need to wait a tick for the event handlers to run
100
- await new Promise(resolve => {
101
- setTimeout(resolve, 0);
102
- });
103
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing); // Is a TemplateResult
104
- });
105
- it('should immediately fade back in if mouse enters while fading out', async () => {
106
- var _a;
97
+ ></host-element>`);
98
+ host.dispatchEvent(new MouseEvent('mouseenter'));
99
+ // Need to wait a tick for the event handlers to run
100
+ await new Promise(resolve => {
101
+ setTimeout(resolve, 0);
102
+ });
103
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing); // Is a TemplateResult
104
+ });
105
+ it('should immediately fade back in if mouse enters while fading out', async () => {
106
+ var _a;
107
107
  const host = await fixture(html `<host-element
108
108
  .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}
109
- ></host-element>`);
110
- // Enter the host element and wait for the show handlers to run
111
- host.dispatchEvent(new MouseEvent('mousemove'));
112
- await new Promise(resolve => {
113
- setTimeout(resolve, 0);
114
- });
115
- // Leave the host element so it begins fading out, but not all the way
116
- host.dispatchEvent(new MouseEvent('mouseleave'));
117
- await new Promise(resolve => {
118
- setTimeout(resolve, 20);
119
- });
120
- // Re-enter the host element and wait long enough that it would disappear
121
- // if the hide were not cancelled
122
- host.dispatchEvent(new MouseEvent('mousemove'));
123
- await new Promise(resolve => {
124
- setTimeout(resolve, 150);
125
- });
126
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing);
127
- });
128
- it('should flip hover pane if it would overflow the viewport', async () => {
129
- var _a, _b, _c, _d, _e;
109
+ ></host-element>`);
110
+ // Enter the host element and wait for the show handlers to run
111
+ host.dispatchEvent(new MouseEvent('mousemove'));
112
+ await new Promise(resolve => {
113
+ setTimeout(resolve, 0);
114
+ });
115
+ // Leave the host element so it begins fading out, but not all the way
116
+ host.dispatchEvent(new MouseEvent('mouseleave'));
117
+ await new Promise(resolve => {
118
+ setTimeout(resolve, 20);
119
+ });
120
+ // Re-enter the host element and wait long enough that it would disappear
121
+ // if the hide were not cancelled
122
+ host.dispatchEvent(new MouseEvent('mousemove'));
123
+ await new Promise(resolve => {
124
+ setTimeout(resolve, 150);
125
+ });
126
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing);
127
+ });
128
+ it('should flip hover pane if it would overflow the viewport', async () => {
129
+ var _a, _b, _c, _d, _e;
130
130
  const host = await fixture(html `<host-element
131
131
  .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}
132
- ></host-element>`);
133
- host.dispatchEvent(new MouseEvent('mousemove', { clientX: 800, clientY: 600 }));
134
- // Need to wait a tick for the event handlers to run
135
- await new Promise(resolve => {
136
- setTimeout(resolve, 0);
137
- });
138
- await host.updateComplete;
139
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing);
140
- 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);
141
- 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);
142
- });
143
- it('should gracefully handle undefined hover pane from host element', async () => {
144
- var _a, _b;
132
+ ></host-element>`);
133
+ host.dispatchEvent(new MouseEvent('mousemove', { clientX: 800, clientY: 600 }));
134
+ // Need to wait a tick for the event handlers to run
135
+ await new Promise(resolve => {
136
+ setTimeout(resolve, 0);
137
+ });
138
+ await host.updateComplete;
139
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing);
140
+ 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);
141
+ 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);
142
+ });
143
+ it('should gracefully handle undefined hover pane from host element', async () => {
144
+ var _a, _b;
145
145
  const host = await fixture(html `<host-element
146
146
  .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}
147
147
  ?suppressHoverPane=${true}
148
- ></host-element>`);
149
- host.dispatchEvent(new MouseEvent('mousemove'));
150
- // Need to wait a tick for the event handlers to run
151
- await new Promise(resolve => {
152
- setTimeout(resolve, 0);
153
- });
154
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing);
155
- host.dispatchEvent(new MouseEvent('mouseleave'));
156
- await new Promise(resolve => {
157
- setTimeout(resolve, 20);
158
- });
159
- host.dispatchEvent(new MouseEvent('mousemove'));
160
- await new Promise(resolve => {
161
- setTimeout(resolve, 0);
162
- });
163
- host.dispatchEvent(new MouseEvent('mouseleave'));
164
- // Need to wait for the fade out transition
165
- await new Promise(resolve => {
166
- setTimeout(resolve, 150);
167
- });
168
- expect((_b = host.controller) === null || _b === void 0 ? void 0 : _b.getTemplate()).to.equal(nothing);
169
- });
170
- describe('Touch & long-press', () => {
171
- const getTouchStartEvent = (host) => new TouchEvent('touchstart', {
172
- touches: [new Touch({ identifier: 0, target: host })],
173
- });
174
- it('should produce a hover pane after long press', async () => {
175
- var _a;
148
+ ></host-element>`);
149
+ host.dispatchEvent(new MouseEvent('mousemove'));
150
+ // Need to wait a tick for the event handlers to run
151
+ await new Promise(resolve => {
152
+ setTimeout(resolve, 0);
153
+ });
154
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing);
155
+ host.dispatchEvent(new MouseEvent('mouseleave'));
156
+ await new Promise(resolve => {
157
+ setTimeout(resolve, 20);
158
+ });
159
+ host.dispatchEvent(new MouseEvent('mousemove'));
160
+ await new Promise(resolve => {
161
+ setTimeout(resolve, 0);
162
+ });
163
+ host.dispatchEvent(new MouseEvent('mouseleave'));
164
+ // Need to wait for the fade out transition
165
+ await new Promise(resolve => {
166
+ setTimeout(resolve, 150);
167
+ });
168
+ expect((_b = host.controller) === null || _b === void 0 ? void 0 : _b.getTemplate()).to.equal(nothing);
169
+ });
170
+ describe('Touch & long-press', () => {
171
+ const getTouchStartEvent = (host) => new TouchEvent('touchstart', {
172
+ touches: [new Touch({ identifier: 0, target: host })],
173
+ });
174
+ it('should produce a hover pane after long press', async () => {
175
+ var _a;
176
176
  const host = await fixture(html `<host-element
177
- .controllerOptions=${{
178
- showDelay: 0,
179
- longPressDelay: 0,
180
- enableLongPress: true,
177
+ .controllerOptions=${{
178
+ showDelay: 0,
179
+ longPressDelay: 0,
180
+ enableLongPress: true,
181
181
  }}
182
- ></host-element>`);
183
- // Touch the host element and wait for the long press handlers to run
184
- host.dispatchEvent(getTouchStartEvent(host));
185
- await new Promise(resolve => {
186
- setTimeout(resolve, 0);
187
- });
188
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing); // Is a TemplateResult
189
- });
190
- it('should cancel a long press by moving', async () => {
191
- var _a;
182
+ ></host-element>`);
183
+ // Touch the host element and wait for the long press handlers to run
184
+ host.dispatchEvent(getTouchStartEvent(host));
185
+ await new Promise(resolve => {
186
+ setTimeout(resolve, 0);
187
+ });
188
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing); // Is a TemplateResult
189
+ });
190
+ it('should cancel a long press by moving', async () => {
191
+ var _a;
192
192
  const host = await fixture(html `<host-element
193
- .controllerOptions=${{
194
- showDelay: 0,
195
- longPressDelay: 100,
196
- enableLongPress: true,
193
+ .controllerOptions=${{
194
+ showDelay: 0,
195
+ longPressDelay: 100,
196
+ enableLongPress: true,
197
197
  }}
198
- ></host-element>`);
199
- // Touch the host element
200
- host.dispatchEvent(getTouchStartEvent(host));
201
- await new Promise(resolve => {
202
- setTimeout(resolve, 0);
203
- });
204
- // Move the touch point, cancelling the long press
205
- host.dispatchEvent(new TouchEvent('touchmove'));
206
- await new Promise(resolve => {
207
- setTimeout(resolve, 150);
208
- });
209
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).to.equal(nothing);
210
- });
211
- it('should cancel a long press by ending touch', async () => {
212
- var _a;
198
+ ></host-element>`);
199
+ // Touch the host element
200
+ host.dispatchEvent(getTouchStartEvent(host));
201
+ await new Promise(resolve => {
202
+ setTimeout(resolve, 0);
203
+ });
204
+ // Move the touch point, cancelling the long press
205
+ host.dispatchEvent(new TouchEvent('touchmove'));
206
+ await new Promise(resolve => {
207
+ setTimeout(resolve, 150);
208
+ });
209
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).to.equal(nothing);
210
+ });
211
+ it('should cancel a long press by ending touch', async () => {
212
+ var _a;
213
213
  const host = await fixture(html `<host-element
214
- .controllerOptions=${{
215
- showDelay: 0,
216
- longPressDelay: 100,
217
- enableLongPress: true,
214
+ .controllerOptions=${{
215
+ showDelay: 0,
216
+ longPressDelay: 100,
217
+ enableLongPress: true,
218
218
  }}
219
- ></host-element>`);
220
- // Touch the host element
221
- host.dispatchEvent(getTouchStartEvent(host));
222
- await new Promise(resolve => {
223
- setTimeout(resolve, 0);
224
- });
225
- // Lift the touch point, cancelling the long press
226
- host.dispatchEvent(new TouchEvent('touchend'));
227
- await new Promise(resolve => {
228
- setTimeout(resolve, 150);
229
- });
230
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).to.equal(nothing);
231
- });
232
- it('should cancel a long press by cancelling touch (e.g., too many touch points)', async () => {
233
- var _a;
219
+ ></host-element>`);
220
+ // Touch the host element
221
+ host.dispatchEvent(getTouchStartEvent(host));
222
+ await new Promise(resolve => {
223
+ setTimeout(resolve, 0);
224
+ });
225
+ // Lift the touch point, cancelling the long press
226
+ host.dispatchEvent(new TouchEvent('touchend'));
227
+ await new Promise(resolve => {
228
+ setTimeout(resolve, 150);
229
+ });
230
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).to.equal(nothing);
231
+ });
232
+ it('should cancel a long press by cancelling touch (e.g., too many touch points)', async () => {
233
+ var _a;
234
234
  const host = await fixture(html `<host-element
235
- .controllerOptions=${{
236
- showDelay: 0,
237
- longPressDelay: 100,
238
- enableLongPress: true,
235
+ .controllerOptions=${{
236
+ showDelay: 0,
237
+ longPressDelay: 100,
238
+ enableLongPress: true,
239
239
  }}
240
- ></host-element>`);
241
- // Touch the host element
242
- host.dispatchEvent(getTouchStartEvent(host));
243
- await new Promise(resolve => {
244
- setTimeout(resolve, 0);
245
- });
246
- // Cancel the touch point, also cancelling the long press
247
- host.dispatchEvent(new TouchEvent('touchcancel'));
248
- await new Promise(resolve => {
249
- setTimeout(resolve, 150);
250
- });
251
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).to.equal(nothing);
252
- });
253
- it('should close the hover pane on mobile when touching the backdrop', async () => {
254
- var _a, _b, _c, _d;
240
+ ></host-element>`);
241
+ // Touch the host element
242
+ host.dispatchEvent(getTouchStartEvent(host));
243
+ await new Promise(resolve => {
244
+ setTimeout(resolve, 0);
245
+ });
246
+ // Cancel the touch point, also cancelling the long press
247
+ host.dispatchEvent(new TouchEvent('touchcancel'));
248
+ await new Promise(resolve => {
249
+ setTimeout(resolve, 150);
250
+ });
251
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).to.equal(nothing);
252
+ });
253
+ it('should close the hover pane on mobile when touching the backdrop', async () => {
254
+ var _a, _b, _c, _d;
255
255
  const host = await fixture(html `<host-element
256
- .controllerOptions=${{
257
- showDelay: 0,
258
- hideDelay: 0,
259
- longPressDelay: 0,
260
- enableLongPress: true,
261
- mobileBreakpoint: 9999, // Ensure we get the mobile view
256
+ .controllerOptions=${{
257
+ showDelay: 0,
258
+ hideDelay: 0,
259
+ longPressDelay: 0,
260
+ enableLongPress: true,
261
+ mobileBreakpoint: 9999, // Ensure we get the mobile view
262
262
  }}
263
- ></host-element>`);
264
- // Touch the host element
265
- host.dispatchEvent(getTouchStartEvent(host));
266
- await new Promise(resolve => {
267
- setTimeout(resolve, 0);
268
- });
269
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing);
270
- await host.updateComplete;
271
- // Touch the backdrop
272
- (_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'));
273
- await new Promise(resolve => {
274
- setTimeout(resolve, 150);
275
- });
276
- expect((_d = host.controller) === null || _d === void 0 ? void 0 : _d.getTemplate()).to.equal(nothing);
277
- });
278
- });
279
- });
263
+ ></host-element>`);
264
+ // Touch the host element
265
+ host.dispatchEvent(getTouchStartEvent(host));
266
+ await new Promise(resolve => {
267
+ setTimeout(resolve, 0);
268
+ });
269
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing);
270
+ await host.updateComplete;
271
+ // Touch the backdrop
272
+ (_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'));
273
+ await new Promise(resolve => {
274
+ setTimeout(resolve, 150);
275
+ });
276
+ expect((_d = host.controller) === null || _d === void 0 ? void 0 : _d.getTemplate()).to.equal(nothing);
277
+ });
278
+ });
279
+ });
280
280
  //# sourceMappingURL=hover-pane-controller.test.js.map
@@ -1 +1 @@
1
- import '../../../src/tiles/hover/tile-hover-pane';
1
+ import '../../../src/tiles/hover/tile-hover-pane';
@@ -1,14 +1,14 @@
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
- });
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
+ });
14
14
  //# sourceMappingURL=tile-hover-pane.test.js.map
@@ -1 +1 @@
1
- import '../../../src/tiles/list/tile-list-compact';
1
+ import '../../../src/tiles/list/tile-list-compact';