@internetarchive/collection-browser 0.3.8 → 0.3.9

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 (204) 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 +48 -48
  12. package/dist/src/app-root.js +258 -258
  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 +278 -278
  68. package/dist/src/collection-browser.js +1105 -1105
  69. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  70. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  71. package/dist/src/collection-facets/facets-template.d.ts +16 -16
  72. package/dist/src/collection-facets/facets-template.js +125 -125
  73. package/dist/src/collection-facets/more-facets-content.d.ts +76 -76
  74. package/dist/src/collection-facets/more-facets-content.js +353 -353
  75. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  76. package/dist/src/collection-facets/more-facets-pagination.js +192 -192
  77. package/dist/src/collection-facets.d.ts +77 -77
  78. package/dist/src/collection-facets.js +388 -388
  79. package/dist/src/empty-placeholder.d.ts +11 -11
  80. package/dist/src/empty-placeholder.js +42 -42
  81. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  82. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  83. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  84. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  85. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  86. package/dist/src/mediatype/mediatype-config.js +85 -85
  87. package/dist/src/models.d.ts +103 -103
  88. package/dist/src/models.js +117 -117
  89. package/dist/src/restoration-state-handler.d.ts +46 -46
  90. package/dist/src/restoration-state-handler.js +230 -230
  91. package/dist/src/sort-filter-bar/alpha-bar.d.ts +9 -9
  92. package/dist/src/sort-filter-bar/alpha-bar.js +41 -41
  93. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  94. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  95. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  96. package/dist/src/sort-filter-bar/img/list.js +2 -2
  97. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  98. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  99. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  100. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  101. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +107 -107
  102. package/dist/src/sort-filter-bar/sort-filter-bar.js +423 -423
  103. package/dist/src/styles/item-image-styles.d.ts +8 -8
  104. package/dist/src/styles/item-image-styles.js +9 -9
  105. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  106. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  107. package/dist/src/tiles/grid/account-tile.d.ts +8 -8
  108. package/dist/src/tiles/grid/account-tile.js +20 -20
  109. package/dist/src/tiles/grid/collection-tile.d.ts +7 -7
  110. package/dist/src/tiles/grid/collection-tile.js +23 -23
  111. package/dist/src/tiles/grid/item-tile.d.ts +24 -24
  112. package/dist/src/tiles/grid/item-tile.js +87 -87
  113. package/dist/src/tiles/grid/tile-stats.d.ts +10 -10
  114. package/dist/src/tiles/grid/tile-stats.js +40 -40
  115. package/dist/src/tiles/image-block.d.ts +17 -17
  116. package/dist/src/tiles/image-block.js +69 -69
  117. package/dist/src/tiles/item-image.d.ts +31 -31
  118. package/dist/src/tiles/item-image.js +103 -103
  119. package/dist/src/tiles/list/account-label.d.ts +1 -1
  120. package/dist/src/tiles/list/account-label.js +6 -6
  121. package/dist/src/tiles/list/date-label.d.ts +1 -1
  122. package/dist/src/tiles/list/date-label.js +12 -12
  123. package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
  124. package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
  125. package/dist/src/tiles/list/tile-list-compact.d.ts +21 -21
  126. package/dist/src/tiles/list/tile-list-compact.js +93 -93
  127. package/dist/src/tiles/list/tile-list.d.ts +50 -50
  128. package/dist/src/tiles/list/tile-list.js +280 -275
  129. package/dist/src/tiles/list/tile-list.js.map +1 -1
  130. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  131. package/dist/src/tiles/mediatype-icon.js +47 -47
  132. package/dist/src/tiles/overlay/icon-overlay.d.ts +7 -7
  133. package/dist/src/tiles/overlay/icon-overlay.js +30 -30
  134. package/dist/src/tiles/overlay/text-overlay.d.ts +8 -8
  135. package/dist/src/tiles/overlay/text-overlay.js +31 -31
  136. package/dist/src/tiles/text-snippet-block.d.ts +29 -29
  137. package/dist/src/tiles/text-snippet-block.js +81 -81
  138. package/dist/src/tiles/tile-dispatcher.d.ts +36 -36
  139. package/dist/src/tiles/tile-dispatcher.js +128 -128
  140. package/dist/src/utils/analytics-events.d.ts +22 -22
  141. package/dist/src/utils/analytics-events.js +24 -24
  142. package/dist/src/utils/format-count.d.ts +7 -7
  143. package/dist/src/utils/format-count.js +76 -76
  144. package/dist/src/utils/format-date.d.ts +2 -2
  145. package/dist/src/utils/format-date.js +23 -23
  146. package/dist/test/collection-browser.test.d.ts +1 -1
  147. package/dist/test/collection-browser.test.js +575 -575
  148. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  149. package/dist/test/collection-facets/facets-template.test.js +62 -62
  150. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  151. package/dist/test/collection-facets/more-facets-content.test.js +114 -114
  152. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  153. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  154. package/dist/test/collection-facets.test.d.ts +2 -2
  155. package/dist/test/collection-facets.test.js +544 -544
  156. package/dist/test/empty-placeholder.test.d.ts +1 -1
  157. package/dist/test/empty-placeholder.test.js +33 -33
  158. package/dist/test/icon-overlay.test.d.ts +1 -1
  159. package/dist/test/icon-overlay.test.js +24 -24
  160. package/dist/test/image-block.test.d.ts +1 -1
  161. package/dist/test/image-block.test.js +48 -48
  162. package/dist/test/item-image.test.d.ts +1 -1
  163. package/dist/test/item-image.test.js +56 -56
  164. package/dist/test/mediatype-config.test.d.ts +1 -1
  165. package/dist/test/mediatype-config.test.js +16 -16
  166. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  167. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  168. package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
  169. package/dist/test/mocks/mock-collection-name-cache.js +13 -13
  170. package/dist/test/mocks/mock-search-responses.d.ts +10 -10
  171. package/dist/test/mocks/mock-search-responses.js +271 -271
  172. package/dist/test/mocks/mock-search-service.d.ts +13 -13
  173. package/dist/test/mocks/mock-search-service.js +36 -36
  174. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  175. package/dist/test/restoration-state-handler.test.js +126 -126
  176. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  177. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +113 -113
  178. package/dist/test/text-overlay.test.d.ts +1 -1
  179. package/dist/test/text-overlay.test.js +41 -41
  180. package/dist/test/text-snippet-block.test.d.ts +1 -1
  181. package/dist/test/text-snippet-block.test.js +57 -57
  182. package/dist/test/tile-stats.test.d.ts +1 -1
  183. package/dist/test/tile-stats.test.js +33 -33
  184. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  185. package/dist/test/tiles/grid/item-tile.test.js +107 -107
  186. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  187. package/dist/test/tiles/list/tile-list-compact.test.js +92 -92
  188. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  189. package/dist/test/tiles/list/tile-list.test.js +136 -92
  190. package/dist/test/tiles/list/tile-list.test.js.map +1 -1
  191. package/dist/test/utils/format-count.test.d.ts +1 -1
  192. package/dist/test/utils/format-count.test.js +23 -23
  193. package/dist/test/utils/format-date.test.d.ts +1 -1
  194. package/dist/test/utils/format-date.test.js +17 -17
  195. package/index.html +24 -24
  196. package/local.archive.org.cert +86 -86
  197. package/local.archive.org.key +27 -27
  198. package/package.json +1 -1
  199. package/renovate.json +6 -6
  200. package/src/tiles/list/tile-list.ts +12 -5
  201. package/test/tiles/list/tile-list.test.ts +51 -0
  202. package/tsconfig.json +21 -21
  203. package/web-dev-server.config.mjs +30 -30
  204. package/web-test-runner.config.mjs +41 -41
@@ -1,130 +1,130 @@
1
- /* eslint-disable import/no-duplicates */
2
- import { expect, fixture } from '@open-wc/testing';
3
- import { html } from 'lit';
4
- import '../../../src/tiles/list/tile-list-compact';
5
- describe('List Tile Compact', () => {
6
- it('should render initial component', async () => {
7
- var _a, _b, _c, _d, _e;
8
- const el = await fixture(html `<tile-list-compact></tile-list-compact>`);
9
- const listContainer = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#list-line');
10
- const itemTitle = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#title');
11
- const imageBlock = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('image-block');
12
- const itemIcon = (_d = el.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('#icon');
13
- const itemViews = (_e = el.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector('#views');
14
- expect(listContainer).to.exist;
15
- expect(itemTitle).to.exist;
16
- expect(imageBlock).to.exist;
17
- expect(itemIcon).to.exist;
18
- expect(itemViews).to.exist;
19
- });
20
- it('should render with creator element with title', async () => {
21
- var _a;
1
+ /* eslint-disable import/no-duplicates */
2
+ import { expect, fixture } from '@open-wc/testing';
3
+ import { html } from 'lit';
4
+ import '../../../src/tiles/list/tile-list-compact';
5
+ describe('List Tile Compact', () => {
6
+ it('should render initial component', async () => {
7
+ var _a, _b, _c, _d, _e;
8
+ const el = await fixture(html `<tile-list-compact></tile-list-compact>`);
9
+ const listContainer = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#list-line');
10
+ const itemTitle = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#title');
11
+ const imageBlock = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('image-block');
12
+ const itemIcon = (_d = el.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('#icon');
13
+ const itemViews = (_e = el.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector('#views');
14
+ expect(listContainer).to.exist;
15
+ expect(itemTitle).to.exist;
16
+ expect(imageBlock).to.exist;
17
+ expect(itemIcon).to.exist;
18
+ expect(itemViews).to.exist;
19
+ });
20
+ it('should render with creator element with title', async () => {
21
+ var _a;
22
22
  const el = await fixture(html `
23
23
  <tile-list-compact
24
24
  .model=${{ creators: ['someone'] }}
25
25
  ></tile-list-compact>
26
- `);
27
- const creator = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#creator');
28
- expect(creator).to.exist;
29
- });
30
- it('should render weekly views when sorting by week', async () => {
31
- var _a, _b;
26
+ `);
27
+ const creator = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#creator');
28
+ expect(creator).to.exist;
29
+ });
30
+ it('should render weekly views when sorting by week', async () => {
31
+ var _a, _b;
32
32
  const el = await fixture(html `
33
33
  <tile-list-compact
34
34
  .model=${{ viewCount: 50, weeklyViewCount: 10 }}
35
35
  .sortParam=${{ field: 'week', direction: 'desc' }}
36
36
  >
37
37
  </tile-list-compact>
38
- `);
39
- const viewsColumn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('views');
40
- expect(viewsColumn).to.exist;
41
- expect((_b = viewsColumn === null || viewsColumn === void 0 ? void 0 : viewsColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('10');
42
- });
43
- it('should render 0 for views if missing model', async () => {
44
- var _a, _b;
38
+ `);
39
+ const viewsColumn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('views');
40
+ expect(viewsColumn).to.exist;
41
+ expect((_b = viewsColumn === null || viewsColumn === void 0 ? void 0 : viewsColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('10');
42
+ });
43
+ it('should render 0 for views if missing model', async () => {
44
+ var _a, _b;
45
45
  const el = await fixture(html `
46
46
  <tile-list-compact .sortParam=${{ field: 'week', direction: 'desc' }}>
47
47
  </tile-list-compact>
48
- `);
49
- const viewsColumn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('views');
50
- expect(viewsColumn).to.exist;
51
- expect((_b = viewsColumn === null || viewsColumn === void 0 ? void 0 : viewsColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('0');
52
- });
53
- it('should render published date when sorting by it', async () => {
54
- var _a, _b;
55
- const model = {
56
- dateAdded: new Date('2010-01-01'),
57
- dateArchived: new Date('2011-01-01'),
58
- datePublished: new Date('2012-01-01'),
59
- dateReviewed: new Date('2013-01-01'),
60
- };
48
+ `);
49
+ const viewsColumn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('views');
50
+ expect(viewsColumn).to.exist;
51
+ expect((_b = viewsColumn === null || viewsColumn === void 0 ? void 0 : viewsColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('0');
52
+ });
53
+ it('should render published date when sorting by it', async () => {
54
+ var _a, _b;
55
+ const model = {
56
+ dateAdded: new Date('2010-01-01'),
57
+ dateArchived: new Date('2011-01-01'),
58
+ datePublished: new Date('2012-01-01'),
59
+ dateReviewed: new Date('2013-01-01'),
60
+ };
61
61
  const el = await fixture(html `
62
62
  <tile-list-compact
63
63
  .model=${model}
64
64
  .sortParam=${{ field: 'date', direction: 'desc' }}
65
65
  >
66
66
  </tile-list-compact>
67
- `);
68
- const dateColumn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('date');
69
- expect(dateColumn).to.exist;
70
- expect((_b = dateColumn === null || dateColumn === void 0 ? void 0 : dateColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Jan 01, 2012');
71
- });
72
- it('should render added date when sorting by it', async () => {
73
- var _a, _b;
74
- const model = {
75
- dateAdded: new Date('2010-01-01'),
76
- dateArchived: new Date('2011-01-01'),
77
- datePublished: new Date('2012-01-01'),
78
- dateReviewed: new Date('2013-01-01'),
79
- };
67
+ `);
68
+ const dateColumn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('date');
69
+ expect(dateColumn).to.exist;
70
+ expect((_b = dateColumn === null || dateColumn === void 0 ? void 0 : dateColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Jan 01, 2012');
71
+ });
72
+ it('should render added date when sorting by it', async () => {
73
+ var _a, _b;
74
+ const model = {
75
+ dateAdded: new Date('2010-01-01'),
76
+ dateArchived: new Date('2011-01-01'),
77
+ datePublished: new Date('2012-01-01'),
78
+ dateReviewed: new Date('2013-01-01'),
79
+ };
80
80
  const el = await fixture(html `
81
81
  <tile-list-compact
82
82
  .model=${model}
83
83
  .sortParam=${{ field: 'addeddate', direction: 'desc' }}
84
84
  >
85
85
  </tile-list-compact>
86
- `);
87
- const dateColumn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('date');
88
- expect(dateColumn).to.exist;
89
- expect((_b = dateColumn === null || dateColumn === void 0 ? void 0 : dateColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Jan 01, 2010');
90
- });
91
- it('should render archived date when sorting by it', async () => {
92
- var _a, _b;
93
- const model = {
94
- dateAdded: new Date('2010-01-01'),
95
- dateArchived: new Date('2011-01-01'),
96
- datePublished: new Date('2012-01-01'),
97
- dateReviewed: new Date('2013-01-01'),
98
- };
86
+ `);
87
+ const dateColumn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('date');
88
+ expect(dateColumn).to.exist;
89
+ expect((_b = dateColumn === null || dateColumn === void 0 ? void 0 : dateColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Jan 01, 2010');
90
+ });
91
+ it('should render archived date when sorting by it', async () => {
92
+ var _a, _b;
93
+ const model = {
94
+ dateAdded: new Date('2010-01-01'),
95
+ dateArchived: new Date('2011-01-01'),
96
+ datePublished: new Date('2012-01-01'),
97
+ dateReviewed: new Date('2013-01-01'),
98
+ };
99
99
  const el = await fixture(html `
100
100
  <tile-list-compact
101
101
  .model=${model}
102
102
  .sortParam=${{ field: 'publicdate', direction: 'desc' }}
103
103
  >
104
104
  </tile-list-compact>
105
- `);
106
- const dateColumn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('date');
107
- expect(dateColumn).to.exist;
108
- expect((_b = dateColumn === null || dateColumn === void 0 ? void 0 : dateColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Jan 01, 2011');
109
- });
110
- it('should render reviewed date when sorting by it', async () => {
111
- var _a, _b;
112
- const model = {
113
- dateAdded: new Date('2010-01-01'),
114
- dateArchived: new Date('2011-01-01'),
115
- datePublished: new Date('2012-01-01'),
116
- dateReviewed: new Date('2013-01-01'),
117
- };
105
+ `);
106
+ const dateColumn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('date');
107
+ expect(dateColumn).to.exist;
108
+ expect((_b = dateColumn === null || dateColumn === void 0 ? void 0 : dateColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Jan 01, 2011');
109
+ });
110
+ it('should render reviewed date when sorting by it', async () => {
111
+ var _a, _b;
112
+ const model = {
113
+ dateAdded: new Date('2010-01-01'),
114
+ dateArchived: new Date('2011-01-01'),
115
+ datePublished: new Date('2012-01-01'),
116
+ dateReviewed: new Date('2013-01-01'),
117
+ };
118
118
  const el = await fixture(html `
119
119
  <tile-list-compact
120
120
  .model=${model}
121
121
  .sortParam=${{ field: 'reviewdate', direction: 'desc' }}
122
122
  >
123
123
  </tile-list-compact>
124
- `);
125
- const dateColumn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('date');
126
- expect(dateColumn).to.exist;
127
- expect((_b = dateColumn === null || dateColumn === void 0 ? void 0 : dateColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Jan 01, 2013');
128
- });
129
- });
124
+ `);
125
+ const dateColumn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('date');
126
+ expect(dateColumn).to.exist;
127
+ expect((_b = dateColumn === null || dateColumn === void 0 ? void 0 : dateColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Jan 01, 2013');
128
+ });
129
+ });
130
130
  //# sourceMappingURL=tile-list-compact.test.js.map
@@ -1 +1 @@
1
- import '../../../src/tiles/list/tile-list';
1
+ import '../../../src/tiles/list/tile-list';
@@ -1,120 +1,164 @@
1
- /* eslint-disable import/no-duplicates */
2
- import { expect, fixture } from '@open-wc/testing';
3
- import { html } from 'lit';
4
- import '../../../src/tiles/list/tile-list';
5
- import { MockCollectionNameCache } from '../../mocks/mock-collection-name-cache';
6
- describe('List Tile', () => {
7
- it('should render initial component', async () => {
8
- var _a, _b, _c;
9
- const el = await fixture(html `<tile-list></tile-list>`);
10
- const listContainer = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#list-line');
11
- const itemTitle = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#title');
12
- const imageBlock = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('image-block');
13
- expect(listContainer).to.exist;
14
- expect(itemTitle).to.exist;
15
- expect(imageBlock).to.exist;
16
- });
17
- it('should render with creator element but not dates', async () => {
18
- var _a, _b;
1
+ /* eslint-disable import/no-duplicates */
2
+ import { expect, fixture } from '@open-wc/testing';
3
+ import { html } from 'lit';
4
+ import '../../../src/tiles/list/tile-list';
5
+ import { MockCollectionNameCache } from '../../mocks/mock-collection-name-cache';
6
+ describe('List Tile', () => {
7
+ it('should render initial component', async () => {
8
+ var _a, _b, _c;
9
+ const el = await fixture(html `<tile-list></tile-list>`);
10
+ const listContainer = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#list-line');
11
+ const itemTitle = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#title');
12
+ const imageBlock = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('image-block');
13
+ expect(listContainer).to.exist;
14
+ expect(itemTitle).to.exist;
15
+ expect(imageBlock).to.exist;
16
+ });
17
+ it('should render the mobile template if below mobile breakpoint', async () => {
18
+ var _a, _b, _c;
19
+ const el = await fixture(html `
20
+ <tile-list .mobileBreakpoint=${500} .currentWidth=${400}> </tile-list>
21
+ `);
22
+ const listContainer = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('list-line');
23
+ const topLine = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.getElementById('list-line-top');
24
+ const bottomLine = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.getElementById('list-line-bottom');
25
+ expect(listContainer).to.exist;
26
+ expect(listContainer === null || listContainer === void 0 ? void 0 : listContainer.classList.contains('mobile')).to.be.true;
27
+ expect(topLine).to.exist;
28
+ expect(bottomLine).to.exist;
29
+ });
30
+ it('should render with creator element but not dates', async () => {
31
+ var _a, _b;
19
32
  const el = await fixture(html `
20
33
  <tile-list .model=${{ creators: ['someone'] }}></tile-list>
21
- `);
22
- const creator = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#creator');
23
- const datesLine = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#dates-line');
24
- expect(creator).to.exist;
25
- expect(datesLine === null || datesLine === void 0 ? void 0 : datesLine.children.length).to.equal(0);
26
- });
27
- it('should render with snippet block when it has snippets', async () => {
28
- var _a;
34
+ `);
35
+ const creator = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#creator');
36
+ const datesLine = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#dates-line');
37
+ expect(creator).to.exist;
38
+ expect(datesLine === null || datesLine === void 0 ? void 0 : datesLine.children.length).to.equal(0);
39
+ });
40
+ it('should render with snippet block when it has snippets', async () => {
41
+ var _a;
29
42
  const el = await fixture(html `
30
43
  <tile-list .model=${{ snippets: ['some {{{snippet}}} text'] }}>
31
44
  </tile-list>
32
- `);
33
- const snippetBlock = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('text-snippet-block');
34
- expect(snippetBlock).to.exist;
35
- });
36
- it('should not render snippet block when no snippets are present', async () => {
37
- var _a;
38
- const el = await fixture(html `<tile-list></tile-list>`);
39
- const snippetBlock = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('text-snippet-block');
40
- expect(snippetBlock).to.not.exist;
41
- });
42
- it('should not render suppressed collections', async () => {
43
- var _a;
44
- const collectionNameCache = new MockCollectionNameCache();
45
+ `);
46
+ const snippetBlock = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('text-snippet-block');
47
+ expect(snippetBlock).to.exist;
48
+ });
49
+ it('should not render snippet block when no snippets are present', async () => {
50
+ var _a;
51
+ const el = await fixture(html `<tile-list></tile-list>`);
52
+ const snippetBlock = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('text-snippet-block');
53
+ expect(snippetBlock).to.not.exist;
54
+ });
55
+ it('should not render suppressed collections', async () => {
56
+ var _a;
57
+ const collectionNameCache = new MockCollectionNameCache();
45
58
  const el = await fixture(html `
46
59
  <tile-list
47
60
  .model=${{ collections: ['deemphasize', 'community', 'foo'] }}
48
61
  .collectionNameCache=${collectionNameCache}
49
62
  >
50
63
  </tile-list>
51
- `);
52
- const collectionsRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('collections');
53
- expect(collectionsRow).to.exist;
54
- const collectionLinks = collectionsRow === null || collectionsRow === void 0 ? void 0 : collectionsRow.querySelectorAll('a[href]');
55
- expect(collectionLinks === null || collectionLinks === void 0 ? void 0 : collectionLinks.length).to.equal(1);
56
- expect(collectionLinks === null || collectionLinks === void 0 ? void 0 : collectionLinks.item(0).getAttribute('href')).to.equal('/details/foo');
57
- });
58
- it('should render weekly views when sorting by week', async () => {
59
- var _a, _b;
64
+ `);
65
+ const collectionsRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('collections');
66
+ expect(collectionsRow).to.exist;
67
+ const collectionLinks = collectionsRow === null || collectionsRow === void 0 ? void 0 : collectionsRow.querySelectorAll('a[href]');
68
+ expect(collectionLinks === null || collectionLinks === void 0 ? void 0 : collectionLinks.length).to.equal(1);
69
+ expect(collectionLinks === null || collectionLinks === void 0 ? void 0 : collectionLinks.item(0).getAttribute('href')).to.equal('/details/foo');
70
+ });
71
+ it('should not render fav- collections', async () => {
72
+ var _a;
73
+ const collectionNameCache = new MockCollectionNameCache();
74
+ const el = await fixture(html `
75
+ <tile-list
76
+ .model=${{ collections: ['fav-foo', 'bar'] }}
77
+ .collectionNameCache=${collectionNameCache}
78
+ >
79
+ </tile-list>
80
+ `);
81
+ const collectionsRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('collections');
82
+ expect(collectionsRow).to.exist;
83
+ const collectionLinks = collectionsRow === null || collectionsRow === void 0 ? void 0 : collectionsRow.querySelectorAll('a[href]');
84
+ expect(collectionLinks === null || collectionLinks === void 0 ? void 0 : collectionLinks.length).to.equal(1);
85
+ expect(collectionLinks === null || collectionLinks === void 0 ? void 0 : collectionLinks.item(0).getAttribute('href')).to.equal('/details/bar');
86
+ });
87
+ it('should render weekly views when sorting by week', async () => {
88
+ var _a, _b;
60
89
  const el = await fixture(html `
61
90
  <tile-list
62
91
  .model=${{ viewCount: 50, weeklyViewCount: 10 }}
63
92
  .sortParam=${{ field: 'week', direction: 'desc' }}
64
93
  >
65
94
  </tile-list>
66
- `);
67
- const viewsRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('views-line');
68
- expect(viewsRow).to.exist;
69
- expect((_b = viewsRow === null || viewsRow === void 0 ? void 0 : viewsRow.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Views: 10');
70
- });
71
- it('should render added date when sorting by it', async () => {
72
- var _a, _b;
73
- const model = {
74
- dateAdded: new Date('2010-01-01'),
75
- dateArchived: new Date('2011-01-01'),
76
- datePublished: new Date('2012-01-01'),
77
- dateReviewed: new Date('2013-01-01'),
78
- };
95
+ `);
96
+ const viewsRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('views-line');
97
+ expect(viewsRow).to.exist;
98
+ expect((_b = viewsRow === null || viewsRow === void 0 ? void 0 : viewsRow.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Views: 10');
99
+ });
100
+ it('should render added date when sorting by it', async () => {
101
+ var _a, _b;
102
+ const model = {
103
+ dateAdded: new Date('2010-01-01'),
104
+ dateArchived: new Date('2011-01-01'),
105
+ datePublished: new Date('2012-01-01'),
106
+ dateReviewed: new Date('2013-01-01'),
107
+ };
79
108
  const el = await fixture(html `
80
109
  <tile-list
81
110
  .model=${model}
82
111
  .sortParam=${{ field: 'addeddate', direction: 'desc' }}
83
112
  >
84
113
  </tile-list>
85
- `);
86
- const dateRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('dates-line');
87
- expect(dateRow).to.exist;
88
- expect((_b = dateRow === null || dateRow === void 0 ? void 0 : dateRow.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.contain('Added: Jan 01, 2010');
89
- });
90
- it('should render links to /search pages (not search.php) for subject, creator, and source', async () => {
91
- var _a, _b, _c;
92
- const model = {
93
- subjects: ['foo'],
94
- creators: ['bar'],
95
- source: 'baz',
96
- };
114
+ `);
115
+ const dateRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('dates-line');
116
+ expect(dateRow).to.exist;
117
+ expect((_b = dateRow === null || dateRow === void 0 ? void 0 : dateRow.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.contain('Added: Jan 01, 2010');
118
+ });
119
+ it('should render links to /search pages (not search.php) for subject, creator, and source', async () => {
120
+ var _a, _b, _c;
121
+ const model = {
122
+ subjects: ['foo'],
123
+ creators: ['bar'],
124
+ source: 'baz',
125
+ };
97
126
  const el = await fixture(html `
98
127
  <tile-list .model=${model}></tile-list>
99
- `);
100
- const subjectLink = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#topics a[href]');
101
- expect(subjectLink).to.exist;
102
- expect(subjectLink === null || subjectLink === void 0 ? void 0 : subjectLink.getAttribute('href')).to.equal(`/search?query=${encodeURIComponent('subject:"foo"')}`);
103
- const creatorLink = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#creator a[href]');
104
- expect(creatorLink).to.exist;
105
- expect(creatorLink === null || creatorLink === void 0 ? void 0 : creatorLink.getAttribute('href')).to.equal(`/search?query=${encodeURIComponent('creator:"bar"')}`);
106
- const sourceLink = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#source a[href]');
107
- expect(sourceLink).to.exist;
108
- expect(sourceLink === null || sourceLink === void 0 ? void 0 : sourceLink.getAttribute('href')).to.equal(`/search?query=${encodeURIComponent('source:"baz"')}`);
109
- });
110
- it('should render multi-line descriptions with spaces b/w lines', async () => {
111
- var _a, _b;
128
+ `);
129
+ const subjectLink = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#topics a[href]');
130
+ expect(subjectLink).to.exist;
131
+ expect(subjectLink === null || subjectLink === void 0 ? void 0 : subjectLink.getAttribute('href')).to.equal(`/search?query=${encodeURIComponent('subject:"foo"')}`);
132
+ const creatorLink = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#creator a[href]');
133
+ expect(creatorLink).to.exist;
134
+ expect(creatorLink === null || creatorLink === void 0 ? void 0 : creatorLink.getAttribute('href')).to.equal(`/search?query=${encodeURIComponent('creator:"bar"')}`);
135
+ const sourceLink = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#source a[href]');
136
+ expect(sourceLink).to.exist;
137
+ expect(sourceLink === null || sourceLink === void 0 ? void 0 : sourceLink.getAttribute('href')).to.equal(`/search?query=${encodeURIComponent('source:"baz"')}`);
138
+ });
139
+ it('should render multi-line descriptions with spaces b/w lines', async () => {
140
+ var _a, _b;
112
141
  const el = await fixture(html `
113
142
  <tile-list .model=${{ description: 'line1\nline2' }}> </tile-list>
114
- `);
115
- const descriptionBlock = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('description');
116
- expect(descriptionBlock).to.exist;
117
- expect((_b = descriptionBlock === null || descriptionBlock === void 0 ? void 0 : descriptionBlock.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('line1 line2'); // line break replaced by space
118
- });
119
- });
143
+ `);
144
+ const descriptionBlock = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('description');
145
+ expect(descriptionBlock).to.exist;
146
+ expect((_b = descriptionBlock === null || descriptionBlock === void 0 ? void 0 : descriptionBlock.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('line1 line2'); // line break replaced by space
147
+ });
148
+ it('should render date added for accounts', async () => {
149
+ var _a, _b;
150
+ const el = await fixture(html `
151
+ <tile-list
152
+ .model=${{
153
+ mediatype: 'account',
154
+ dateAdded: new Date('2015-05-05T00:00:00'),
155
+ }}
156
+ >
157
+ </tile-list>
158
+ `);
159
+ const creatorBlock = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('creator');
160
+ expect(creatorBlock).to.exist;
161
+ expect((_b = creatorBlock === null || creatorBlock === void 0 ? void 0 : creatorBlock.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Archivist since 2015');
162
+ });
163
+ });
120
164
  //# sourceMappingURL=tile-list.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tile-list.test.js","sourceRoot":"","sources":["../../../../test/tiles/list/tile-list.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-duplicates */\nimport { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport type { TileList } from '../../../src/tiles/list/tile-list';\n\nimport '../../../src/tiles/list/tile-list';\nimport { MockCollectionNameCache } from '../../mocks/mock-collection-name-cache';\nimport type { TileModel } from '../../../src/models';\n\ndescribe('List Tile', () => {\n it('should render initial component', async () => {\n const el = await fixture<TileList>(html`<tile-list></tile-list>`);\n\n const listContainer = el.shadowRoot?.querySelector('#list-line');\n const itemTitle = el.shadowRoot?.querySelector('#title');\n const imageBlock = el.shadowRoot?.querySelector('image-block');\n\n expect(listContainer).to.exist;\n expect(itemTitle).to.exist;\n expect(imageBlock).to.exist;\n });\n\n it('should render with creator element but not dates', async () => {\n const el = await fixture<TileList>(html`\n <tile-list .model=${{ creators: ['someone'] }}></tile-list>\n `);\n\n const creator = el.shadowRoot?.querySelector('#creator');\n const datesLine = el.shadowRoot?.querySelector('#dates-line');\n\n expect(creator).to.exist;\n expect(datesLine?.children.length).to.equal(0);\n });\n\n it('should render with snippet block when it has snippets', async () => {\n const el = await fixture<TileList>(html`\n <tile-list .model=${{ snippets: ['some {{{snippet}}} text'] }}>\n </tile-list>\n `);\n\n const snippetBlock = el.shadowRoot?.querySelector('text-snippet-block');\n\n expect(snippetBlock).to.exist;\n });\n\n it('should not render snippet block when no snippets are present', async () => {\n const el = await fixture<TileList>(html`<tile-list></tile-list>`);\n\n const snippetBlock = el.shadowRoot?.querySelector('text-snippet-block');\n\n expect(snippetBlock).to.not.exist;\n });\n\n it('should not render suppressed collections', async () => {\n const collectionNameCache = new MockCollectionNameCache();\n const el = await fixture<TileList>(html`\n <tile-list\n .model=${{ collections: ['deemphasize', 'community', 'foo'] }}\n .collectionNameCache=${collectionNameCache}\n >\n </tile-list>\n `);\n\n const collectionsRow = el.shadowRoot?.getElementById('collections');\n expect(collectionsRow).to.exist;\n\n const collectionLinks = collectionsRow?.querySelectorAll('a[href]');\n expect(collectionLinks?.length).to.equal(1);\n expect(collectionLinks?.item(0).getAttribute('href')).to.equal(\n '/details/foo'\n );\n });\n\n it('should render weekly views when sorting by week', async () => {\n const el = await fixture<TileList>(html`\n <tile-list\n .model=${{ viewCount: 50, weeklyViewCount: 10 }}\n .sortParam=${{ field: 'week', direction: 'desc' }}\n >\n </tile-list>\n `);\n\n const viewsRow = el.shadowRoot?.getElementById('views-line');\n expect(viewsRow).to.exist;\n expect(viewsRow?.textContent?.trim()).to.equal('Views: 10');\n });\n\n it('should render added date when sorting by it', async () => {\n const model: Partial<TileModel> = {\n dateAdded: new Date('2010-01-01'),\n dateArchived: new Date('2011-01-01'),\n datePublished: new Date('2012-01-01'),\n dateReviewed: new Date('2013-01-01'),\n };\n\n const el = await fixture<TileList>(html`\n <tile-list\n .model=${model}\n .sortParam=${{ field: 'addeddate', direction: 'desc' }}\n >\n </tile-list>\n `);\n\n const dateRow = el.shadowRoot?.getElementById('dates-line');\n expect(dateRow).to.exist;\n expect(dateRow?.textContent?.trim()).to.contain('Added: Jan 01, 2010');\n });\n\n it('should render links to /search pages (not search.php) for subject, creator, and source', async () => {\n const model: Partial<TileModel> = {\n subjects: ['foo'],\n creators: ['bar'],\n source: 'baz',\n };\n\n const el = await fixture<TileList>(html`\n <tile-list .model=${model}></tile-list>\n `);\n\n const subjectLink = el.shadowRoot?.querySelector('#topics a[href]');\n expect(subjectLink).to.exist;\n expect(subjectLink?.getAttribute('href')).to.equal(\n `/search?query=${encodeURIComponent('subject:\"foo\"')}`\n );\n\n const creatorLink = el.shadowRoot?.querySelector('#creator a[href]');\n expect(creatorLink).to.exist;\n expect(creatorLink?.getAttribute('href')).to.equal(\n `/search?query=${encodeURIComponent('creator:\"bar\"')}`\n );\n\n const sourceLink = el.shadowRoot?.querySelector('#source a[href]');\n expect(sourceLink).to.exist;\n expect(sourceLink?.getAttribute('href')).to.equal(\n `/search?query=${encodeURIComponent('source:\"baz\"')}`\n );\n });\n\n it('should render multi-line descriptions with spaces b/w lines', async () => {\n const el = await fixture<TileList>(html`\n <tile-list .model=${{ description: 'line1\\nline2' }}> </tile-list>\n `);\n\n const descriptionBlock = el.shadowRoot?.getElementById('description');\n expect(descriptionBlock).to.exist;\n expect(descriptionBlock?.textContent?.trim()).to.equal('line1 line2'); // line break replaced by space\n });\n});\n"]}
1
+ {"version":3,"file":"tile-list.test.js","sourceRoot":"","sources":["../../../../test/tiles/list/tile-list.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-duplicates */\nimport { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport type { TileList } from '../../../src/tiles/list/tile-list';\n\nimport '../../../src/tiles/list/tile-list';\nimport { MockCollectionNameCache } from '../../mocks/mock-collection-name-cache';\nimport type { TileModel } from '../../../src/models';\n\ndescribe('List Tile', () => {\n it('should render initial component', async () => {\n const el = await fixture<TileList>(html`<tile-list></tile-list>`);\n\n const listContainer = el.shadowRoot?.querySelector('#list-line');\n const itemTitle = el.shadowRoot?.querySelector('#title');\n const imageBlock = el.shadowRoot?.querySelector('image-block');\n\n expect(listContainer).to.exist;\n expect(itemTitle).to.exist;\n expect(imageBlock).to.exist;\n });\n\n it('should render the mobile template if below mobile breakpoint', async () => {\n const el = await fixture<TileList>(html`\n <tile-list .mobileBreakpoint=${500} .currentWidth=${400}> </tile-list>\n `);\n\n const listContainer = el.shadowRoot?.getElementById('list-line');\n const topLine = el.shadowRoot?.getElementById('list-line-top');\n const bottomLine = el.shadowRoot?.getElementById('list-line-bottom');\n\n expect(listContainer).to.exist;\n expect(listContainer?.classList.contains('mobile')).to.be.true;\n expect(topLine).to.exist;\n expect(bottomLine).to.exist;\n });\n\n it('should render with creator element but not dates', async () => {\n const el = await fixture<TileList>(html`\n <tile-list .model=${{ creators: ['someone'] }}></tile-list>\n `);\n\n const creator = el.shadowRoot?.querySelector('#creator');\n const datesLine = el.shadowRoot?.querySelector('#dates-line');\n\n expect(creator).to.exist;\n expect(datesLine?.children.length).to.equal(0);\n });\n\n it('should render with snippet block when it has snippets', async () => {\n const el = await fixture<TileList>(html`\n <tile-list .model=${{ snippets: ['some {{{snippet}}} text'] }}>\n </tile-list>\n `);\n\n const snippetBlock = el.shadowRoot?.querySelector('text-snippet-block');\n\n expect(snippetBlock).to.exist;\n });\n\n it('should not render snippet block when no snippets are present', async () => {\n const el = await fixture<TileList>(html`<tile-list></tile-list>`);\n\n const snippetBlock = el.shadowRoot?.querySelector('text-snippet-block');\n\n expect(snippetBlock).to.not.exist;\n });\n\n it('should not render suppressed collections', async () => {\n const collectionNameCache = new MockCollectionNameCache();\n const el = await fixture<TileList>(html`\n <tile-list\n .model=${{ collections: ['deemphasize', 'community', 'foo'] }}\n .collectionNameCache=${collectionNameCache}\n >\n </tile-list>\n `);\n\n const collectionsRow = el.shadowRoot?.getElementById('collections');\n expect(collectionsRow).to.exist;\n\n const collectionLinks = collectionsRow?.querySelectorAll('a[href]');\n expect(collectionLinks?.length).to.equal(1);\n expect(collectionLinks?.item(0).getAttribute('href')).to.equal(\n '/details/foo'\n );\n });\n\n it('should not render fav- collections', async () => {\n const collectionNameCache = new MockCollectionNameCache();\n const el = await fixture<TileList>(html`\n <tile-list\n .model=${{ collections: ['fav-foo', 'bar'] }}\n .collectionNameCache=${collectionNameCache}\n >\n </tile-list>\n `);\n\n const collectionsRow = el.shadowRoot?.getElementById('collections');\n expect(collectionsRow).to.exist;\n\n const collectionLinks = collectionsRow?.querySelectorAll('a[href]');\n expect(collectionLinks?.length).to.equal(1);\n expect(collectionLinks?.item(0).getAttribute('href')).to.equal(\n '/details/bar'\n );\n });\n\n it('should render weekly views when sorting by week', async () => {\n const el = await fixture<TileList>(html`\n <tile-list\n .model=${{ viewCount: 50, weeklyViewCount: 10 }}\n .sortParam=${{ field: 'week', direction: 'desc' }}\n >\n </tile-list>\n `);\n\n const viewsRow = el.shadowRoot?.getElementById('views-line');\n expect(viewsRow).to.exist;\n expect(viewsRow?.textContent?.trim()).to.equal('Views: 10');\n });\n\n it('should render added date when sorting by it', async () => {\n const model: Partial<TileModel> = {\n dateAdded: new Date('2010-01-01'),\n dateArchived: new Date('2011-01-01'),\n datePublished: new Date('2012-01-01'),\n dateReviewed: new Date('2013-01-01'),\n };\n\n const el = await fixture<TileList>(html`\n <tile-list\n .model=${model}\n .sortParam=${{ field: 'addeddate', direction: 'desc' }}\n >\n </tile-list>\n `);\n\n const dateRow = el.shadowRoot?.getElementById('dates-line');\n expect(dateRow).to.exist;\n expect(dateRow?.textContent?.trim()).to.contain('Added: Jan 01, 2010');\n });\n\n it('should render links to /search pages (not search.php) for subject, creator, and source', async () => {\n const model: Partial<TileModel> = {\n subjects: ['foo'],\n creators: ['bar'],\n source: 'baz',\n };\n\n const el = await fixture<TileList>(html`\n <tile-list .model=${model}></tile-list>\n `);\n\n const subjectLink = el.shadowRoot?.querySelector('#topics a[href]');\n expect(subjectLink).to.exist;\n expect(subjectLink?.getAttribute('href')).to.equal(\n `/search?query=${encodeURIComponent('subject:\"foo\"')}`\n );\n\n const creatorLink = el.shadowRoot?.querySelector('#creator a[href]');\n expect(creatorLink).to.exist;\n expect(creatorLink?.getAttribute('href')).to.equal(\n `/search?query=${encodeURIComponent('creator:\"bar\"')}`\n );\n\n const sourceLink = el.shadowRoot?.querySelector('#source a[href]');\n expect(sourceLink).to.exist;\n expect(sourceLink?.getAttribute('href')).to.equal(\n `/search?query=${encodeURIComponent('source:\"baz\"')}`\n );\n });\n\n it('should render multi-line descriptions with spaces b/w lines', async () => {\n const el = await fixture<TileList>(html`\n <tile-list .model=${{ description: 'line1\\nline2' }}> </tile-list>\n `);\n\n const descriptionBlock = el.shadowRoot?.getElementById('description');\n expect(descriptionBlock).to.exist;\n expect(descriptionBlock?.textContent?.trim()).to.equal('line1 line2'); // line break replaced by space\n });\n\n it('should render date added for accounts', async () => {\n const el = await fixture<TileList>(html`\n <tile-list\n .model=${{\n mediatype: 'account',\n dateAdded: new Date('2015-05-05T00:00:00'),\n }}\n >\n </tile-list>\n `);\n\n const creatorBlock = el.shadowRoot?.getElementById('creator');\n expect(creatorBlock).to.exist;\n expect(creatorBlock?.textContent?.trim()).to.equal('Archivist since 2015');\n });\n});\n"]}
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,24 +1,24 @@
1
- import { expect } from '@open-wc/testing';
2
- import { formatCount } from '../../src/utils/format-count';
3
- const testCount = 805342;
4
- describe('formatCount', () => {
5
- it('returns blank when undefined number', () => {
6
- expect(formatCount(undefined)).to.equal('');
7
- });
8
- it('returns blank when negative number', () => {
9
- expect(formatCount(testCount * -1)).to.equal('');
10
- });
11
- it('returns long number when no NumberFormat', () => {
12
- expect(formatCount(testCount)).to.equal('805,342');
13
- });
14
- it('returns short number when short NumberFormat', () => {
15
- expect(formatCount(testCount, 'short')).to.equal('805K');
16
- });
17
- it('returns decimal when value of significant digits < 10', () => {
18
- expect(formatCount(testCount * 10, 'short', 'long')).to.equal('8.1 million');
19
- });
20
- it('returns locale formatted number', () => {
21
- expect(formatCount(testCount, 'long', 'long', 'de-DE')).to.equal('805.342');
22
- });
23
- });
1
+ import { expect } from '@open-wc/testing';
2
+ import { formatCount } from '../../src/utils/format-count';
3
+ const testCount = 805342;
4
+ describe('formatCount', () => {
5
+ it('returns blank when undefined number', () => {
6
+ expect(formatCount(undefined)).to.equal('');
7
+ });
8
+ it('returns blank when negative number', () => {
9
+ expect(formatCount(testCount * -1)).to.equal('');
10
+ });
11
+ it('returns long number when no NumberFormat', () => {
12
+ expect(formatCount(testCount)).to.equal('805,342');
13
+ });
14
+ it('returns short number when short NumberFormat', () => {
15
+ expect(formatCount(testCount, 'short')).to.equal('805K');
16
+ });
17
+ it('returns decimal when value of significant digits < 10', () => {
18
+ expect(formatCount(testCount * 10, 'short', 'long')).to.equal('8.1 million');
19
+ });
20
+ it('returns locale formatted number', () => {
21
+ expect(formatCount(testCount, 'long', 'long', 'de-DE')).to.equal('805.342');
22
+ });
23
+ });
24
24
  //# sourceMappingURL=format-count.test.js.map
@@ -1 +1 @@
1
- export {};
1
+ export {};