@internetarchive/collection-browser 0.4.9 → 0.4.10-alpha.1

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 (243) 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 -50
  12. package/dist/src/app-root.js +278 -278
  13. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  14. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  15. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  16. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  17. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  18. package/dist/src/assets/img/icons/chevron.js +2 -2
  19. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  20. package/dist/src/assets/img/icons/empty-query.js +2 -2
  21. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  22. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  23. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  24. package/dist/src/assets/img/icons/eye.js +2 -2
  25. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  26. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  27. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  28. package/dist/src/assets/img/icons/login-required.js +2 -2
  29. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  30. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  31. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  32. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  33. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  34. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  35. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  36. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  37. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  38. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  39. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  40. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  41. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  42. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  43. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  44. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  45. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  46. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  47. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  48. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  49. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  50. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  51. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  52. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  53. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  54. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  55. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  56. package/dist/src/assets/img/icons/null-result.js +2 -2
  57. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  58. package/dist/src/assets/img/icons/restricted.js +2 -2
  59. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  60. package/dist/src/assets/img/icons/reviews.js +2 -2
  61. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  62. package/dist/src/assets/img/icons/upload.js +2 -2
  63. package/dist/src/assets/img/icons/views.d.ts +1 -1
  64. package/dist/src/assets/img/icons/views.js +2 -2
  65. package/dist/src/circular-activity-indicator.d.ts +5 -5
  66. package/dist/src/circular-activity-indicator.js +17 -17
  67. package/dist/src/collection-browser.d.ts +280 -281
  68. package/dist/src/collection-browser.js +1173 -1202
  69. package/dist/src/collection-browser.js.map +1 -1
  70. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  71. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  72. package/dist/src/collection-facets/facets-template.d.ts +16 -16
  73. package/dist/src/collection-facets/facets-template.js +125 -125
  74. package/dist/src/collection-facets/more-facets-content.d.ts +75 -77
  75. package/dist/src/collection-facets/more-facets-content.js +340 -357
  76. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  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 +81 -83
  80. package/dist/src/collection-facets.js +375 -393
  81. package/dist/src/collection-facets.js.map +1 -1
  82. package/dist/src/empty-placeholder.d.ts +11 -11
  83. package/dist/src/empty-placeholder.js +42 -42
  84. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  85. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  86. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  87. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  88. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  89. package/dist/src/mediatype/mediatype-config.js +85 -85
  90. package/dist/src/models.d.ts +115 -115
  91. package/dist/src/models.js +125 -125
  92. package/dist/src/models.js.map +1 -1
  93. package/dist/src/restoration-state-handler.d.ts +45 -45
  94. package/dist/src/restoration-state-handler.js +230 -230
  95. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  96. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  97. package/dist/src/sort-filter-bar/alpha-bar.d.ts +20 -20
  98. package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
  99. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  100. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  101. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  102. package/dist/src/sort-filter-bar/img/list.js +2 -2
  103. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  104. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  105. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  106. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  107. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +113 -108
  108. package/dist/src/sort-filter-bar/sort-filter-bar.js +614 -548
  109. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  110. package/dist/src/styles/item-image-styles.d.ts +8 -8
  111. package/dist/src/styles/item-image-styles.js +9 -9
  112. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  113. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  114. package/dist/src/tiles/grid/account-tile.d.ts +20 -20
  115. package/dist/src/tiles/grid/account-tile.js +64 -64
  116. package/dist/src/tiles/grid/collection-tile.d.ts +17 -17
  117. package/dist/src/tiles/grid/collection-tile.js +71 -71
  118. package/dist/src/tiles/grid/item-tile.d.ts +32 -32
  119. package/dist/src/tiles/grid/item-tile.js +129 -126
  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 +7 -7
  123. package/dist/src/tiles/grid/tile-stats.d.ts +10 -10
  124. package/dist/src/tiles/grid/tile-stats.js +40 -40
  125. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  126. package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
  127. package/dist/src/tiles/hover/tile-hover-pane.d.ts +15 -15
  128. package/dist/src/tiles/hover/tile-hover-pane.js +38 -38
  129. package/dist/src/tiles/image-block.d.ts +17 -17
  130. package/dist/src/tiles/image-block.js +72 -72
  131. package/dist/src/tiles/item-image.d.ts +35 -35
  132. package/dist/src/tiles/item-image.js +117 -117
  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 +99 -99
  141. package/dist/src/tiles/list/tile-list.d.ts +55 -55
  142. package/dist/src/tiles/list/tile-list.js +301 -301
  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 +58 -58
  154. package/dist/src/tiles/tile-dispatcher.js +194 -194
  155. package/dist/src/utils/analytics-events.d.ts +22 -22
  156. package/dist/src/utils/analytics-events.js +24 -24
  157. package/dist/src/utils/format-count.d.ts +7 -7
  158. package/dist/src/utils/format-count.js +76 -76
  159. package/dist/src/utils/format-date.d.ts +2 -2
  160. package/dist/src/utils/format-date.js +23 -23
  161. package/dist/src/utils/format-unit-size.d.ts +2 -2
  162. package/dist/src/utils/format-unit-size.js +33 -33
  163. package/dist/test/collection-browser.test.d.ts +1 -1
  164. package/dist/test/collection-browser.test.js +584 -584
  165. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  166. package/dist/test/collection-facets/facets-template.test.js +62 -62
  167. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  168. package/dist/test/collection-facets/more-facets-content.test.js +114 -114
  169. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  170. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  171. package/dist/test/collection-facets.test.d.ts +2 -2
  172. package/dist/test/collection-facets.test.js +460 -508
  173. package/dist/test/collection-facets.test.js.map +1 -1
  174. package/dist/test/empty-placeholder.test.d.ts +1 -1
  175. package/dist/test/empty-placeholder.test.js +33 -33
  176. package/dist/test/icon-overlay.test.d.ts +1 -1
  177. package/dist/test/icon-overlay.test.js +24 -24
  178. package/dist/test/image-block.test.d.ts +1 -1
  179. package/dist/test/image-block.test.js +48 -48
  180. package/dist/test/item-image.test.d.ts +1 -1
  181. package/dist/test/item-image.test.js +84 -84
  182. package/dist/test/mediatype-config.test.d.ts +1 -1
  183. package/dist/test/mediatype-config.test.js +16 -16
  184. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  185. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  186. package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
  187. package/dist/test/mocks/mock-collection-name-cache.js +13 -13
  188. package/dist/test/mocks/mock-search-responses.d.ts +12 -12
  189. package/dist/test/mocks/mock-search-responses.js +341 -341
  190. package/dist/test/mocks/mock-search-service.d.ts +13 -13
  191. package/dist/test/mocks/mock-search-service.js +40 -40
  192. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  193. package/dist/test/restoration-state-handler.test.js +125 -125
  194. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  195. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  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 +73 -73
  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 +208 -197
  200. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -1
  201. package/dist/test/text-overlay.test.d.ts +1 -1
  202. package/dist/test/text-overlay.test.js +48 -48
  203. package/dist/test/text-snippet-block.test.d.ts +1 -1
  204. package/dist/test/text-snippet-block.test.js +57 -57
  205. package/dist/test/tile-stats.test.d.ts +1 -1
  206. package/dist/test/tile-stats.test.js +33 -33
  207. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  208. package/dist/test/tiles/grid/account-tile.test.js +76 -76
  209. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  210. package/dist/test/tiles/grid/collection-tile.test.js +73 -73
  211. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  212. package/dist/test/tiles/grid/item-tile.test.js +158 -158
  213. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  214. package/dist/test/tiles/hover/hover-pane-controller.test.js +257 -257
  215. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  216. package/dist/test/tiles/hover/tile-hover-pane.test.js +13 -13
  217. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  218. package/dist/test/tiles/list/tile-list-compact.test.js +92 -92
  219. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  220. package/dist/test/tiles/list/tile-list.test.js +163 -163
  221. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  222. package/dist/test/tiles/tile-dispatcher.test.js +67 -67
  223. package/dist/test/utils/format-count.test.d.ts +1 -1
  224. package/dist/test/utils/format-count.test.js +23 -23
  225. package/dist/test/utils/format-date.test.d.ts +1 -1
  226. package/dist/test/utils/format-date.test.js +17 -17
  227. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  228. package/dist/test/utils/format-unit-size.test.js +17 -17
  229. package/local.archive.org.cert +86 -86
  230. package/local.archive.org.key +27 -27
  231. package/package.json +4 -3
  232. package/renovate.json +6 -6
  233. package/src/collection-browser.ts +1 -34
  234. package/src/collection-facets/more-facets-content.ts +2 -22
  235. package/src/collection-facets.ts +1 -24
  236. package/src/models.ts +6 -6
  237. package/src/sort-filter-bar/sort-filter-bar.ts +283 -197
  238. package/src/tiles/grid/item-tile.ts +5 -1
  239. package/test/collection-facets.test.ts +0 -67
  240. package/test/sort-filter-bar/sort-filter-bar.test.ts +56 -39
  241. package/tsconfig.json +21 -21
  242. package/web-dev-server.config.mjs +30 -30
  243. package/web-test-runner.config.mjs +41 -41
@@ -35,6 +35,10 @@ export class ItemTile extends LitElement {
35
35
 
36
36
  render() {
37
37
  const itemTitle = this.model?.title;
38
+ const viewCount =
39
+ this.sortParam?.field === 'week'
40
+ ? this.model?.weeklyViewCount // weekly views
41
+ : this.model?.viewCount; // all-time views
38
42
 
39
43
  return html`
40
44
  <div class="container">
@@ -58,7 +62,7 @@ export class ItemTile extends LitElement {
58
62
 
59
63
  <tile-stats
60
64
  .mediatype=${this.model?.mediatype}
61
- .viewCount=${this.model?.viewCount}
65
+ .viewCount=${viewCount}
62
66
  .favCount=${this.model?.favCount}
63
67
  .commentCount=${this.model?.commentCount}
64
68
  >
@@ -11,10 +11,6 @@ import type { CollectionFacets } from '../src/collection-facets';
11
11
  import '@internetarchive/modal-manager';
12
12
  import '../src/collection-facets';
13
13
  import type { FacetOption, SelectedFacets } from '../src/models';
14
- import {
15
- LanguageCodeHandler,
16
- LanguageCodeHandlerInterface,
17
- } from '../src/language-code-handler/language-code-handler';
18
14
  import { MockAnalyticsHandler } from './mocks/mock-analytics-handler';
19
15
 
20
16
  describe('Collection Facets', () => {
@@ -259,69 +255,6 @@ describe('Collection Facets', () => {
259
255
  expect(collectionLink).to.exist;
260
256
  });
261
257
 
262
- it('renders language facets with their human-readable names', async () => {
263
- const el = await fixture<CollectionFacets>(
264
- html`<collection-facets></collection-facets>`
265
- );
266
-
267
- const languageCodeHandler: LanguageCodeHandlerInterface =
268
- new LanguageCodeHandler();
269
-
270
- const aggs: Record<string, Aggregation> = {
271
- language: new Aggregation({
272
- buckets: [
273
- {
274
- key: 'English',
275
- doc_count: 3,
276
- },
277
- ],
278
- }),
279
- };
280
-
281
- el.languageCodeHandler = languageCodeHandler;
282
- el.aggregations = aggs;
283
- await el.updateComplete;
284
-
285
- const facetsTemplate = el.shadowRoot?.querySelector('facets-template');
286
- const languageTitle =
287
- facetsTemplate?.shadowRoot?.querySelector('.facet-title');
288
- expect(languageTitle?.textContent?.trim()).to.equal('English');
289
- });
290
-
291
- it('renders selected/negative language facets with human-readable names', async () => {
292
- const el = await fixture<CollectionFacets>(
293
- html`<collection-facets></collection-facets>`
294
- );
295
-
296
- const languageCodeHandler: LanguageCodeHandlerInterface =
297
- new LanguageCodeHandler();
298
-
299
- const selectedFacets: SelectedFacets = {
300
- subject: {},
301
- lending: {},
302
- mediatype: {},
303
- language: {
304
- en: {
305
- key: 'en',
306
- count: 5,
307
- state: 'selected',
308
- },
309
- },
310
- creator: {},
311
- collection: {},
312
- year: {},
313
- };
314
-
315
- el.languageCodeHandler = languageCodeHandler;
316
- el.selectedFacets = selectedFacets;
317
- await el.updateComplete;
318
-
319
- const facetsTemplate = el.shadowRoot?.querySelector('facets-template');
320
- const languageTitle =
321
- facetsTemplate?.shadowRoot?.querySelector('.facet-title');
322
- expect(languageTitle?.textContent?.trim()).to.equal('English');
323
- });
324
-
325
258
  it('renders lending facets with human-readable names', async () => {
326
259
  const el = await fixture<CollectionFacets>(
327
260
  html`<collection-facets></collection-facets>`
@@ -1,6 +1,7 @@
1
1
  /* eslint-disable import/no-duplicates */
2
2
  import { expect, fixture } from '@open-wc/testing';
3
3
  import { html } from 'lit';
4
+ import type { IaDropdown } from '@internetarchive/ia-dropdown';
4
5
  import type { SortFilterBar } from '../../src/sort-filter-bar/sort-filter-bar';
5
6
  import type { SortField } from '../../src/models';
6
7
 
@@ -44,81 +45,97 @@ describe('Sort selector default buttons', async () => {
44
45
  <sort-filter-bar> </sort-filter-bar>
45
46
  `);
46
47
  const sortSelectorContainer = el.shadowRoot?.querySelector(
48
+ '#sort-selector-container'
49
+ );
50
+ const desktopSortSelector = sortSelectorContainer?.querySelector(
47
51
  '#desktop-sort-selector'
48
52
  );
49
53
 
54
+ it('should render basic component', async () => {
55
+ expect(sortSelectorContainer).to.exist;
56
+ expect(desktopSortSelector).to.exist;
57
+ });
58
+
50
59
  it('should render sort-by label', async () => {
51
- expect(sortSelectorContainer?.children.item(0)?.textContent).to.equal(
52
- 'Sort By'
60
+ const sortByLabel = sortSelectorContainer?.querySelector('#sort-by-text');
61
+ expect(sortByLabel).to.exist;
62
+ expect(sortByLabel?.textContent?.trim()).to.equal('Sort by');
63
+ });
64
+
65
+ it('should render sort direction buttons', async () => {
66
+ const sortDirections = sortSelectorContainer?.querySelector(
67
+ '#sort-direction-container'
53
68
  );
69
+ expect(sortDirections).to.exist;
70
+ expect(sortDirections?.querySelectorAll('.sort-button').length).to.equal(2);
54
71
  });
55
72
 
56
73
  it('should render default relevance-sort selector', async () => {
57
- const defaultSortSelector = sortSelectorContainer?.children
58
- .item(1)
59
- ?.querySelector('a');
74
+ const defaultSortSelector = desktopSortSelector?.querySelector('a');
60
75
  expect(defaultSortSelector?.textContent).to.contain('Relevance');
61
76
  expect(defaultSortSelector?.getAttribute('class')).to.equal('selected');
62
77
  });
63
78
 
64
79
  it('should render default view-sort selector', async () => {
65
- const defaultSortSelector = sortSelectorContainer?.children
66
- .item(2)
67
- ?.querySelector('a');
68
- expect(defaultSortSelector?.textContent).to.contain('Weekly Views');
80
+ const defaultSortSelector = desktopSortSelector?.children
81
+ .item(1)
82
+ ?.querySelector('ia-dropdown');
83
+ expect(defaultSortSelector?.textContent).to.contain('Weekly views');
69
84
  });
70
85
 
71
86
  it('should render active view-sort selectors', async () => {
72
87
  el.selectedSort = 'alltimeview' as SortField;
73
88
  await el.updateComplete;
74
89
 
75
- const defaultSortSelector =
76
- sortSelectorContainer?.querySelector('a.selected');
77
- expect(defaultSortSelector?.textContent).to.contain('All-time Views');
90
+ const defaultSortSelector = desktopSortSelector?.querySelector(
91
+ 'ia-dropdown.selected'
92
+ );
93
+ expect(defaultSortSelector?.textContent).to.contain('All-time views');
78
94
  });
79
95
 
80
96
  it('should render default title-sort selector', async () => {
81
- const defaultSortSelector = sortSelectorContainer?.children
82
- .item(3)
97
+ const defaultSortSelector = desktopSortSelector?.children
98
+ .item(2)
83
99
  ?.querySelector('a');
84
100
  expect(defaultSortSelector?.textContent).to.contain('Title');
85
101
  });
86
102
 
87
103
  it('should render default date-sort selector', async () => {
88
- const defaultSortSelector = sortSelectorContainer?.children
89
- .item(4)
90
- ?.querySelector('a');
91
- expect(defaultSortSelector?.textContent).to.contain('Date Published');
104
+ const defaultSortSelector = desktopSortSelector?.children
105
+ .item(3)
106
+ ?.querySelector('ia-dropdown');
107
+ expect(defaultSortSelector?.textContent).to.contain('Date published');
92
108
  });
93
109
 
94
110
  it('should render active date-sort selectors', async () => {
95
111
  el.selectedSort = 'datereviewed' as SortField;
96
112
  await el.updateComplete;
97
113
 
98
- const defaultSortSelector =
99
- sortSelectorContainer?.querySelector('a.selected');
100
- expect(defaultSortSelector?.textContent).to.contain('Date Reviewed');
114
+ const defaultSortSelector = desktopSortSelector?.querySelector(
115
+ 'ia-dropdown.selected'
116
+ );
117
+ expect(defaultSortSelector?.textContent).to.contain('Date reviewed');
101
118
  });
102
119
 
103
120
  it('should render default creator-sort selector', async () => {
104
- const defaultSortSelector = sortSelectorContainer?.children
105
- .item(5)
121
+ const defaultSortSelector = desktopSortSelector?.children
122
+ .item(4)
106
123
  ?.querySelector('a');
107
124
  expect(defaultSortSelector?.textContent).to.contain('Creator');
108
125
  });
109
126
 
110
127
  it('click event on view-sort selector', async () => {
111
- const defaultSortSelector = sortSelectorContainer?.children
112
- .item(2)
113
- ?.querySelector('a');
128
+ const defaultSortSelector = desktopSortSelector?.children
129
+ .item(1)
130
+ ?.querySelector('ia-dropdown') as IaDropdown;
114
131
 
115
132
  await defaultSortSelector?.click();
116
133
  expect(el.selectedSort).to.equal('weeklyview');
117
134
  });
118
135
 
119
136
  it('click event on title selector', async () => {
120
- const defaultSortSelector = sortSelectorContainer?.children
121
- .item(3)
137
+ const defaultSortSelector = desktopSortSelector?.children
138
+ .item(2)
122
139
  ?.querySelector('a');
123
140
 
124
141
  await defaultSortSelector?.click();
@@ -126,17 +143,17 @@ describe('Sort selector default buttons', async () => {
126
143
  });
127
144
 
128
145
  it('click event on date-sort selector', async () => {
129
- const defaultSortSelector = sortSelectorContainer?.children
130
- .item(4)
131
- ?.querySelector('a');
146
+ const defaultSortSelector = desktopSortSelector?.children
147
+ .item(3)
148
+ ?.querySelector('ia-dropdown') as IaDropdown;
132
149
 
133
150
  await defaultSortSelector?.click();
134
151
  expect(el.selectedSort).to.equal('date');
135
152
  });
136
153
 
137
154
  it('click event on creator selector', async () => {
138
- const defaultSortSelector = sortSelectorContainer?.children
139
- .item(5)
155
+ const defaultSortSelector = desktopSortSelector?.children
156
+ .item(4)
140
157
  ?.querySelector('a');
141
158
 
142
159
  await defaultSortSelector?.click();
@@ -246,15 +263,15 @@ describe('Sort/filter bar mobile view', () => {
246
263
  <sort-filter-bar></sort-filter-bar>
247
264
  `);
248
265
 
249
- const mobileSortSelector = el.shadowRoot?.querySelector(
250
- '#mobile-sort-selector'
266
+ const mobileSortContainer = el.shadowRoot?.querySelector(
267
+ '#mobile-sort-container'
251
268
  );
252
- const desktopSortSelector = el.shadowRoot?.querySelector(
253
- '#desktop-sort-selector'
269
+ const desktopSortContainer = el.shadowRoot?.querySelector(
270
+ '#desktop-sort-container'
254
271
  );
255
272
 
256
- expect(mobileSortSelector?.classList?.contains('visible')).to.be.true;
257
- expect(desktopSortSelector?.classList?.contains('hidden')).to.be.true;
273
+ expect(mobileSortContainer?.classList?.contains('visible')).to.be.true;
274
+ expect(desktopSortContainer?.classList?.contains('hidden')).to.be.true;
258
275
  });
259
276
 
260
277
  it('changes selected sort in mobile view', async () => {
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
+ });