@internetarchive/collection-browser 0.4.3-alpha.8 → 0.4.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 (250) 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 +50 -48
  12. package/dist/src/app-root.js +449 -412
  13. package/dist/src/app-root.js.map +1 -1
  14. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  15. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  16. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  17. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  18. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  19. package/dist/src/assets/img/icons/chevron.js +2 -2
  20. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  21. package/dist/src/assets/img/icons/empty-query.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/software.d.ts +1 -1
  47. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  48. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  49. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  50. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  51. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  52. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  53. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  54. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  55. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  56. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  57. package/dist/src/assets/img/icons/null-result.js +2 -2
  58. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  59. package/dist/src/assets/img/icons/restricted.js +2 -2
  60. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  61. package/dist/src/assets/img/icons/reviews.js +2 -2
  62. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  63. package/dist/src/assets/img/icons/upload.js +2 -2
  64. package/dist/src/assets/img/icons/views.d.ts +1 -1
  65. package/dist/src/assets/img/icons/views.js +2 -2
  66. package/dist/src/circular-activity-indicator.d.ts +5 -5
  67. package/dist/src/circular-activity-indicator.js +17 -17
  68. package/dist/src/collection-browser.d.ts +315 -315
  69. package/dist/src/collection-browser.js +1272 -1270
  70. package/dist/src/collection-browser.js.map +1 -1
  71. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  72. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  73. package/dist/src/collection-facets/facets-template.d.ts +16 -16
  74. package/dist/src/collection-facets/facets-template.js +125 -125
  75. package/dist/src/collection-facets/more-facets-content.d.ts +77 -77
  76. package/dist/src/collection-facets/more-facets-content.js +357 -357
  77. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  78. package/dist/src/collection-facets/more-facets-pagination.js +192 -192
  79. package/dist/src/collection-facets.d.ts +78 -78
  80. package/dist/src/collection-facets.js +391 -391
  81. package/dist/src/empty-placeholder.d.ts +11 -11
  82. package/dist/src/empty-placeholder.js +42 -42
  83. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  84. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  85. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  86. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  87. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  88. package/dist/src/mediatype/mediatype-config.js +85 -85
  89. package/dist/src/models.d.ts +114 -112
  90. package/dist/src/models.js +125 -125
  91. package/dist/src/models.js.map +1 -1
  92. package/dist/src/restoration-state-handler.d.ts +45 -45
  93. package/dist/src/restoration-state-handler.js +230 -230
  94. package/dist/src/sort-filter-bar/alpha-bar.d.ts +12 -12
  95. package/dist/src/sort-filter-bar/alpha-bar.js +52 -52
  96. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  97. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  98. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  99. package/dist/src/sort-filter-bar/img/list.js +2 -2
  100. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  101. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  102. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  103. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  104. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +108 -108
  105. package/dist/src/sort-filter-bar/sort-filter-bar.js +428 -428
  106. package/dist/src/styles/item-image-styles.d.ts +8 -8
  107. package/dist/src/styles/item-image-styles.js +22 -12
  108. package/dist/src/styles/item-image-styles.js.map +1 -1
  109. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  110. package/dist/src/tiles/collection-browser-loading-tile.js +16 -16
  111. package/dist/src/tiles/collection-browser-loading-tile.js.map +1 -1
  112. package/dist/src/tiles/grid/account-tile.d.ts +17 -17
  113. package/dist/src/tiles/grid/account-tile.js +48 -47
  114. package/dist/src/tiles/grid/account-tile.js.map +1 -1
  115. package/dist/src/tiles/grid/collection-tile.d.ts +14 -7
  116. package/dist/src/tiles/grid/collection-tile.js +112 -146
  117. package/dist/src/tiles/grid/collection-tile.js.map +1 -1
  118. package/dist/src/tiles/grid/item-tile.d.ts +29 -29
  119. package/dist/src/tiles/grid/item-tile.js +110 -105
  120. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  121. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  122. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +12 -8
  123. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js.map +1 -1
  124. package/dist/src/tiles/grid/tile-stats.d.ts +10 -10
  125. package/dist/src/tiles/grid/tile-stats.js +41 -40
  126. package/dist/src/tiles/grid/tile-stats.js.map +1 -1
  127. package/dist/src/tiles/image-block.d.ts +17 -17
  128. package/dist/src/tiles/image-block.js +76 -72
  129. package/dist/src/tiles/image-block.js.map +1 -1
  130. package/dist/src/tiles/item-image.d.ts +35 -35
  131. package/dist/src/tiles/item-image.js +117 -116
  132. package/dist/src/tiles/item-image.js.map +1 -1
  133. package/dist/src/tiles/list/account-label.d.ts +1 -1
  134. package/dist/src/tiles/list/account-label.js +6 -6
  135. package/dist/src/tiles/list/date-label.d.ts +1 -1
  136. package/dist/src/tiles/list/date-label.js +12 -12
  137. package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
  138. package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
  139. package/dist/src/tiles/list/tile-list-compact.d.ts +21 -21
  140. package/dist/src/tiles/list/tile-list-compact.js +93 -93
  141. package/dist/src/tiles/list/tile-list.d.ts +53 -53
  142. package/dist/src/tiles/list/tile-list.js +279 -279
  143. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  144. package/dist/src/tiles/mediatype-icon.js +47 -47
  145. package/dist/src/tiles/overlay/icon-overlay.d.ts +10 -10
  146. package/dist/src/tiles/overlay/icon-overlay.js +40 -40
  147. package/dist/src/tiles/overlay/icon-text-overlay.d.ts +9 -9
  148. package/dist/src/tiles/overlay/icon-text-overlay.js +38 -38
  149. package/dist/src/tiles/overlay/text-overlay.d.ts +10 -10
  150. package/dist/src/tiles/overlay/text-overlay.js +42 -42
  151. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  152. package/dist/src/tiles/text-snippet-block.js +73 -73
  153. package/dist/src/tiles/tile-dispatcher.d.ts +36 -36
  154. package/dist/src/tiles/tile-dispatcher.js +145 -128
  155. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  156. package/dist/src/utils/analytics-events.d.ts +22 -22
  157. package/dist/src/utils/analytics-events.js +24 -24
  158. package/dist/src/utils/format-count.d.ts +7 -7
  159. package/dist/src/utils/format-count.js +76 -76
  160. package/dist/src/utils/format-date.d.ts +2 -2
  161. package/dist/src/utils/format-date.js +23 -23
  162. package/dist/src/utils/format-unit-size.d.ts +2 -0
  163. package/dist/src/utils/format-unit-size.js +34 -0
  164. package/dist/src/utils/format-unit-size.js.map +1 -0
  165. package/dist/test/collection-browser.test.d.ts +1 -1
  166. package/dist/test/collection-browser.test.js +646 -646
  167. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  168. package/dist/test/collection-facets/facets-template.test.js +62 -62
  169. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  170. package/dist/test/collection-facets/more-facets-content.test.js +114 -114
  171. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  172. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  173. package/dist/test/collection-facets.test.d.ts +2 -2
  174. package/dist/test/collection-facets.test.js +544 -544
  175. package/dist/test/empty-placeholder.test.d.ts +1 -1
  176. package/dist/test/empty-placeholder.test.js +33 -33
  177. package/dist/test/icon-overlay.test.d.ts +1 -1
  178. package/dist/test/icon-overlay.test.js +24 -24
  179. package/dist/test/image-block.test.d.ts +1 -1
  180. package/dist/test/image-block.test.js +48 -48
  181. package/dist/test/item-image.test.d.ts +1 -1
  182. package/dist/test/item-image.test.js +84 -80
  183. package/dist/test/item-image.test.js.map +1 -1
  184. package/dist/test/mediatype-config.test.d.ts +1 -1
  185. package/dist/test/mediatype-config.test.js +16 -16
  186. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  187. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  188. package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
  189. package/dist/test/mocks/mock-collection-name-cache.js +13 -13
  190. package/dist/test/mocks/mock-search-responses.d.ts +12 -12
  191. package/dist/test/mocks/mock-search-responses.js +341 -341
  192. package/dist/test/mocks/mock-search-service.d.ts +13 -13
  193. package/dist/test/mocks/mock-search-service.js +40 -40
  194. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  195. package/dist/test/restoration-state-handler.test.js +125 -125
  196. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  197. package/dist/test/sort-filter-bar/alpha-bar.test.js +43 -43
  198. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  199. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +141 -141
  200. package/dist/test/text-overlay.test.d.ts +1 -1
  201. package/dist/test/text-overlay.test.js +48 -48
  202. package/dist/test/text-snippet-block.test.d.ts +1 -1
  203. package/dist/test/text-snippet-block.test.js +57 -57
  204. package/dist/test/tile-stats.test.d.ts +1 -1
  205. package/dist/test/tile-stats.test.js +33 -33
  206. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  207. package/dist/test/tiles/grid/account-tile.test.js +60 -60
  208. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -0
  209. package/dist/test/tiles/grid/collection-tile.test.js +73 -0
  210. package/dist/test/tiles/grid/collection-tile.test.js.map +1 -0
  211. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  212. package/dist/test/tiles/grid/item-tile.test.js +142 -129
  213. package/dist/test/tiles/grid/item-tile.test.js.map +1 -1
  214. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  215. package/dist/test/tiles/list/tile-list-compact.test.js +92 -92
  216. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  217. package/dist/test/tiles/list/tile-list.test.js +123 -123
  218. package/dist/test/utils/format-count.test.d.ts +1 -1
  219. package/dist/test/utils/format-count.test.js +23 -23
  220. package/dist/test/utils/format-date.test.d.ts +1 -1
  221. package/dist/test/utils/format-date.test.js +17 -17
  222. package/dist/test/utils/format-unit-size.test.d.ts +1 -0
  223. package/dist/test/utils/format-unit-size.test.js +18 -0
  224. package/dist/test/utils/format-unit-size.test.js.map +1 -0
  225. package/index.html +24 -24
  226. package/local.archive.org.cert +86 -86
  227. package/local.archive.org.key +27 -27
  228. package/package.json +2 -2
  229. package/renovate.json +6 -6
  230. package/src/app-root.ts +214 -169
  231. package/src/collection-browser.ts +2 -0
  232. package/src/models.ts +2 -0
  233. package/src/styles/item-image-styles.ts +13 -3
  234. package/src/tiles/collection-browser-loading-tile.ts +1 -1
  235. package/src/tiles/grid/account-tile.ts +4 -2
  236. package/src/tiles/grid/collection-tile.ts +106 -136
  237. package/src/tiles/grid/item-tile.ts +8 -2
  238. package/src/tiles/grid/styles/tile-grid-shared-styles.ts +6 -2
  239. package/src/tiles/grid/tile-stats.ts +1 -0
  240. package/src/tiles/image-block.ts +5 -2
  241. package/src/tiles/item-image.ts +4 -3
  242. package/src/tiles/tile-dispatcher.ts +17 -0
  243. package/src/utils/format-unit-size.ts +43 -0
  244. package/test/item-image.test.ts +4 -0
  245. package/test/tiles/grid/collection-tile.test.ts +85 -0
  246. package/test/tiles/grid/item-tile.test.ts +30 -4
  247. package/test/utils/format-unit-size.test.ts +21 -0
  248. package/tsconfig.json +21 -21
  249. package/web-dev-server.config.mjs +30 -30
  250. package/web-test-runner.config.mjs +41 -41
package/src/app-root.ts CHANGED
@@ -113,188 +113,198 @@ export class AppRoot extends LitElement {
113
113
  this.collectionBrowser.baseQuery = this.searchQuery;
114
114
  }
115
115
 
116
+ private get getClass() {
117
+ const searchParams = new URLSearchParams(window.location.search);
118
+
119
+ return searchParams.get('hide-dev-tools') ? 'hidden' : '';
120
+ }
121
+
116
122
  render() {
117
123
  return html`
118
- <div id="dev-tools">
119
- <div id="search-and-page-inputs">
120
- <form @submit=${this.searchPressed}>
121
- Query:
122
- <input
123
- type="text"
124
- id="base-query-field"
125
- .value=${this.searchQuery ?? ''}
126
- />
127
- <input type="submit" value="Search" />
128
- </form>
129
- <form @submit=${this.changePagePressed}>
130
- Page: <input type="number" value="1" id="page-number-input" />
131
- <input type="submit" value="Go" />
132
- </form>
133
- </div>
124
+ <div class="dev-tool-container">
125
+ <div id="dev-tools" class=${this.getClass}>
126
+ <div id="search-and-page-inputs">
127
+ <form @submit=${this.searchPressed}>
128
+ Query:
129
+ <input
130
+ type="text"
131
+ id="base-query-field"
132
+ .value=${this.searchQuery ?? ''}
133
+ />
134
+ <input type="submit" value="Search" />
135
+ </form>
136
+ <form @submit=${this.changePagePressed}>
137
+ Page: <input type="number" value="1" id="page-number-input" />
138
+ <input type="submit" value="Go" />
139
+ </form>
140
+ </div>
134
141
 
135
- <div id="search-types">
136
- Search type:
137
- <span class="search-type">
138
- <input
139
- type="radio"
140
- id="metadata-search"
141
- name="search-type"
142
- value="metadata"
143
- ?checked=${this.searchType === SearchType.METADATA}
144
- @click=${this.searchTypeSelected}
145
- />
146
- <label for="metadata-search">Metadata</label>
147
- </span>
148
- <span class="search-type">
149
- <input
150
- type="radio"
151
- id="fulltext-search"
152
- name="search-type"
153
- value="fulltext"
154
- ?checked=${this.searchType === SearchType.FULLTEXT}
155
- @click=${this.searchTypeSelected}
156
- />
157
- <label for="fulltext-search">Full text</label>
158
- </span>
159
- </div>
142
+ <div id="search-types">
143
+ Search type:
144
+ <span class="search-type">
145
+ <input
146
+ type="radio"
147
+ id="metadata-search"
148
+ name="search-type"
149
+ value="metadata"
150
+ ?checked=${this.searchType === SearchType.METADATA}
151
+ @click=${this.searchTypeSelected}
152
+ />
153
+ <label for="metadata-search">Metadata</label>
154
+ </span>
155
+ <span class="search-type">
156
+ <input
157
+ type="radio"
158
+ id="fulltext-search"
159
+ name="search-type"
160
+ value="fulltext"
161
+ ?checked=${this.searchType === SearchType.FULLTEXT}
162
+ @click=${this.searchTypeSelected}
163
+ />
164
+ <label for="fulltext-search">Full text</label>
165
+ </span>
166
+ </div>
160
167
 
161
- <div id="toggle-controls">
162
- <button
163
- @click=${() => {
164
- const cellControls =
165
- this.shadowRoot?.getElementById('cell-controls');
166
- cellControls?.classList.toggle('hidden');
167
- const checkboxControls =
168
- this.shadowRoot?.getElementById('checkbox-controls');
169
- checkboxControls?.classList.toggle('hidden');
170
- }}
171
- >
172
- Toggle Controls
173
- </button>
174
- <button
175
- @click=${() => {
176
- const details = this.shadowRoot?.getElementById(
177
- 'latest-event-details'
178
- );
179
- details?.classList.toggle('hidden');
180
- }}
181
- >
182
- Last Event Captured
183
- </button>
184
- </div>
168
+ <div id="toggle-controls">
169
+ <button
170
+ @click=${() => {
171
+ const details =
172
+ this.shadowRoot?.getElementById('cell-size-control');
173
+ details?.classList.toggle('hidden');
174
+ const rowGapControls =
175
+ this.shadowRoot?.getElementById('cell-gap-control');
176
+ rowGapControls?.classList.toggle('hidden');
177
+ }}
178
+ >
179
+ Toggle Cell Controls
180
+ </button>
181
+ <button
182
+ @click=${() => {
183
+ const details = this.shadowRoot?.getElementById(
184
+ 'latest-event-details'
185
+ );
186
+ details?.classList.toggle('hidden');
187
+ }}
188
+ >
189
+ Last Event Captured
190
+ </button>
191
+ </div>
185
192
 
186
- <div id="last-event">
187
- <pre id="latest-event-details" class="hidden">
188
- ${JSON.stringify(this.latestAction, null, 2)}
189
- </pre
190
- >
191
- </div>
193
+ <div id="last-event">
194
+ <pre id="latest-event-details" class="hidden">
195
+ ${JSON.stringify(this.latestAction, null, 2)}
196
+ </pre
197
+ >
198
+ </div>
192
199
 
193
- <div id="cell-controls">
194
- <div id="cell-size-control">
195
- <div>
196
- <label for="cell-width-slider">Min cell width:</label>
200
+ <div id="cell-controls" class="hidden">
201
+ <div id="cell-size-control">
202
+ <div>
203
+ <label for="cell-width-slider">Min cell width:</label>
204
+ <input
205
+ type="range"
206
+ min="10"
207
+ max="100"
208
+ value="18"
209
+ step="0.1"
210
+ id="cell-width-slider"
211
+ @input=${this.widthChanged}
212
+ />
213
+ <span>${this.cellWidth}rem</span>
214
+ </div>
215
+ <div>
216
+ <label for="cell-height-slider">Cell height:</label>
217
+ <input
218
+ type="range"
219
+ min="10"
220
+ max="100"
221
+ value="29"
222
+ step="0.1"
223
+ id="cell-height-slider"
224
+ @input=${this.heightChanged}
225
+ />
226
+ <span>${this.cellHeight}rem</span>
227
+ </div>
228
+ </div>
229
+ <div id="cell-gap-control">
230
+ <div>
231
+ <label for="cell-row-gap-slider">Row gap:</label>
232
+ <input
233
+ type="range"
234
+ min="0"
235
+ max="5"
236
+ value="1.7"
237
+ step="0.1"
238
+ id="cell-row-gap-slider"
239
+ @input=${this.rowGapChanged}
240
+ />
241
+ <span>${this.rowGap}rem</span>
242
+ </div>
243
+ <div>
244
+ <label for="cell-col-gap-slider">Col gap:</label>
245
+ <input
246
+ type="range"
247
+ min="0"
248
+ max="5"
249
+ value="1.7"
250
+ step="0.1"
251
+ id="cell-col-gap-slider"
252
+ @input=${this.colGapChanged}
253
+ />
254
+ <span>${this.colGap}rem</span>
255
+ </div>
256
+ </div>
257
+ </div>
258
+ <div id="checkbox-controls">
259
+ <div class="checkbox-control">
197
260
  <input
198
- type="range"
199
- min="10"
200
- max="100"
201
- value="18"
202
- step="0.1"
203
- id="cell-width-slider"
204
- @input=${this.widthChanged}
261
+ type="checkbox"
262
+ id="show-outline-check"
263
+ @click=${this.outlineChanged}
205
264
  />
206
- <span>${this.cellWidth}rem</span>
265
+ <label for="show-outline-check">Show cell outlines</label>
207
266
  </div>
208
- <div>
209
- <label for="cell-height-slider">Cell height:</label>
267
+ <div class="checkbox-control">
210
268
  <input
211
- type="range"
212
- min="10"
213
- max="100"
214
- value="29"
215
- step="0.1"
216
- id="cell-height-slider"
217
- @input=${this.heightChanged}
269
+ type="checkbox"
270
+ id="show-facet-group-outline-check"
271
+ @click=${this.toggleFacetGroupOutline}
218
272
  />
219
- <span>${this.cellHeight}rem</span>
273
+ <label for="show-facet-group-outline-check">
274
+ Show facet group outlines
275
+ </label>
220
276
  </div>
221
- </div>
222
- <div id="cell-gap-control">
223
- <div>
224
- <label for="cell-row-gap-slider">Row gap:</label>
277
+ <div class="checkbox-control">
225
278
  <input
226
- type="range"
227
- min="0"
228
- max="5"
229
- value="1.7"
230
- step="0.1"
231
- id="cell-row-gap-slider"
232
- @input=${this.rowGapChanged}
279
+ type="checkbox"
280
+ id="simulate-login"
281
+ @click=${this.loginChanged}
233
282
  />
234
- <span>${this.rowGap}rem</span>
283
+ <label for="simulate-login">Simulate login</label>
235
284
  </div>
236
- <div>
237
- <label for="cell-col-gap-slider">Col gap:</label>
285
+ <div class="checkbox-control">
238
286
  <input
239
- type="range"
240
- min="0"
241
- max="5"
242
- value="1.7"
243
- step="0.1"
244
- id="cell-col-gap-slider"
245
- @input=${this.colGapChanged}
287
+ type="checkbox"
288
+ id="show-dummy-snippets"
289
+ @click=${this.snippetsChanged}
246
290
  />
247
- <span>${this.colGap}rem</span>
291
+ <label for="show-dummy-snippets">Show dummy snippets</label>
292
+ </div>
293
+ <div class="checkbox-control">
294
+ <input
295
+ type="checkbox"
296
+ id="enable-date-picker"
297
+ checked
298
+ @click=${this.datePickerChanged}
299
+ />
300
+ <label for="enable-date-picker">Enable date picker</label>
248
301
  </div>
249
302
  </div>
250
303
  </div>
251
- <div id="checkbox-controls">
252
- <div class="checkbox-control">
253
- <input
254
- type="checkbox"
255
- id="show-outline-check"
256
- @click=${this.outlineChanged}
257
- />
258
- <label for="show-outline-check">Show cell outlines</label>
259
- </div>
260
- <div class="checkbox-control">
261
- <input
262
- type="checkbox"
263
- id="show-facet-group-outline-check"
264
- @click=${this.toggleFacetGroupOutline}
265
- />
266
- <label for="show-facet-group-outline-check">
267
- Show facet group outlines
268
- </label>
269
- </div>
270
- <div class="checkbox-control">
271
- <input
272
- type="checkbox"
273
- id="simulate-login"
274
- @click=${this.loginChanged}
275
- />
276
- <label for="simulate-login">Simulate login</label>
277
- </div>
278
- <div class="checkbox-control">
279
- <input
280
- type="checkbox"
281
- id="show-dummy-snippets"
282
- @click=${this.snippetsChanged}
283
- />
284
- <label for="show-dummy-snippets">Show dummy snippets</label>
285
- </div>
286
- <div class="checkbox-control">
287
- <input
288
- type="checkbox"
289
- id="enable-date-picker"
290
- checked
291
- @click=${this.datePickerChanged}
292
- />
293
- <label for="enable-date-picker">Enable date picker</label>
294
- </div>
295
- </div>
304
+ <button id="toggle-dev-tools-btn" @click=${this.toggleDevTools}>
305
+ Toggle Search Controls
306
+ </button>
296
307
  </div>
297
-
298
308
  <div id="collection-browser-container">
299
309
  <collection-browser
300
310
  .baseNavigationUrl=${'https://archive.org'}
@@ -319,7 +329,6 @@ export class AppRoot extends LitElement {
319
329
 
320
330
  private baseQueryChanged(e: CustomEvent<{ baseQuery?: string }>): void {
321
331
  this.searchQuery = e.detail.baseQuery;
322
- this.collectionBrowser.clearFilters();
323
332
  }
324
333
 
325
334
  /** Handler for search type changes coming from collection browser */
@@ -360,6 +369,29 @@ export class AppRoot extends LitElement {
360
369
  }
361
370
  }
362
371
 
372
+ private toggleDevTools() {
373
+ const pageUrl = new URL(window.location.href);
374
+ const { searchParams } = pageUrl;
375
+
376
+ if (searchParams.get('hide-dev-tools')) {
377
+ searchParams.delete('hide-dev-tools');
378
+ } else {
379
+ searchParams.set('hide-dev-tools', 'true');
380
+ }
381
+
382
+ this.shadowRoot?.getElementById('dev-tools')?.classList.toggle('hidden');
383
+
384
+ if (window.history.replaceState) {
385
+ window.history.replaceState(
386
+ {
387
+ path: pageUrl.toString(),
388
+ },
389
+ '',
390
+ pageUrl.toString()
391
+ );
392
+ }
393
+ }
394
+
363
395
  private toggleFacetGroupOutline(e: Event) {
364
396
  const target = e.target as HTMLInputElement;
365
397
  if (target.checked) {
@@ -511,10 +543,6 @@ export class AppRoot extends LitElement {
511
543
  font-size: 1.6rem;
512
544
  }
513
545
 
514
- collection-browser {
515
- margin-top: 20rem;
516
- }
517
-
518
546
  modal-manager.showFacetGroupOutlines,
519
547
  collection-browser.showFacetGroupOutlines {
520
548
  --facet-row-border-top: 1px solid red;
@@ -525,8 +553,11 @@ export class AppRoot extends LitElement {
525
553
  width: 300px;
526
554
  }
527
555
 
556
+ .dev-tool-container {
557
+ position: relative;
558
+ }
528
559
  #dev-tools {
529
- position: fixed;
560
+ position: relative;
530
561
  top: 0;
531
562
  left: 0;
532
563
  z-index: 1;
@@ -535,12 +566,27 @@ export class AppRoot extends LitElement {
535
566
  padding: 0.5rem 1rem;
536
567
  border: 1px solid black;
537
568
  font-size: 1.4rem;
569
+ width: 75%;
570
+ background: #ffffffb3;
538
571
  }
539
572
 
540
573
  #dev-tools > * {
541
574
  display: flex;
542
575
  }
543
576
 
577
+ #toggle-dev-tools-btn {
578
+ position: fixed;
579
+ left: 77.4%;
580
+ top: 0;
581
+ background: red;
582
+ padding: 5px;
583
+ color: white;
584
+ font-size: 1.4rem;
585
+ margin: 0;
586
+ z-index: 1;
587
+ cursor: pointer;
588
+ }
589
+
544
590
  #search-and-page-inputs > form {
545
591
  margin-right: 1rem;
546
592
  }
@@ -585,8 +631,7 @@ export class AppRoot extends LitElement {
585
631
  }
586
632
 
587
633
  .hidden {
588
- /* If this class is present, we want the element hidden regardless of specificity */
589
- display: none !important;
634
+ display: none;
590
635
  }
591
636
 
592
637
  #toggle-controls {
@@ -1430,6 +1430,8 @@ export class CollectionBrowser
1430
1430
  tiles.push({
1431
1431
  averageRating: result.avg_rating?.value,
1432
1432
  collections: result.collection?.values ?? [],
1433
+ collectionFilesCount: result.collection_files_count?.value ?? 0,
1434
+ collectionSize: result.collection_size?.value ?? 0,
1433
1435
  commentCount: result.num_reviews?.value ?? 0,
1434
1436
  creator: result.creator?.value,
1435
1437
  creators: result.creator?.values ?? [],
package/src/models.ts CHANGED
@@ -4,7 +4,9 @@ export interface TileModel {
4
4
  averageRating?: number;
5
5
  collectionIdentifier?: string;
6
6
  collectionName?: string;
7
+ collectionFilesCount: number;
7
8
  collections: string[];
9
+ collectionSize: number;
8
10
  commentCount: number;
9
11
  creator?: string;
10
12
  creators: string[];
@@ -5,7 +5,6 @@ import { css } from 'lit';
5
5
  */
6
6
  export const baseItemImageStyles = css`
7
7
  .drop-shadow {
8
- filter: drop-shadow(1px 1px 2px rgba(0, 0, 0, 0.8));
9
8
  overflow: hidden;
10
9
  height: 100%;
11
10
  }
@@ -30,11 +29,22 @@ export const baseItemImageStyles = css`
30
29
 
31
30
  .blur {
32
31
  filter: blur(15px);
33
- box-shadow: 1px 1px 2px 0px;
32
+ box-shadow: 1px 1px 2px 0;
34
33
  }
35
34
 
36
- .radius50 {
35
+ .account-image {
36
+ object-fit: cover;
37
+ background-position: 50% 50%;
37
38
  border-radius: 50%;
39
+ width: 160px;
40
+ height: 160px;
41
+ }
42
+
43
+ .collection-image {
44
+ object-fit: cover;
45
+ border-radius: 8px;
46
+ width: 100%;
47
+ height: 160px;
38
48
  }
39
49
  `;
40
50
 
@@ -16,7 +16,7 @@ export class CollectionBrowserLoadingTile extends LitElement {
16
16
 
17
17
  #container {
18
18
  background: linear-gradient(to right bottom, #dddddd, #d8d8d8);
19
- border-radius: var(--collectionTileCornerRadius, 4px);
19
+ border-radius: var(--tileCornerRadius, 4px);
20
20
  background-size: 100% 100%;
21
21
  display: block;
22
22
  height: 100%;
@@ -63,11 +63,13 @@ export class AccountTile extends LitElement {
63
63
  * CSS
64
64
  */
65
65
  static get styles() {
66
+ const tileBorderColor = css`var(--tileBorderColor, #dddddd)`;
67
+
66
68
  return [
67
69
  baseTileStyles,
68
70
  css`
69
- image-block {
70
- --imageBlockBackgroundColor: #fcf5e6;
71
+ .container {
72
+ border: 1px solid ${tileBorderColor};
71
73
  }
72
74
  `,
73
75
  ];