@internetarchive/collection-browser 2.1.4-alpha.3 → 2.1.4-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 (307) 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 +12 -12
  6. package/dist/index.js +12 -12
  7. package/dist/src/app-root.d.ts +84 -88
  8. package/dist/src/app-root.js +454 -487
  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/favorite-unfilled.d.ts +1 -1
  29. package/dist/src/assets/img/icons/favorite-unfilled.js +2 -2
  30. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  31. package/dist/src/assets/img/icons/login-required.js +2 -2
  32. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  33. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  34. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  35. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  36. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  37. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  38. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  39. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  40. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  41. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  42. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  43. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  44. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  45. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  46. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  47. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  48. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
  49. package/dist/src/assets/img/icons/mediatype/search.js +2 -2
  50. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  51. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  52. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  53. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  54. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  55. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  56. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  57. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  58. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  59. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  60. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  61. package/dist/src/assets/img/icons/null-result.js +2 -2
  62. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  63. package/dist/src/assets/img/icons/restricted.js +2 -2
  64. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  65. package/dist/src/assets/img/icons/reviews.js +2 -2
  66. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  67. package/dist/src/assets/img/icons/upload.js +2 -2
  68. package/dist/src/assets/img/icons/views.d.ts +1 -1
  69. package/dist/src/assets/img/icons/views.js +2 -2
  70. package/dist/src/circular-activity-indicator.d.ts +5 -5
  71. package/dist/src/circular-activity-indicator.js +17 -17
  72. package/dist/src/collection-browser.d.ts +395 -395
  73. package/dist/src/collection-browser.js +1363 -1366
  74. package/dist/src/collection-browser.js.map +1 -1
  75. package/dist/src/collection-facets/facet-row.d.ts +30 -30
  76. package/dist/src/collection-facets/facet-row.js +114 -114
  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 +17 -17
  80. package/dist/src/collection-facets/facets-template.js +114 -114
  81. package/dist/src/collection-facets/more-facets-content.d.ts +70 -70
  82. package/dist/src/collection-facets/more-facets-content.js +354 -354
  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 +103 -103
  88. package/dist/src/collection-facets.js +509 -509
  89. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +232 -232
  90. package/dist/src/data-source/collection-browser-data-source-interface.js +1 -1
  91. package/dist/src/data-source/collection-browser-data-source.d.ts +360 -360
  92. package/dist/src/data-source/collection-browser-data-source.js +930 -930
  93. package/dist/src/data-source/collection-browser-query-state.d.ts +43 -43
  94. package/dist/src/data-source/collection-browser-query-state.js +1 -1
  95. package/dist/src/data-source/models.d.ts +28 -28
  96. package/dist/src/data-source/models.js +8 -8
  97. package/dist/src/empty-placeholder.d.ts +23 -23
  98. package/dist/src/empty-placeholder.js +74 -74
  99. package/dist/src/expanded-date-picker.d.ts +43 -43
  100. package/dist/src/expanded-date-picker.js +109 -109
  101. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  102. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  103. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  104. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  105. package/dist/src/manage/manage-bar.d.ts +30 -26
  106. package/dist/src/manage/manage-bar.js +76 -85
  107. package/dist/src/manage/manage-bar.js.map +1 -1
  108. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  109. package/dist/src/mediatype/mediatype-config.js +91 -91
  110. package/dist/src/models.d.ts +198 -198
  111. package/dist/src/models.js +381 -381
  112. package/dist/src/restoration-state-handler.d.ts +70 -70
  113. package/dist/src/restoration-state-handler.js +357 -357
  114. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  115. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  116. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
  117. package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
  118. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  119. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  120. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  121. package/dist/src/sort-filter-bar/img/list.js +2 -2
  122. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  123. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
  124. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  125. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
  126. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  127. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
  128. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  129. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  130. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  131. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  132. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +219 -221
  133. package/dist/src/sort-filter-bar/sort-filter-bar.js +685 -695
  134. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  135. package/dist/src/styles/ia-button.d.ts +2 -0
  136. package/dist/src/styles/ia-button.js +102 -0
  137. package/dist/src/styles/ia-button.js.map +1 -0
  138. package/dist/src/styles/item-image-styles.d.ts +8 -8
  139. package/dist/src/styles/item-image-styles.js +9 -9
  140. package/dist/src/styles/sr-only.d.ts +1 -1
  141. package/dist/src/styles/sr-only.js +2 -2
  142. package/dist/src/tiles/base-tile-component.d.ts +19 -19
  143. package/dist/src/tiles/base-tile-component.js +63 -63
  144. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  145. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  146. package/dist/src/tiles/grid/account-tile.d.ts +18 -18
  147. package/dist/src/tiles/grid/account-tile.js +72 -72
  148. package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
  149. package/dist/src/tiles/grid/collection-tile.js +80 -80
  150. package/dist/src/tiles/grid/item-tile.d.ts +30 -30
  151. package/dist/src/tiles/grid/item-tile.js +149 -149
  152. package/dist/src/tiles/grid/search-tile.d.ts +10 -10
  153. package/dist/src/tiles/grid/search-tile.js +51 -51
  154. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  155. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
  156. package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
  157. package/dist/src/tiles/grid/tile-stats.js +53 -53
  158. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  159. package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
  160. package/dist/src/tiles/hover/tile-hover-pane.d.ts +15 -15
  161. package/dist/src/tiles/hover/tile-hover-pane.js +38 -38
  162. package/dist/src/tiles/image-block.d.ts +17 -17
  163. package/dist/src/tiles/image-block.js +73 -73
  164. package/dist/src/tiles/item-image.d.ts +39 -39
  165. package/dist/src/tiles/item-image.js +154 -154
  166. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
  167. package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
  168. package/dist/src/tiles/list/tile-list-compact.d.ts +15 -15
  169. package/dist/src/tiles/list/tile-list-compact.js +114 -114
  170. package/dist/src/tiles/list/tile-list.d.ts +50 -50
  171. package/dist/src/tiles/list/tile-list.js +315 -315
  172. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  173. package/dist/src/tiles/mediatype-icon.js +47 -47
  174. package/dist/src/tiles/overlay/icon-overlay.d.ts +10 -10
  175. package/dist/src/tiles/overlay/icon-overlay.js +40 -40
  176. package/dist/src/tiles/overlay/icon-text-overlay.d.ts +9 -9
  177. package/dist/src/tiles/overlay/icon-text-overlay.js +38 -38
  178. package/dist/src/tiles/overlay/text-overlay.d.ts +10 -10
  179. package/dist/src/tiles/overlay/text-overlay.js +42 -42
  180. package/dist/src/tiles/review-block.d.ts +12 -12
  181. package/dist/src/tiles/review-block.js +56 -56
  182. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  183. package/dist/src/tiles/text-snippet-block.js +73 -73
  184. package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
  185. package/dist/src/tiles/tile-dispatcher.js +230 -233
  186. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  187. package/dist/src/tiles/tile-display-value-provider.d.ts +47 -47
  188. package/dist/src/tiles/tile-display-value-provider.js +94 -94
  189. package/dist/src/utils/analytics-events.d.ts +25 -25
  190. package/dist/src/utils/analytics-events.js +27 -27
  191. package/dist/src/utils/array-equals.d.ts +4 -4
  192. package/dist/src/utils/array-equals.js +10 -10
  193. package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -11
  194. package/dist/src/utils/collapse-repeated-quotes.js +13 -13
  195. package/dist/src/utils/format-count.d.ts +7 -7
  196. package/dist/src/utils/format-count.js +76 -76
  197. package/dist/src/utils/format-date.d.ts +2 -2
  198. package/dist/src/utils/format-date.js +25 -25
  199. package/dist/src/utils/format-unit-size.d.ts +2 -2
  200. package/dist/src/utils/format-unit-size.js +33 -33
  201. package/dist/src/utils/local-date-from-utc.d.ts +9 -9
  202. package/dist/src/utils/local-date-from-utc.js +15 -15
  203. package/dist/src/utils/log.d.ts +7 -7
  204. package/dist/src/utils/log.js +15 -15
  205. package/dist/src/utils/resolve-mediatype.d.ts +8 -8
  206. package/dist/src/utils/resolve-mediatype.js +23 -23
  207. package/dist/src/utils/sha1.d.ts +2 -2
  208. package/dist/src/utils/sha1.js +8 -8
  209. package/dist/test/collection-browser.test.d.ts +1 -1
  210. package/dist/test/collection-browser.test.js +1243 -1215
  211. package/dist/test/collection-browser.test.js.map +1 -1
  212. package/dist/test/collection-facets/facet-row.test.d.ts +1 -1
  213. package/dist/test/collection-facets/facet-row.test.js +203 -203
  214. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  215. package/dist/test/collection-facets/facets-template.test.js +105 -105
  216. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  217. package/dist/test/collection-facets/more-facets-content.test.js +133 -133
  218. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  219. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  220. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
  221. package/dist/test/collection-facets/toggle-switch.test.js +73 -73
  222. package/dist/test/collection-facets.test.d.ts +2 -2
  223. package/dist/test/collection-facets.test.js +652 -652
  224. package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -1
  225. package/dist/test/data-source/collection-browser-data-source.test.js +89 -89
  226. package/dist/test/empty-placeholder.test.d.ts +1 -1
  227. package/dist/test/empty-placeholder.test.js +63 -63
  228. package/dist/test/expanded-date-picker.test.d.ts +1 -1
  229. package/dist/test/expanded-date-picker.test.js +95 -95
  230. package/dist/test/icon-overlay.test.d.ts +1 -1
  231. package/dist/test/icon-overlay.test.js +24 -24
  232. package/dist/test/image-block.test.d.ts +1 -1
  233. package/dist/test/image-block.test.js +48 -48
  234. package/dist/test/item-image.test.d.ts +1 -1
  235. package/dist/test/item-image.test.js +85 -85
  236. package/dist/test/manage/manage-bar.test.d.ts +1 -1
  237. package/dist/test/manage/manage-bar.test.js +77 -72
  238. package/dist/test/manage/manage-bar.test.js.map +1 -1
  239. package/dist/test/mediatype-config.test.d.ts +1 -1
  240. package/dist/test/mediatype-config.test.js +16 -16
  241. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  242. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  243. package/dist/test/mocks/mock-search-responses.d.ts +24 -24
  244. package/dist/test/mocks/mock-search-responses.js +840 -840
  245. package/dist/test/mocks/mock-search-service.d.ts +15 -15
  246. package/dist/test/mocks/mock-search-service.js +53 -53
  247. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  248. package/dist/test/restoration-state-handler.test.js +270 -270
  249. package/dist/test/review-block.test.d.ts +1 -1
  250. package/dist/test/review-block.test.js +44 -44
  251. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  252. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  253. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  254. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  255. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  256. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +420 -420
  257. package/dist/test/text-overlay.test.d.ts +1 -1
  258. package/dist/test/text-overlay.test.js +48 -48
  259. package/dist/test/text-snippet-block.test.d.ts +1 -1
  260. package/dist/test/text-snippet-block.test.js +57 -57
  261. package/dist/test/tile-stats.test.d.ts +1 -1
  262. package/dist/test/tile-stats.test.js +81 -81
  263. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  264. package/dist/test/tiles/grid/account-tile.test.js +76 -76
  265. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  266. package/dist/test/tiles/grid/collection-tile.test.js +73 -73
  267. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  268. package/dist/test/tiles/grid/item-tile.test.js +312 -312
  269. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
  270. package/dist/test/tiles/grid/search-tile.test.js +51 -51
  271. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  272. package/dist/test/tiles/hover/hover-pane-controller.test.js +259 -259
  273. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  274. package/dist/test/tiles/hover/tile-hover-pane.test.js +13 -13
  275. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  276. package/dist/test/tiles/list/tile-list-compact.test.js +143 -143
  277. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  278. package/dist/test/tiles/list/tile-list.test.js +297 -297
  279. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  280. package/dist/test/tiles/tile-dispatcher.test.js +100 -100
  281. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
  282. package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
  283. package/dist/test/utils/array-equals.test.d.ts +1 -1
  284. package/dist/test/utils/array-equals.test.js +26 -26
  285. package/dist/test/utils/format-count.test.d.ts +1 -1
  286. package/dist/test/utils/format-count.test.js +23 -23
  287. package/dist/test/utils/format-date.test.d.ts +1 -1
  288. package/dist/test/utils/format-date.test.js +17 -17
  289. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  290. package/dist/test/utils/format-unit-size.test.js +17 -17
  291. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
  292. package/dist/test/utils/local-date-from-utc.test.js +26 -26
  293. package/local.archive.org.cert +86 -86
  294. package/local.archive.org.key +27 -27
  295. package/package.json +1 -1
  296. package/renovate.json +6 -6
  297. package/src/app-root.ts +25 -59
  298. package/src/collection-browser.ts +7 -9
  299. package/src/manage/manage-bar.ts +22 -33
  300. package/src/sort-filter-bar/sort-filter-bar.ts +1 -10
  301. package/src/styles/ia-button.ts +107 -0
  302. package/src/tiles/tile-dispatcher.ts +1 -3
  303. package/test/collection-browser.test.ts +38 -0
  304. package/test/manage/manage-bar.test.ts +5 -0
  305. package/tsconfig.json +21 -21
  306. package/web-dev-server.config.mjs +30 -30
  307. package/web-test-runner.config.mjs +41 -41
@@ -136,8 +136,6 @@ export class CollectionBrowser
136
136
 
137
137
  @property({ type: Boolean }) suppressSortBar = false;
138
138
 
139
- @property({ type: Boolean }) suppressDisplayModes = false;
140
-
141
139
  @property({ type: Boolean }) clearResultsOnEmptyQuery = false;
142
140
 
143
141
  @property({ type: String }) collectionPagePath: string = '/details/';
@@ -173,6 +171,8 @@ export class CollectionBrowser
173
171
  */
174
172
  @property({ type: Boolean }) isManageView = false;
175
173
 
174
+ @property({ type: String }) manageViewLabel = 'Select items to remove';
175
+
176
176
  /** Whether to replace the default sort options with a slot for customization (default: false) */
177
177
  @property({ type: Boolean }) enableSortOptionsSlot = false;
178
178
 
@@ -630,7 +630,6 @@ export class CollectionBrowser
630
630
  .prefixFilterCountMap=${this.dataSource.prefixFilterCountMap}
631
631
  .resizeObserver=${this.resizeObserver}
632
632
  .enableSortOptionsSlot=${this.enableSortOptionsSlot}
633
- .suppressDisplayModes=${this.suppressDisplayModes}
634
633
  @sortChanged=${this.userChangedSort}
635
634
  @displayModeChanged=${this.displayModeChanged}
636
635
  @titleLetterChanged=${this.titleLetterSelected}
@@ -638,7 +637,6 @@ export class CollectionBrowser
638
637
  >
639
638
  <slot name="sort-options-left" slot="sort-options-left"></slot>
640
639
  <slot name="sort-options" slot="sort-options"></slot>
641
- <slot name="sort-options-right" slot="sort-options-right"></slot>
642
640
  </sort-filter-bar>
643
641
  `;
644
642
  }
@@ -646,8 +644,10 @@ export class CollectionBrowser
646
644
  private get manageBarTemplate(): TemplateResult {
647
645
  return html`
648
646
  <manage-bar
647
+ label=${this.manageViewLabel}
649
648
  showSelectAll
650
649
  showUnselectAll
650
+ ?enableRemoveButton=${this.dataSource.checkedTileModels.length !== 0}
651
651
  @removeItems=${this.handleRemoveItems}
652
652
  @selectAll=${() => this.dataSource.checkAllTiles()}
653
653
  @unselectAll=${() => this.dataSource.uncheckAllTiles()}
@@ -1188,7 +1188,6 @@ export class CollectionBrowser
1188
1188
  connectedCallback(): void {
1189
1189
  super.connectedCallback?.();
1190
1190
  this.setupStateRestorationObserver();
1191
- this.setupResizeObserver();
1192
1191
  }
1193
1192
 
1194
1193
  disconnectedCallback(): void {
@@ -1342,7 +1341,7 @@ export class CollectionBrowser
1342
1341
  }
1343
1342
 
1344
1343
  private setupResizeObserver() {
1345
- if (!this.resizeObserver || !this.contentContainer) return;
1344
+ if (!this.resizeObserver) return;
1346
1345
  this.resizeObserver.addObserver({
1347
1346
  target: this.contentContainer,
1348
1347
  handler: this,
@@ -1682,6 +1681,8 @@ export class CollectionBrowser
1682
1681
  // this.mapDataSource(model => ({ ...model }));
1683
1682
  const cellIndex = this.dataSource.indexOf(event.detail);
1684
1683
  if (cellIndex >= 0) this.infiniteScroller?.refreshCell(cellIndex);
1684
+
1685
+ this.requestUpdate();
1685
1686
  }
1686
1687
 
1687
1688
  this.analyticsHandler?.sendEvent({
@@ -1813,7 +1814,6 @@ export class CollectionBrowser
1813
1814
  #right-column {
1814
1815
  flex: 1;
1815
1816
  position: relative;
1816
- min-height: 90vh;
1817
1817
  border-left: 1px solid rgb(232, 232, 232);
1818
1818
  border-right: 1px solid rgb(232, 232, 232);
1819
1819
  padding-left: 1rem;
@@ -1930,9 +1930,7 @@ export class CollectionBrowser
1930
1930
 
1931
1931
  .mobile #left-column {
1932
1932
  width: 100%;
1933
- min-width: 0;
1934
1933
  padding: 0;
1935
- border: 0;
1936
1934
  }
1937
1935
 
1938
1936
  .clear-filters-btn-row {
@@ -2,6 +2,7 @@ import { msg } from '@lit/localize';
2
2
  import { LitElement, html, css, TemplateResult, CSSResultGroup } from 'lit';
3
3
  import { customElement, property } from 'lit/decorators.js';
4
4
  import { when } from 'lit/directives/when.js';
5
+ import iaButtonStyle from '../styles/ia-button';
5
6
 
6
7
  export interface ManageableItem {
7
8
  identifier: string;
@@ -14,7 +15,7 @@ export class ManageBar extends LitElement {
14
15
  /**
15
16
  * The label displayed in front of the management buttons
16
17
  */
17
- @property({ type: String }) label = msg('Select items to un-favorite');
18
+ @property({ type: String }) label = msg('Select items to remove');
18
19
 
19
20
  /**
20
21
  * Whether to show the "Select All" button (default false)
@@ -26,15 +27,24 @@ export class ManageBar extends LitElement {
26
27
  */
27
28
  @property({ type: Boolean }) showUnselectAll = false;
28
29
 
30
+ /**
31
+ * Whether to active delete button for selectable items
32
+ */
33
+ @property({ type: Boolean }) enableRemoveButton = false;
34
+
29
35
  render(): TemplateResult {
30
36
  return html`
31
37
  <div class="manage-container">
32
38
  <span class="manage-label">${this.label}</span>
33
39
  <div class="manage-buttons">
34
- <button class="cancel-btn" @click=${this.cancelClicked}>
40
+ <button class="ia-button dark" @click=${this.cancelClicked}>
35
41
  ${msg('Cancel')}
36
42
  </button>
37
- <button class="remove-btn" @click=${this.removeClicked}>
43
+ <button
44
+ class="ia-button danger"
45
+ ?disabled=${!this.enableRemoveButton}
46
+ @click=${this.removeClicked}
47
+ >
38
48
  ${msg('Remove selected items')}
39
49
  </button>
40
50
  <div class="selection-buttons">
@@ -80,11 +90,12 @@ export class ManageBar extends LitElement {
80
90
 
81
91
  static get styles(): CSSResultGroup {
82
92
  return css`
93
+ ${iaButtonStyle}
83
94
  .manage-container {
84
95
  display: flex;
85
96
  align-items: center;
86
97
  column-gap: 5px;
87
- padding: 10px 0 20px;
98
+ padding: 20px 0 20px;
88
99
  flex-wrap: wrap;
89
100
  }
90
101
 
@@ -101,11 +112,14 @@ export class ManageBar extends LitElement {
101
112
  column-gap: 5px;
102
113
  }
103
114
 
115
+ .ia-button,
104
116
  button {
105
- display: inline-block;
117
+ padding: 6px 12px;
106
118
  font-size: 1.4rem;
107
- cursor: pointer;
108
- white-space: nowrap;
119
+ }
120
+
121
+ .ia-button.danger:disabled {
122
+ opacity: 0.5;
109
123
  }
110
124
 
111
125
  button.link-styled {
@@ -116,36 +130,11 @@ export class ManageBar extends LitElement {
116
130
  background: none;
117
131
  color: var(--ia-theme-link-color, #4b64ff);
118
132
  text-decoration: none;
133
+ cursor: pointer;
119
134
  }
120
135
  button.link-styled:hover {
121
136
  text-decoration: underline;
122
137
  }
123
-
124
- button:not(.link-styled) {
125
- margin: 0;
126
- padding: 6px 12px;
127
- border-radius: 4px;
128
- color: white;
129
- }
130
-
131
- /* Button styles derived from legacy version */
132
- .cancel-btn {
133
- background: #777777;
134
- border: 1px solid #666666;
135
- }
136
- .cancel-btn:hover {
137
- background: #6b6b6b;
138
- border: 1px solid #505050;
139
- }
140
-
141
- .remove-btn {
142
- background: #d9534f;
143
- border: 1px solid #d43f3a;
144
- }
145
- .remove-btn:hover {
146
- background: #d2322d;
147
- border: 1px solid #ac2925;
148
- }
149
138
  `;
150
139
  }
151
140
  }
@@ -73,10 +73,6 @@ export class SortFilterBar
73
73
  @property({ type: Boolean, reflect: true }) enableSortOptionsSlot: boolean =
74
74
  false;
75
75
 
76
- /** Whether to suppress showing the three display mode options on the right of the bar (default `false`) */
77
- @property({ type: Boolean, reflect: true })
78
- suppressDisplayModes: boolean = false;
79
-
80
76
  /** Maps of result counts for letters on the alphabet bar, for each letter filter type */
81
77
  @property({ type: Object }) prefixFilterCountMap?: Record<
82
78
  PrefixFilterType,
@@ -164,13 +160,8 @@ export class SortFilterBar
164
160
  `
165
161
  : html`<slot name="sort-options"></slot>`}
166
162
  </div>
167
- <slot name="sort-options-right"></slot>
168
163
 
169
- ${this.suppressDisplayModes
170
- ? nothing
171
- : html`<div id="display-style-selector">
172
- ${this.displayOptionTemplate}
173
- </div>`}
164
+ <div id="display-style-selector">${this.displayOptionTemplate}</div>
174
165
  </section>
175
166
 
176
167
  ${this.dropdownBackdropVisible ? this.dropdownBackdrop : nothing}
@@ -0,0 +1,107 @@
1
+ import { css } from 'lit';
2
+
3
+ const whiteColor = css`var(--white, #fff)`;
4
+ const disabledButtonFillColor = css`var(--primaryDisableCTAFill, #767676)`;
5
+ const disabledButtonBorderColor = css`var(--secondaryCTABorder, #999)`;
6
+
7
+ const primaryButtonFillColor = css`var(--primaryCTAFill, #194880)`;
8
+ const primaryButtonFillColorRGB = css`var(--primaryCTAFillRGB, 25, 72, 128)`; // RBG format of --primaryCTAFill
9
+ const primaryButtonBorderColor = css`var(--primaryCTABorder, #c5d1df)`;
10
+
11
+ const dangerButtonFillColor = css`var(--primaryErrorCTAFill, #d9534f)`;
12
+ const dangerButtonFillColorRGB = css`var(--primaryErrorCTAFillRGB, 229, 28, 38)`; // RBG format of --primaryErrorCTAFill
13
+ const dangerButtonBorderColor = css`var(--primaryErrorCTABorder, #d43f3a)`;
14
+
15
+ const darkButtonFillColor = css`var(--secondaryCTAFill, #333)`;
16
+ const darkButtonFillColorRGB = css`var(--secondaryCTAFillRGB, 51, 51, 51)`; // RBG format of --secondaryCTAFill
17
+ const darkButtonBorderColor = css`var(--primaryCTABorder, #979797)`;
18
+
19
+ const warningButtonBGColor = css`#ee8950`;
20
+ const warningButtonBorderColor = css`#ec7939`;
21
+
22
+ export default css`
23
+ .ia-button {
24
+ min-height: 3rem;
25
+ cursor: pointer;
26
+ color: ${whiteColor};
27
+ line-height: normal;
28
+ border-radius: 0.4rem;
29
+ font-size: 1.4rem;
30
+ font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
31
+ border: 1px solid transparent;
32
+ white-space: nowrap;
33
+ appearance: auto;
34
+ box-sizing: border-box;
35
+ display: flex;
36
+ align-items: center;
37
+ transition: all 0.1s ease 0s;
38
+ vertical-align: middle;
39
+ padding: 0 3rem;
40
+ outline-color: ${whiteColor};
41
+ outline-offset: -4px;
42
+ user-select: none;
43
+ text-decoration: none;
44
+ width: fit-content;
45
+ -webkit-user-select: none;
46
+ -moz-user-select: none;
47
+ -ms-user-select: none;
48
+ -o-user-select: none;
49
+ }
50
+ .ia-button:focus-visible {
51
+ outline-style: double;
52
+ }
53
+ .ia-button:disabled {
54
+ cursor: not-allowed;
55
+ background-color: ${disabledButtonFillColor};
56
+ border: 1px solid ${disabledButtonBorderColor};
57
+ }
58
+ .ia-button.transparent {
59
+ background-color: transparent;
60
+ }
61
+ .ia-button.warning {
62
+ background-color: ${warningButtonBGColor}
63
+ border-color: ${warningButtonBorderColor};
64
+ }
65
+
66
+ .ia-button.primary {
67
+ background-color: ${primaryButtonFillColor};
68
+ border-color: ${primaryButtonBorderColor};
69
+ }
70
+ .ia-button.primary:hover {
71
+ background-color: rgba(${primaryButtonFillColorRGB}, 0.9);
72
+ }
73
+ .ia-button.primary:focus-visible {
74
+ background-color: rgba(${primaryButtonFillColorRGB}, 0.8);
75
+ }
76
+ .ia-button.primary:active {
77
+ background-color: rgba(${primaryButtonFillColorRGB}, 0.7);
78
+ }
79
+
80
+ .ia-button.danger {
81
+ background-color: ${dangerButtonFillColor};
82
+ border-color: ${dangerButtonBorderColor};
83
+ }
84
+ .ia-button.danger:hover {
85
+ background-color: rgba(${dangerButtonFillColorRGB}, 0.9);
86
+ }
87
+ .ia-button.danger:focus-visible {
88
+ background-color: rgba(${dangerButtonFillColorRGB}, 0.8);
89
+ }
90
+ .ia-button.danger:active {
91
+ background-color: rgba(${dangerButtonFillColorRGB}, 0.7);
92
+ }
93
+
94
+ .ia-button.dark {
95
+ background-color: ${darkButtonFillColor};
96
+ border-color: ${darkButtonBorderColor};
97
+ }
98
+ .ia-button.dark:hover {
99
+ background-color: rgba(${darkButtonFillColorRGB}, 0.9);
100
+ }
101
+ .ia-button.dark:focus-visible {
102
+ background-color: rgba(${darkButtonFillColorRGB}, 0.8);
103
+ }
104
+ .ia-button.dark:active {
105
+ background-color: rgba(${darkButtonFillColorRGB}, 0.7);
106
+ }
107
+ `;
@@ -167,9 +167,7 @@ export class TileDispatcher
167
167
  type="checkbox"
168
168
  title=${this.manageCheckTitle}
169
169
  .checked=${this.model?.checked}
170
- @change=${() => {
171
- if (this.model) this.model.checked = !this.model.checked;
172
- }}
170
+ @change=${this.handleLinkClicked}
173
171
  />
174
172
  </div>
175
173
  `;
@@ -1816,6 +1816,44 @@ describe('Collection Browser', () => {
1816
1816
  expect(el.isManageView).to.be.false;
1817
1817
  });
1818
1818
 
1819
+ it('enable/disable manage view delete button when you selectAll/unselectAll', async () => {
1820
+ const searchService = new MockSearchService();
1821
+ const el = await fixture<CollectionBrowser>(
1822
+ html`<collection-browser .searchService=${searchService}>
1823
+ </collection-browser>`
1824
+ );
1825
+
1826
+ el.baseQuery = 'foo';
1827
+ await el.updateComplete;
1828
+ await el.initialSearchComplete;
1829
+
1830
+ el.isManageView = true;
1831
+ await el.updateComplete;
1832
+
1833
+ const manageBar = el.shadowRoot?.querySelector('manage-bar');
1834
+ expect(manageBar).to.exist;
1835
+
1836
+ // disable button exists
1837
+ expect(manageBar?.shadowRoot?.querySelector('.danger:disabled')).to.be
1838
+ .exist;
1839
+
1840
+ // Emit remove event from manage bar
1841
+ manageBar!.dispatchEvent(new CustomEvent('selectAll'));
1842
+ await el.updateComplete;
1843
+
1844
+ // disable button does not exists
1845
+ expect(manageBar?.shadowRoot?.querySelector('.danger:disabled')).to.be.not
1846
+ .exist;
1847
+
1848
+ // Emit remove event from manage bar
1849
+ manageBar!.dispatchEvent(new CustomEvent('unselectAll'));
1850
+ await el.updateComplete;
1851
+
1852
+ // disable button exists again
1853
+ expect(manageBar?.shadowRoot?.querySelector('.danger:disabled')).to.be
1854
+ .exist;
1855
+ });
1856
+
1819
1857
  it('applies loans tab properties to sort bar', async () => {
1820
1858
  const searchService = new MockSearchService();
1821
1859
  const el = await fixture<CollectionBrowser>(
@@ -45,6 +45,11 @@ describe('Manage bar', () => {
45
45
  expect(el.shadowRoot?.querySelector('.unselect-all-btn')).to.exist;
46
46
  });
47
47
 
48
+ it('have delete button disabled', async () => {
49
+ const el = await fixture<ManageBar>(html`<manage-bar></manage-bar>`);
50
+ expect(el.shadowRoot?.querySelector('.remove-btn:disabled')).to.exist;
51
+ });
52
+
48
53
  it('emits event when Cancel button clicked', async () => {
49
54
  const spy = Sinon.spy();
50
55
  const el = await fixture<ManageBar>(
package/tsconfig.json CHANGED
@@ -1,21 +1,21 @@
1
- {
2
- "compilerOptions": {
3
- "target": "es2018",
4
- "module": "esnext",
5
- "moduleResolution": "node",
6
- "noEmitOnError": true,
7
- "lib": ["es2017", "dom"],
8
- "strict": true,
9
- "esModuleInterop": false,
10
- "allowSyntheticDefaultImports": true,
11
- "experimentalDecorators": true,
12
- "importHelpers": true,
13
- "outDir": "dist",
14
- "sourceMap": true,
15
- "inlineSources": true,
16
- "rootDir": "./",
17
- "declaration": true,
18
- "importsNotUsedAsValues": "error"
19
- },
20
- "include": ["src", "test", "index.ts", "types"],
21
- }
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es2018",
4
+ "module": "esnext",
5
+ "moduleResolution": "node",
6
+ "noEmitOnError": true,
7
+ "lib": ["es2017", "dom"],
8
+ "strict": true,
9
+ "esModuleInterop": false,
10
+ "allowSyntheticDefaultImports": true,
11
+ "experimentalDecorators": true,
12
+ "importHelpers": true,
13
+ "outDir": "dist",
14
+ "sourceMap": true,
15
+ "inlineSources": true,
16
+ "rootDir": "./",
17
+ "declaration": true,
18
+ "importsNotUsedAsValues": "error"
19
+ },
20
+ "include": ["src", "test", "index.ts", "types"],
21
+ }
@@ -1,30 +1,30 @@
1
- // import { hmrPlugin, presets } from '@open-wc/dev-server-hmr';
2
-
3
- /** Use Hot Module replacement by adding --hmr to the start command */
4
- const hmr = process.argv.includes('--hmr');
5
-
6
- export default /** @type {import('@web/dev-server').DevServerConfig} */ ({
7
- nodeResolve: true,
8
- open: '/',
9
- watch: !hmr,
10
-
11
- /** Compile JS for older browsers. Requires @web/dev-server-esbuild plugin */
12
- // esbuildTarget: 'auto'
13
-
14
- /** Set appIndex to enable SPA routing */
15
- // appIndex: 'demo/index.html',
16
-
17
- /** Confgure bare import resolve plugin */
18
- // nodeResolve: {
19
- // exportConditions: ['browser', 'development']
20
- // },
21
-
22
- plugins: [
23
- /** Use Hot Module Replacement by uncommenting. Requires @open-wc/dev-server-hmr plugin */
24
- // hmr && hmrPlugin({ exclude: ['**/*/node_modules/**/*'], presets: [presets.litElement] }),
25
- ],
26
-
27
- http2: true,
28
- sslCert: './local.archive.org.cert',
29
- sslKey: './local.archive.org.key',
30
- });
1
+ // import { hmrPlugin, presets } from '@open-wc/dev-server-hmr';
2
+
3
+ /** Use Hot Module replacement by adding --hmr to the start command */
4
+ const hmr = process.argv.includes('--hmr');
5
+
6
+ export default /** @type {import('@web/dev-server').DevServerConfig} */ ({
7
+ nodeResolve: true,
8
+ open: '/',
9
+ watch: !hmr,
10
+
11
+ /** Compile JS for older browsers. Requires @web/dev-server-esbuild plugin */
12
+ // esbuildTarget: 'auto'
13
+
14
+ /** Set appIndex to enable SPA routing */
15
+ // appIndex: 'demo/index.html',
16
+
17
+ /** Confgure bare import resolve plugin */
18
+ // nodeResolve: {
19
+ // exportConditions: ['browser', 'development']
20
+ // },
21
+
22
+ plugins: [
23
+ /** Use Hot Module Replacement by uncommenting. Requires @open-wc/dev-server-hmr plugin */
24
+ // hmr && hmrPlugin({ exclude: ['**/*/node_modules/**/*'], presets: [presets.litElement] }),
25
+ ],
26
+
27
+ http2: true,
28
+ sslCert: './local.archive.org.cert',
29
+ sslKey: './local.archive.org.key',
30
+ });
@@ -1,41 +1,41 @@
1
- // import { playwrightLauncher } from '@web/test-runner-playwright';
2
-
3
- const filteredLogs = ['Running in dev mode', 'lit-html is in dev mode'];
4
-
5
- export default /** @type {import("@web/test-runner").TestRunnerConfig} */ ({
6
- /** Test files to run */
7
- files: 'dist/test/**/*.test.js',
8
-
9
- /** Resolve bare module imports */
10
- nodeResolve: {
11
- exportConditions: ['browser', 'development'],
12
- },
13
-
14
- /** Filter out lit dev mode logs */
15
- filterBrowserLogs(log) {
16
- for (const arg of log.args) {
17
- if (typeof arg === 'string' && filteredLogs.some(l => arg.includes(l))) {
18
- return false;
19
- }
20
- }
21
- return true;
22
- },
23
-
24
- /** Compile JS for older browsers. Requires @web/dev-server-esbuild plugin */
25
- // esbuildTarget: 'auto',
26
-
27
- /** Amount of browsers to run concurrently */
28
- // concurrentBrowsers: 2,
29
-
30
- /** Amount of test files per browser to test concurrently */
31
- // concurrency: 1,
32
-
33
- /** Browsers to run tests on */
34
- // browsers: [
35
- // playwrightLauncher({ product: 'chromium' }),
36
- // playwrightLauncher({ product: 'firefox' }),
37
- // playwrightLauncher({ product: 'webkit' }),
38
- // ],
39
-
40
- // See documentation for all available options
41
- });
1
+ // import { playwrightLauncher } from '@web/test-runner-playwright';
2
+
3
+ const filteredLogs = ['Running in dev mode', 'lit-html is in dev mode'];
4
+
5
+ export default /** @type {import("@web/test-runner").TestRunnerConfig} */ ({
6
+ /** Test files to run */
7
+ files: 'dist/test/**/*.test.js',
8
+
9
+ /** Resolve bare module imports */
10
+ nodeResolve: {
11
+ exportConditions: ['browser', 'development'],
12
+ },
13
+
14
+ /** Filter out lit dev mode logs */
15
+ filterBrowserLogs(log) {
16
+ for (const arg of log.args) {
17
+ if (typeof arg === 'string' && filteredLogs.some(l => arg.includes(l))) {
18
+ return false;
19
+ }
20
+ }
21
+ return true;
22
+ },
23
+
24
+ /** Compile JS for older browsers. Requires @web/dev-server-esbuild plugin */
25
+ // esbuildTarget: 'auto',
26
+
27
+ /** Amount of browsers to run concurrently */
28
+ // concurrentBrowsers: 2,
29
+
30
+ /** Amount of test files per browser to test concurrently */
31
+ // concurrency: 1,
32
+
33
+ /** Browsers to run tests on */
34
+ // browsers: [
35
+ // playwrightLauncher({ product: 'chromium' }),
36
+ // playwrightLauncher({ product: 'firefox' }),
37
+ // playwrightLauncher({ product: 'webkit' }),
38
+ // ],
39
+
40
+ // See documentation for all available options
41
+ });