@internetarchive/collection-browser 1.14.10-alpha.2 → 1.14.10-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 (293) hide show
  1. package/.editorconfig +29 -29
  2. package/.husky/pre-commit +4 -4
  3. package/LICENSE +661 -661
  4. package/README.md +83 -83
  5. package/dist/index.d.ts +9 -9
  6. package/dist/index.js +9 -9
  7. package/dist/src/app-root.d.ts +79 -72
  8. package/dist/src/app-root.js +564 -432
  9. package/dist/src/app-root.js.map +1 -1
  10. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  11. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  12. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  13. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  14. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  15. package/dist/src/assets/img/icons/chevron.js +2 -2
  16. package/dist/src/assets/img/icons/contract.d.ts +2 -2
  17. package/dist/src/assets/img/icons/contract.js +2 -2
  18. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  19. package/dist/src/assets/img/icons/empty-query.js +2 -2
  20. package/dist/src/assets/img/icons/expand.d.ts +2 -2
  21. package/dist/src/assets/img/icons/expand.js +2 -2
  22. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  23. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  24. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  25. package/dist/src/assets/img/icons/eye.js +2 -2
  26. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  27. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  28. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  29. package/dist/src/assets/img/icons/login-required.js +2 -2
  30. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  31. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  32. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  33. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  34. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  35. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  36. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  37. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  38. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  39. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  40. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  41. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  42. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  43. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  44. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  45. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  46. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
  47. package/dist/src/assets/img/icons/mediatype/search.js +2 -2
  48. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  49. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  50. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  51. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  52. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  53. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  54. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  55. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  56. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  57. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  58. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  59. package/dist/src/assets/img/icons/null-result.js +2 -2
  60. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  61. package/dist/src/assets/img/icons/restricted.js +2 -2
  62. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  63. package/dist/src/assets/img/icons/reviews.js +2 -2
  64. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  65. package/dist/src/assets/img/icons/upload.js +2 -2
  66. package/dist/src/assets/img/icons/views.d.ts +1 -1
  67. package/dist/src/assets/img/icons/views.js +2 -2
  68. package/dist/src/circular-activity-indicator.d.ts +5 -5
  69. package/dist/src/circular-activity-indicator.js +17 -17
  70. package/dist/src/collection-browser.d.ts +533 -533
  71. package/dist/src/collection-browser.js +1897 -1893
  72. package/dist/src/collection-browser.js.map +1 -1
  73. package/dist/src/collection-facets/facet-row.d.ts +30 -0
  74. package/dist/src/collection-facets/facet-row.js +245 -0
  75. package/dist/src/collection-facets/facet-row.js.map +1 -0
  76. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  77. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  78. package/dist/src/collection-facets/facets-template.d.ts +17 -20
  79. package/dist/src/collection-facets/facets-template.js +122 -264
  80. package/dist/src/collection-facets/facets-template.js.map +1 -1
  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 -91
  101. package/dist/src/models.d.ts +180 -164
  102. package/dist/src/models.js +269 -269
  103. package/dist/src/models.js.map +1 -1
  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 +638 -637
  126. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  127. package/dist/src/styles/item-image-styles.d.ts +8 -8
  128. package/dist/src/styles/item-image-styles.js +9 -9
  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 +19 -19
  132. package/dist/src/tiles/base-tile-component.js +63 -63
  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 -10
  142. package/dist/src/tiles/grid/search-tile.js +51 -51
  143. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  144. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
  145. package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
  146. package/dist/src/tiles/grid/tile-stats.js +48 -48
  147. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  148. package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
  149. package/dist/src/tiles/hover/tile-hover-pane.d.ts +15 -15
  150. package/dist/src/tiles/hover/tile-hover-pane.js +38 -38
  151. package/dist/src/tiles/image-block.d.ts +17 -17
  152. package/dist/src/tiles/image-block.js +73 -73
  153. package/dist/src/tiles/item-image.d.ts +36 -36
  154. package/dist/src/tiles/item-image.js +127 -127
  155. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
  156. package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
  157. package/dist/src/tiles/list/tile-list-compact.d.ts +15 -15
  158. package/dist/src/tiles/list/tile-list-compact.js +114 -114
  159. package/dist/src/tiles/list/tile-list.d.ts +46 -46
  160. package/dist/src/tiles/list/tile-list.js +302 -302
  161. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  162. package/dist/src/tiles/mediatype-icon.js +47 -47
  163. package/dist/src/tiles/overlay/icon-overlay.d.ts +10 -10
  164. package/dist/src/tiles/overlay/icon-overlay.js +40 -40
  165. package/dist/src/tiles/overlay/icon-text-overlay.d.ts +9 -9
  166. package/dist/src/tiles/overlay/icon-text-overlay.js +38 -38
  167. package/dist/src/tiles/overlay/text-overlay.d.ts +10 -10
  168. package/dist/src/tiles/overlay/text-overlay.js +42 -42
  169. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  170. package/dist/src/tiles/text-snippet-block.js +73 -73
  171. package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
  172. package/dist/src/tiles/tile-dispatcher.js +231 -231
  173. package/dist/src/tiles/tile-display-value-provider.d.ts +43 -43
  174. package/dist/src/tiles/tile-display-value-provider.js +80 -80
  175. package/dist/src/utils/analytics-events.d.ts +25 -25
  176. package/dist/src/utils/analytics-events.js +27 -27
  177. package/dist/src/utils/array-equals.d.ts +4 -4
  178. package/dist/src/utils/array-equals.js +10 -10
  179. package/dist/src/utils/format-count.d.ts +7 -7
  180. package/dist/src/utils/format-count.js +76 -76
  181. package/dist/src/utils/format-date.d.ts +2 -2
  182. package/dist/src/utils/format-date.js +25 -25
  183. package/dist/src/utils/format-unit-size.d.ts +2 -2
  184. package/dist/src/utils/format-unit-size.js +33 -33
  185. package/dist/src/utils/local-date-from-utc.d.ts +9 -9
  186. package/dist/src/utils/local-date-from-utc.js +15 -15
  187. package/dist/src/utils/sha1.d.ts +2 -2
  188. package/dist/src/utils/sha1.js +8 -8
  189. package/dist/test/collection-browser.test.d.ts +1 -1
  190. package/dist/test/collection-browser.test.js +1130 -1098
  191. package/dist/test/collection-browser.test.js.map +1 -1
  192. package/dist/test/collection-facets/facet-row.test.d.ts +1 -0
  193. package/dist/test/collection-facets/facet-row.test.js +235 -0
  194. package/dist/test/collection-facets/facet-row.test.js.map +1 -0
  195. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  196. package/dist/test/collection-facets/facets-template.test.js +110 -141
  197. package/dist/test/collection-facets/facets-template.test.js.map +1 -1
  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 +651 -682
  206. package/dist/test/collection-facets.test.js.map +1 -1
  207. package/dist/test/empty-placeholder.test.d.ts +1 -1
  208. package/dist/test/empty-placeholder.test.js +63 -63
  209. package/dist/test/expanded-date-picker.test.d.ts +1 -1
  210. package/dist/test/expanded-date-picker.test.js +95 -95
  211. package/dist/test/icon-overlay.test.d.ts +1 -1
  212. package/dist/test/icon-overlay.test.js +24 -24
  213. package/dist/test/image-block.test.d.ts +1 -1
  214. package/dist/test/image-block.test.js +48 -48
  215. package/dist/test/item-image.test.d.ts +1 -1
  216. package/dist/test/item-image.test.js +86 -86
  217. package/dist/test/manage/manage-bar.test.d.ts +1 -1
  218. package/dist/test/manage/manage-bar.test.js +72 -72
  219. package/dist/test/mediatype-config.test.d.ts +1 -1
  220. package/dist/test/mediatype-config.test.js +16 -16
  221. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  222. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  223. package/dist/test/mocks/mock-collection-name-cache.d.ts +9 -9
  224. package/dist/test/mocks/mock-collection-name-cache.js +17 -17
  225. package/dist/test/mocks/mock-search-responses.d.ts +21 -21
  226. package/dist/test/mocks/mock-search-responses.js +709 -709
  227. package/dist/test/mocks/mock-search-service.d.ts +15 -15
  228. package/dist/test/mocks/mock-search-service.js +50 -50
  229. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  230. package/dist/test/restoration-state-handler.test.js +270 -270
  231. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  232. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  233. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  234. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  235. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  236. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +378 -378
  237. package/dist/test/text-overlay.test.d.ts +1 -1
  238. package/dist/test/text-overlay.test.js +48 -48
  239. package/dist/test/text-snippet-block.test.d.ts +1 -1
  240. package/dist/test/text-snippet-block.test.js +57 -57
  241. package/dist/test/tile-stats.test.d.ts +1 -1
  242. package/dist/test/tile-stats.test.js +33 -33
  243. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  244. package/dist/test/tiles/grid/account-tile.test.js +76 -76
  245. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  246. package/dist/test/tiles/grid/collection-tile.test.js +73 -73
  247. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  248. package/dist/test/tiles/grid/item-tile.test.js +254 -254
  249. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
  250. package/dist/test/tiles/grid/search-tile.test.js +51 -51
  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 +3 -3
  276. package/renovate.json +6 -6
  277. package/src/app-root.ts +230 -90
  278. package/src/collection-browser.ts +32 -27
  279. package/src/collection-facets/facet-row.ts +274 -0
  280. package/src/collection-facets/facets-template.ts +49 -196
  281. package/src/models.ts +18 -2
  282. package/src/sort-filter-bar/sort-filter-bar.ts +1 -0
  283. package/test/collection-browser.test.ts +36 -4
  284. package/test/collection-facets/facet-row.test.ts +328 -0
  285. package/test/collection-facets/facets-template.test.ts +72 -110
  286. package/test/collection-facets.test.ts +69 -101
  287. package/tsconfig.json +21 -21
  288. package/web-dev-server.config.mjs +30 -30
  289. package/web-test-runner.config.mjs +41 -41
  290. package/dist/src/selected-facets.d.ts +0 -67
  291. package/dist/src/selected-facets.js +0 -149
  292. package/dist/src/selected-facets.js.map +0 -1
  293. package/src/selected-facets.ts +0 -216
package/src/app-root.ts CHANGED
@@ -10,7 +10,7 @@ import {
10
10
  StringField,
11
11
  } from '@internetarchive/search-service';
12
12
  import { LocalCache } from '@internetarchive/local-cache';
13
- import { html, css, LitElement, PropertyValues } from 'lit';
13
+ import { html, css, LitElement, PropertyValues, nothing } from 'lit';
14
14
  import { customElement, property, query, state } from 'lit/decorators.js';
15
15
  import { SharedResizeObserver } from '@internetarchive/shared-resize-observer';
16
16
  import { CollectionNameCache } from '@internetarchive/collection-name-cache';
@@ -35,6 +35,8 @@ export class AppRoot extends LitElement {
35
35
  localCache: this.localCache,
36
36
  });
37
37
 
38
+ @state() private toggleSlots: boolean = false;
39
+
38
40
  @state() private currentPage?: number;
39
41
 
40
42
  @state() private searchQuery?: string;
@@ -229,91 +231,93 @@ export class AppRoot extends LitElement {
229
231
  >
230
232
  </div>
231
233
 
232
- <div id="cell-controls" class="hidden">
233
- <div id="cell-size-control">
234
- <div>
235
- <label for="cell-width-slider">Min cell width:</label>
236
- <input
237
- type="range"
238
- min="10"
239
- max="100"
240
- value="18"
241
- step="0.1"
242
- id="cell-width-slider"
243
- @input=${this.widthChanged}
244
- />
245
- <span>${this.cellWidth}rem</span>
246
- </div>
247
- <div>
248
- <label for="cell-height-slider">Cell height:</label>
249
- <input
250
- type="range"
251
- min="10"
252
- max="100"
253
- value="29"
254
- step="0.1"
255
- id="cell-height-slider"
256
- @input=${this.heightChanged}
257
- />
258
- <span>${this.cellHeight}rem</span>
259
- </div>
234
+ <fieldset class="cell-controls">
235
+ <legend>Cell Controls</legend>
236
+ <div>
237
+ <label for="cell-width-slider">Cell width:</label>
238
+ <input
239
+ type="range"
240
+ min="10"
241
+ max="100"
242
+ value="18"
243
+ step="0.1"
244
+ id="cell-width-slider"
245
+ @input=${this.widthChanged}
246
+ />
247
+ <span>${this.cellWidth}rem</span>
260
248
  </div>
261
- <div id="cell-gap-control">
262
- <div>
263
- <label for="cell-row-gap-slider">Row gap:</label>
264
- <input
265
- type="range"
266
- min="0"
267
- max="5"
268
- value="1.7"
269
- step="0.1"
270
- id="cell-row-gap-slider"
271
- @input=${this.rowGapChanged}
272
- />
273
- <span>${this.rowGap}rem</span>
274
- </div>
275
- <div>
276
- <label for="cell-col-gap-slider">Col gap:</label>
277
- <input
278
- type="range"
279
- min="0"
280
- max="5"
281
- value="1.7"
282
- step="0.1"
283
- id="cell-col-gap-slider"
284
- @input=${this.colGapChanged}
285
- />
286
- <span>${this.colGap}rem</span>
287
- </div>
249
+ <div>
250
+ <label for="cell-height-slider">Cell height:</label>
251
+ <input
252
+ type="range"
253
+ min="10"
254
+ max="100"
255
+ value="29"
256
+ step="0.1"
257
+ id="cell-height-slider"
258
+ @input=${this.heightChanged}
259
+ />
260
+ <span>${this.cellHeight}rem</span>
288
261
  </div>
289
- </div>
290
- <div id="checkbox-controls">
262
+ <div>
263
+ <label for="cell-row-gap-slider">Row gap:</label>
264
+ <input
265
+ type="range"
266
+ min="0"
267
+ max="5"
268
+ value="1.7"
269
+ step="0.1"
270
+ id="cell-row-gap-slider"
271
+ @input=${this.rowGapChanged}
272
+ />
273
+ <span>${this.rowGap}rem</span>
274
+ </div>
275
+ <div>
276
+ <label for="cell-col-gap-slider">Col gap:</label>
277
+ <input
278
+ type="range"
279
+ min="0"
280
+ max="5"
281
+ value="1.7"
282
+ step="0.1"
283
+ id="cell-col-gap-slider"
284
+ @input=${this.colGapChanged}
285
+ />
286
+ <span>${this.colGap}rem</span>
287
+ </div>
288
+ </fieldset>
289
+
290
+ <fieldset class="other-controls">
291
+ <legend>Other Controls</legend>
291
292
  <div class="checkbox-control">
292
293
  <input
293
294
  type="checkbox"
294
- id="show-outline-check"
295
- @click=${this.outlineChanged}
295
+ id="simulate-login"
296
+ @click=${this.loginChanged}
296
297
  />
297
- <label for="show-outline-check">Show cell outlines</label>
298
+ <label for="simulate-login">Simulate login</label>
298
299
  </div>
299
300
  <div class="checkbox-control">
300
301
  <input
301
302
  type="checkbox"
302
- id="show-facet-group-outline-check"
303
- @click=${this.toggleFacetGroupOutline}
303
+ id="enable-date-picker"
304
+ checked
305
+ @click=${this.datePickerChanged}
304
306
  />
305
- <label for="show-facet-group-outline-check">
306
- Show facet group outlines
307
- </label>
307
+ <label for="enable-date-picker">Enable date picker</label>
308
308
  </div>
309
309
  <div class="checkbox-control">
310
310
  <input
311
311
  type="checkbox"
312
- id="simulate-login"
313
- @click=${this.loginChanged}
312
+ id="enable-management"
313
+ @click=${this.manageModeCheckboxChanged}
314
314
  />
315
- <label for="simulate-login">Simulate login</label>
315
+ <label for="enable-management">Enable manage mode</label>
316
316
  </div>
317
+ </fieldset>
318
+
319
+ <fieldset class="cb-visual-appearance">
320
+ <legend>CB Visual Appearance</legend>
317
321
  <div class="checkbox-control">
318
322
  <input
319
323
  type="checkbox"
@@ -325,37 +329,62 @@ export class AppRoot extends LitElement {
325
329
  <div class="checkbox-control">
326
330
  <input
327
331
  type="checkbox"
328
- id="enable-date-picker"
329
- checked
330
- @click=${this.datePickerChanged}
332
+ id="show-facet-group-outline-check"
333
+ @click=${this.toggleFacetGroupOutline}
331
334
  />
332
- <label for="enable-date-picker">Enable date picker</label>
335
+ <label for="show-facet-group-outline-check">
336
+ Show facet group outlines
337
+ </label>
333
338
  </div>
334
339
  <div class="checkbox-control">
335
340
  <input
336
341
  type="checkbox"
337
- id="enable-management"
338
- @click=${this.manageModeCheckboxChanged}
342
+ id="show-outline-check"
343
+ @click=${this.outlineChanged}
339
344
  />
340
- <label for="enable-management">Enable manage mode</label>
345
+ <label for="show-outline-check">Show cell outlines</label>
341
346
  </div>
347
+ </fieldset>
348
+
349
+ <fieldset class="user-profile-controls">
350
+ <legend>User Profile Controls</legend>
342
351
  <div class="checkbox-control">
343
352
  <input
344
353
  type="checkbox"
345
- id="enable-facet-top-view"
346
- @click=${this.facetTopViewCheckboxChanged}
354
+ id="enable-facet-top-slot"
355
+ @click=${this.facetTopSlotCheckboxChanged}
347
356
  />
348
- <label for="enable-facet-top-view">Show facet top view</label>
357
+ <label for="enable-facet-top-slot">Show facet top slot</label>
349
358
  </div>
350
359
  <div class="checkbox-control">
351
360
  <input
352
361
  type="checkbox"
353
- id="enable-cb-top-view"
354
- @click=${this.cbToViewCheckboxChanged}
362
+ id="enable-cb-top-slot"
363
+ @click=${this.cbTopSlotCheckboxChanged}
355
364
  />
356
- <label for="enable-cb-top-view">Show CB top view</label>
365
+ <label for="enable-cb-top-slot">Show CB top slot</label>
357
366
  </div>
358
- </div>
367
+ <div class="checkbox-control">
368
+ <input
369
+ type="checkbox"
370
+ id="enable-sortbar-left-slot"
371
+ @click=${this.sortBarSlotCheckboxChanged}
372
+ />
373
+ <label for="enable-sortbar-left-slot"
374
+ >Show sortbar left slot</label
375
+ >
376
+ </div>
377
+ <div class="checkbox-control">
378
+ <input
379
+ type="checkbox"
380
+ id="enable-result-last-tile-slot"
381
+ @click=${this.resultLastTileSlotCheckboxChanged}
382
+ />
383
+ <label for="enable-result-last-tile-slot"
384
+ >Show result last tile slot</label
385
+ >
386
+ </div>
387
+ </fieldset>
359
388
  </div>
360
389
  <button id="toggle-dev-tools-btn" @click=${this.toggleDevTools}>
361
390
  Toggle Search Controls
@@ -377,6 +406,12 @@ export class AppRoot extends LitElement {
377
406
  @searchTypeChanged=${this.searchTypeChanged}
378
407
  @manageModeChanged=${this.manageModeChanged}
379
408
  >
409
+ ${this.toggleSlots
410
+ ? html`<div slot="sortbar-left-slot">Sort Slot</div>`
411
+ : nothing}
412
+ ${this.toggleSlots
413
+ ? html`<div slot="facet-top-slot">Facet Slot</div>`
414
+ : nothing}
380
415
  </collection-browser>
381
416
  </div>
382
417
  <modal-manager></modal-manager>
@@ -537,9 +572,9 @@ export class AppRoot extends LitElement {
537
572
  }
538
573
 
539
574
  /**
540
- * Handler for when the dev panel's "Show facet top view" checkbox is changed.
575
+ * Handler for when the dev panel's "Show facet top slot" checkbox is changed.
541
576
  */
542
- private facetTopViewCheckboxChanged(e: Event) {
577
+ private facetTopSlotCheckboxChanged(e: Event) {
543
578
  const target = e.target as HTMLInputElement;
544
579
 
545
580
  const p = document.createElement('p');
@@ -558,10 +593,34 @@ export class AppRoot extends LitElement {
558
593
  }
559
594
  }
560
595
 
596
+ private toggleSlotOptions() {
597
+ this.toggleSlots = !this.toggleSlots;
598
+ }
599
+
600
+ private resultLastTileSlotCheckboxChanged(e: Event) {
601
+ const target = e.target as HTMLInputElement;
602
+
603
+ const div = document.createElement('div');
604
+ const title = document.createElement('h3');
605
+ title.textContent = 'Upload';
606
+
607
+ div.setAttribute('slot', 'result-last-tile');
608
+ div.setAttribute('class', 'result-last-tile');
609
+ div.appendChild(title);
610
+
611
+ if (target.checked) {
612
+ this.collectionBrowser.appendChild(div);
613
+ } else {
614
+ this.collectionBrowser.removeChild(
615
+ this.collectionBrowser.lastElementChild as Element
616
+ );
617
+ }
618
+ }
619
+
561
620
  /**
562
- * Handler for when the dev panel's "Show cb top view" checkbox is changed.
621
+ * Handler for when the dev panel's "Show cb top slot" checkbox is changed.
563
622
  */
564
- private cbToViewCheckboxChanged(e: Event) {
623
+ private cbTopSlotCheckboxChanged(e: Event) {
565
624
  const target = e.target as HTMLInputElement;
566
625
 
567
626
  const p = document.createElement('p');
@@ -580,6 +639,29 @@ export class AppRoot extends LitElement {
580
639
  }
581
640
  }
582
641
 
642
+ /**
643
+ * Handler for when the dev panel's "Show facet top slot" checkbox is changed.
644
+ */
645
+ private sortBarSlotCheckboxChanged(e: Event) {
646
+ const target = e.target as HTMLInputElement;
647
+
648
+ const div = document.createElement('div');
649
+ div.style.setProperty('border', '1px solid #000');
650
+ div.textContent = 'Btn';
651
+ div.style.setProperty('height', '3rem');
652
+ div.style.setProperty('width', '3rem');
653
+ div.style.backgroundColor = '#00000';
654
+ div.setAttribute('slot', 'sortbar-left-slot');
655
+
656
+ if (target.checked) {
657
+ this.collectionBrowser.appendChild(div);
658
+ } else {
659
+ this.collectionBrowser.removeChild(
660
+ this.collectionBrowser.lastElementChild as Element
661
+ );
662
+ }
663
+ }
664
+
583
665
  private rowGapChanged(e: Event) {
584
666
  const input = e.target as HTMLInputElement;
585
667
  this.rowGap = parseFloat(input.value);
@@ -706,7 +788,6 @@ export class AppRoot extends LitElement {
706
788
  padding: 0.5rem 1rem;
707
789
  border: 1px solid black;
708
790
  font-size: 1.4rem;
709
- width: 75%;
710
791
  background: #ffffffb3;
711
792
  }
712
793
 
@@ -749,11 +830,17 @@ export class AppRoot extends LitElement {
749
830
  margin-right: 1rem;
750
831
  }
751
832
 
752
- #cell-controls {
833
+ .cell-controls {
753
834
  display: flex;
754
835
  flex-wrap: wrap;
755
836
  }
756
-
837
+ .cell-controls div {
838
+ display: flex;
839
+ align-items: center;
840
+ }
841
+ .cell-controls input[type='range'] {
842
+ width: 120px;
843
+ }
757
844
  #cell-controls label {
758
845
  display: inline-block;
759
846
  width: 10rem;
@@ -777,6 +864,9 @@ export class AppRoot extends LitElement {
777
864
  .checkbox-control {
778
865
  flex-basis: 50%;
779
866
  }
867
+ .checkbox-control label {
868
+ user-select: none;
869
+ }
780
870
 
781
871
  #last-event {
782
872
  background-color: aliceblue;
@@ -799,5 +889,55 @@ export class AppRoot extends LitElement {
799
889
  background-color: aliceblue;
800
890
  font-size: 1.6rem;
801
891
  }
892
+
893
+ // slots
894
+ div[slot='cb-top-slot'] {
895
+ height: 50px;
896
+ border: 1px solid red;
897
+ background: bisque;
898
+ }
899
+ div[slot='facet-top-slot'] {
900
+ border: 1px solid red;
901
+ width: 100%;
902
+ height: 150px;
903
+ background-color: darkseagreen;
904
+ }
905
+ div[slot='sort-slot-left'] {
906
+ height: 50px;
907
+ border: 1px solid red;
908
+ background: bisque;
909
+ }
910
+
911
+ /* user profile controls */
912
+ .user-profile-controls {
913
+ width: fit-content;
914
+ }
915
+
916
+ fieldset {
917
+ display: inline-block !important;
918
+ }
919
+
920
+ .result-last-tile {
921
+ border-radius: 4px;
922
+ background-color: white;
923
+ border: 3px dashed #555;
924
+ box-shadow: none;
925
+ display: grid;
926
+ align-content: center;
927
+ }
928
+ .result-last-tile:hover {
929
+ box-shadow: rgba(8, 8, 32, 0.8) 0 0 6px 2px;
930
+ transition: box-shadow 0.1s ease 0s;
931
+ cursor: pointer;
932
+ border: 3px dashed #4b64ff;
933
+ }
934
+ .result-last-tile h3 {
935
+ margin-bottom: 4rem;
936
+ margin: 0px auto;
937
+ font-size: 2.8rem;
938
+ color: rgb(44, 44, 44);
939
+ font-weight: 200;
940
+ text-align: center;
941
+ }
802
942
  `;
803
943
  }
@@ -131,7 +131,7 @@ export class CollectionBrowser
131
131
 
132
132
  @property({ type: Boolean }) suppressResultCount = false;
133
133
 
134
- @property({ type: Boolean }) suppressResultTiles = false;
134
+ @property({ type: Boolean }) clearResultsOnEmptyQuery = false;
135
135
 
136
136
  @property({ type: String }) collectionPagePath: string = '/details/';
137
137
 
@@ -586,7 +586,10 @@ export class CollectionBrowser
586
586
  .placeholderCellTemplate=${this.placeholderCellTemplate}
587
587
  @scrollThresholdReached=${this.scrollThresholdReached}
588
588
  @visibleCellsChanged=${this.visibleCellsChanged}
589
- ></infinite-scroller>`;
589
+ >${this.displayMode === 'grid'
590
+ ? html`<slot name="result-last-tile" slot="result-last-tile"></slot>`
591
+ : nothing}
592
+ </infinite-scroller>`;
590
593
  }
591
594
 
592
595
  private get infiniteScrollerClasses() {
@@ -615,6 +618,9 @@ export class CollectionBrowser
615
618
  @titleLetterChanged=${this.titleLetterSelected}
616
619
  @creatorLetterChanged=${this.creatorLetterSelected}
617
620
  >
621
+ <div slot="sortbar-left-slot">
622
+ <slot name="sortbar-left-slot"></slot>
623
+ </div>
618
624
  </sort-filter-bar>
619
625
  `;
620
626
  }
@@ -1178,10 +1184,6 @@ export class CollectionBrowser
1178
1184
  this.handleQueryChange();
1179
1185
  }
1180
1186
 
1181
- if (changed.has('suppressResultTiles') && this.suppressResultTiles) {
1182
- this.pagesToRender = 0;
1183
- }
1184
-
1185
1187
  if (changed.has('searchResultsLoading')) {
1186
1188
  this.emitSearchResultsLoadingChanged();
1187
1189
  }
@@ -1420,7 +1422,11 @@ export class CollectionBrowser
1420
1422
  return;
1421
1423
 
1422
1424
  // If the new state prevents us from updating the search results, don't reset
1423
- if (!this.canPerformSearch) return;
1425
+ if (
1426
+ !this.canPerformSearch &&
1427
+ !(this.clearResultsOnEmptyQuery && this.baseQuery === '')
1428
+ )
1429
+ return;
1424
1430
 
1425
1431
  this.previousQueryKey = this.pageFetchQueryKey;
1426
1432
 
@@ -1432,9 +1438,9 @@ export class CollectionBrowser
1432
1438
  this.pageFetchesInProgress = {};
1433
1439
  this.endOfDataReached = false;
1434
1440
  this.pagesToRender =
1435
- this.initialPageNumber === 1
1436
- ? 2 // First two pages are batched into one request when starting from page 1
1437
- : this.initialPageNumber;
1441
+ this.initialPageNumber === 1
1442
+ ? 2 // First two pages are batched into one request when starting from page 1
1443
+ : this.initialPageNumber;
1438
1444
  this.queryErrorMessage = undefined;
1439
1445
 
1440
1446
  // Reset the infinite scroller's item count, so that it
@@ -1751,27 +1757,26 @@ export class CollectionBrowser
1751
1757
  }
1752
1758
 
1753
1759
  facetClickHandler({
1754
- detail: { key, state: facetState, negative },
1760
+ detail: { facetType, bucket, negative },
1755
1761
  }: CustomEvent<FacetEventDetails>): void {
1762
+ let action: analyticsActions;
1756
1763
  if (negative) {
1757
- this.analyticsHandler?.sendEvent({
1758
- category: this.searchContext,
1759
- action:
1760
- facetState !== 'none'
1761
- ? analyticsActions.facetNegativeSelected
1762
- : analyticsActions.facetNegativeDeselected,
1763
- label: key,
1764
- });
1764
+ action =
1765
+ bucket.state !== 'none'
1766
+ ? analyticsActions.facetNegativeSelected
1767
+ : analyticsActions.facetNegativeDeselected;
1765
1768
  } else {
1766
- this.analyticsHandler?.sendEvent({
1767
- category: this.searchContext,
1768
- action:
1769
- facetState !== 'none'
1770
- ? analyticsActions.facetSelected
1771
- : analyticsActions.facetDeselected,
1772
- label: key,
1773
- });
1769
+ action =
1770
+ bucket.state !== 'none'
1771
+ ? analyticsActions.facetSelected
1772
+ : analyticsActions.facetDeselected;
1774
1773
  }
1774
+
1775
+ this.analyticsHandler?.sendEvent({
1776
+ category: this.searchContext,
1777
+ action,
1778
+ label: facetType,
1779
+ });
1775
1780
  }
1776
1781
 
1777
1782
  private async fetchFacets() {