@internetarchive/collection-browser 0.3.7 → 0.3.8

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 (218) 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 -47
  12. package/dist/src/app-root.js +271 -250
  13. package/dist/src/app-root.js.map +1 -1
  14. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  15. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  16. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  17. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  18. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  19. package/dist/src/assets/img/icons/chevron.js +2 -2
  20. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  21. package/dist/src/assets/img/icons/empty-query.js +2 -2
  22. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  23. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  24. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  25. package/dist/src/assets/img/icons/eye.js +2 -2
  26. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  27. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  28. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  29. package/dist/src/assets/img/icons/login-required.js +2 -2
  30. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  31. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  32. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  33. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  34. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  35. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  36. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  37. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  38. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  39. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  40. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  41. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  42. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  43. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  44. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  45. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  46. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  47. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  48. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  49. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  50. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  51. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  52. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  53. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  54. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  55. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  56. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  57. package/dist/src/assets/img/icons/null-result.js +2 -2
  58. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  59. package/dist/src/assets/img/icons/restricted.js +2 -2
  60. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  61. package/dist/src/assets/img/icons/reviews.js +2 -2
  62. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  63. package/dist/src/assets/img/icons/upload.js +2 -2
  64. package/dist/src/assets/img/icons/views.d.ts +1 -1
  65. package/dist/src/assets/img/icons/views.js +2 -2
  66. package/dist/src/circular-activity-indicator.d.ts +5 -5
  67. package/dist/src/circular-activity-indicator.js +17 -17
  68. package/dist/src/collection-browser.d.ts +278 -246
  69. package/dist/src/collection-browser.js +1105 -1031
  70. package/dist/src/collection-browser.js.map +1 -1
  71. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  72. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  73. package/dist/src/collection-facets/facets-template.d.ts +16 -16
  74. package/dist/src/collection-facets/facets-template.js +125 -125
  75. package/dist/src/collection-facets/more-facets-content.d.ts +76 -76
  76. package/dist/src/collection-facets/more-facets-content.js +353 -353
  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 +77 -77
  80. package/dist/src/collection-facets.js +388 -389
  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 +103 -103
  91. package/dist/src/models.js +117 -117
  92. package/dist/src/restoration-state-handler.d.ts +46 -46
  93. package/dist/src/restoration-state-handler.js +230 -230
  94. package/dist/src/sort-filter-bar/alpha-bar.d.ts +9 -9
  95. package/dist/src/sort-filter-bar/alpha-bar.js +41 -41
  96. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  97. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  98. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  99. package/dist/src/sort-filter-bar/img/list.js +2 -2
  100. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  101. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  102. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  103. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  104. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +107 -107
  105. package/dist/src/sort-filter-bar/sort-filter-bar.js +423 -423
  106. package/dist/src/styles/item-image-styles.d.ts +8 -8
  107. package/dist/src/styles/item-image-styles.js +9 -9
  108. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  109. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  110. package/dist/src/tiles/grid/account-tile.d.ts +8 -8
  111. package/dist/src/tiles/grid/account-tile.js +20 -20
  112. package/dist/src/tiles/grid/collection-tile.d.ts +7 -7
  113. package/dist/src/tiles/grid/collection-tile.js +23 -23
  114. package/dist/src/tiles/grid/item-tile.d.ts +24 -24
  115. package/dist/src/tiles/grid/item-tile.js +87 -87
  116. package/dist/src/tiles/grid/tile-stats.d.ts +10 -10
  117. package/dist/src/tiles/grid/tile-stats.js +40 -40
  118. package/dist/src/tiles/image-block.d.ts +17 -17
  119. package/dist/src/tiles/image-block.js +69 -69
  120. package/dist/src/tiles/item-image.d.ts +31 -31
  121. package/dist/src/tiles/item-image.js +103 -103
  122. package/dist/src/tiles/list/account-label.d.ts +1 -1
  123. package/dist/src/tiles/list/account-label.js +6 -6
  124. package/dist/src/tiles/list/date-label.d.ts +1 -1
  125. package/dist/src/tiles/list/date-label.js +12 -12
  126. package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
  127. package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
  128. package/dist/src/tiles/list/tile-list-compact.d.ts +21 -21
  129. package/dist/src/tiles/list/tile-list-compact.js +93 -93
  130. package/dist/src/tiles/list/tile-list.d.ts +50 -50
  131. package/dist/src/tiles/list/tile-list.js +275 -272
  132. package/dist/src/tiles/list/tile-list.js.map +1 -1
  133. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  134. package/dist/src/tiles/mediatype-icon.js +47 -47
  135. package/dist/src/tiles/overlay/icon-overlay.d.ts +7 -7
  136. package/dist/src/tiles/overlay/icon-overlay.js +30 -30
  137. package/dist/src/tiles/overlay/text-overlay.d.ts +8 -8
  138. package/dist/src/tiles/overlay/text-overlay.js +31 -31
  139. package/dist/src/tiles/text-snippet-block.d.ts +29 -29
  140. package/dist/src/tiles/text-snippet-block.js +81 -81
  141. package/dist/src/tiles/tile-dispatcher.d.ts +36 -36
  142. package/dist/src/tiles/tile-dispatcher.js +128 -128
  143. package/dist/src/utils/analytics-events.d.ts +22 -22
  144. package/dist/src/utils/analytics-events.js +24 -24
  145. package/dist/src/utils/format-count.d.ts +7 -7
  146. package/dist/src/utils/format-count.js +76 -76
  147. package/dist/src/utils/format-date.d.ts +2 -2
  148. package/dist/src/utils/format-date.js +23 -23
  149. package/dist/test/collection-browser.test.d.ts +1 -1
  150. package/dist/test/collection-browser.test.js +583 -444
  151. package/dist/test/collection-browser.test.js.map +1 -1
  152. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  153. package/dist/test/collection-facets/facets-template.test.js +62 -62
  154. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  155. package/dist/test/collection-facets/more-facets-content.test.js +114 -114
  156. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  157. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  158. package/dist/test/collection-facets.test.d.ts +2 -2
  159. package/dist/test/collection-facets.test.js +544 -498
  160. package/dist/test/collection-facets.test.js.map +1 -1
  161. package/dist/test/empty-placeholder.test.d.ts +1 -1
  162. package/dist/test/empty-placeholder.test.js +33 -33
  163. package/dist/test/icon-overlay.test.d.ts +1 -1
  164. package/dist/test/icon-overlay.test.js +24 -24
  165. package/dist/test/image-block.test.d.ts +1 -1
  166. package/dist/test/image-block.test.js +48 -48
  167. package/dist/test/item-image.test.d.ts +1 -1
  168. package/dist/test/item-image.test.js +56 -56
  169. package/dist/test/mediatype-config.test.d.ts +1 -1
  170. package/dist/test/mediatype-config.test.js +16 -16
  171. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  172. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  173. package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
  174. package/dist/test/mocks/mock-collection-name-cache.js +13 -13
  175. package/dist/test/mocks/mock-search-responses.d.ts +10 -8
  176. package/dist/test/mocks/mock-search-responses.js +271 -198
  177. package/dist/test/mocks/mock-search-responses.js.map +1 -1
  178. package/dist/test/mocks/mock-search-service.d.ts +13 -13
  179. package/dist/test/mocks/mock-search-service.js +36 -32
  180. package/dist/test/mocks/mock-search-service.js.map +1 -1
  181. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  182. package/dist/test/restoration-state-handler.test.js +126 -126
  183. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  184. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +113 -113
  185. package/dist/test/text-overlay.test.d.ts +1 -1
  186. package/dist/test/text-overlay.test.js +41 -41
  187. package/dist/test/text-snippet-block.test.d.ts +1 -1
  188. package/dist/test/text-snippet-block.test.js +57 -57
  189. package/dist/test/tile-stats.test.d.ts +1 -1
  190. package/dist/test/tile-stats.test.js +33 -33
  191. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  192. package/dist/test/tiles/grid/item-tile.test.js +107 -107
  193. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  194. package/dist/test/tiles/list/tile-list-compact.test.js +92 -92
  195. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  196. package/dist/test/tiles/list/tile-list.test.js +96 -67
  197. package/dist/test/tiles/list/tile-list.test.js.map +1 -1
  198. package/dist/test/utils/format-count.test.d.ts +1 -1
  199. package/dist/test/utils/format-count.test.js +23 -23
  200. package/dist/test/utils/format-date.test.d.ts +1 -1
  201. package/dist/test/utils/format-date.test.js +17 -17
  202. package/index.html +24 -24
  203. package/local.archive.org.cert +86 -86
  204. package/local.archive.org.key +27 -27
  205. package/package.json +3 -3
  206. package/renovate.json +6 -6
  207. package/src/app-root.ts +32 -9
  208. package/src/collection-browser.ts +130 -35
  209. package/src/collection-facets.ts +2 -3
  210. package/src/tiles/list/tile-list.ts +6 -2
  211. package/test/collection-browser.test.ts +207 -0
  212. package/test/collection-facets.test.ts +67 -0
  213. package/test/mocks/mock-search-responses.ts +82 -0
  214. package/test/mocks/mock-search-service.ts +6 -0
  215. package/test/tiles/list/tile-list.test.ts +40 -0
  216. package/tsconfig.json +21 -21
  217. package/web-dev-server.config.mjs +30 -30
  218. package/web-test-runner.config.mjs +41 -41
@@ -1,33 +1,37 @@
1
- import { mockSuccessSingleResult, mockSuccessMultipleResults, getMockSuccessSingleResultWithSort, mockSuccessLoggedInResult, mockSuccessNoPreviewResult, mockSuccessLoggedInAndNoPreviewResult, } from './mock-search-responses';
2
- export class MockSearchService {
3
- constructor({ asyncResponse = false, resultsSpy = () => { } } = {}) {
4
- this.asyncResponse = asyncResponse;
5
- this.resultsSpy = resultsSpy;
6
- }
7
- async search(params, searchType) {
8
- var _a;
9
- this.searchParams = params;
10
- this.searchType = searchType;
11
- if (this.asyncResponse) {
12
- // Add an artificial 1-tick delay
13
- await new Promise(res => {
14
- setTimeout(res, 0);
15
- });
16
- }
17
- switch ((_a = this.searchParams) === null || _a === void 0 ? void 0 : _a.query) {
18
- case 'single-result':
19
- return mockSuccessSingleResult;
20
- case 'loggedin':
21
- return mockSuccessLoggedInResult;
22
- case 'no-preview':
23
- return mockSuccessNoPreviewResult;
24
- case 'loggedin-no-preview':
25
- return mockSuccessLoggedInAndNoPreviewResult;
26
- case 'with-sort':
27
- return getMockSuccessSingleResultWithSort(this.resultsSpy);
28
- default:
29
- return mockSuccessMultipleResults;
30
- }
31
- }
32
- }
1
+ import { mockSuccessSingleResult, mockSuccessMultipleResults, getMockSuccessSingleResultWithSort, mockSuccessLoggedInResult, mockSuccessNoPreviewResult, mockSuccessLoggedInAndNoPreviewResult, mockSuccessWithYearHistogramAggs, mockSuccessMultiLineDescription, } from './mock-search-responses';
2
+ export class MockSearchService {
3
+ constructor({ asyncResponse = false, resultsSpy = () => { } } = {}) {
4
+ this.asyncResponse = asyncResponse;
5
+ this.resultsSpy = resultsSpy;
6
+ }
7
+ async search(params, searchType) {
8
+ var _a;
9
+ this.searchParams = params;
10
+ this.searchType = searchType;
11
+ if (this.asyncResponse) {
12
+ // Add an artificial 1-tick delay
13
+ await new Promise(res => {
14
+ setTimeout(res, 0);
15
+ });
16
+ }
17
+ switch ((_a = this.searchParams) === null || _a === void 0 ? void 0 : _a.query) {
18
+ case 'single-result':
19
+ return mockSuccessSingleResult;
20
+ case 'years':
21
+ return mockSuccessWithYearHistogramAggs;
22
+ case 'multi-line-description':
23
+ return mockSuccessMultiLineDescription;
24
+ case 'loggedin':
25
+ return mockSuccessLoggedInResult;
26
+ case 'no-preview':
27
+ return mockSuccessNoPreviewResult;
28
+ case 'loggedin-no-preview':
29
+ return mockSuccessLoggedInAndNoPreviewResult;
30
+ case 'with-sort':
31
+ return getMockSuccessSingleResultWithSort(this.resultsSpy);
32
+ default:
33
+ return mockSuccessMultipleResults;
34
+ }
35
+ }
36
+ }
33
37
  //# sourceMappingURL=mock-search-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mock-search-service.js","sourceRoot":"","sources":["../../../test/mocks/mock-search-service.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,kCAAkC,EAClC,yBAAyB,EACzB,0BAA0B,EAC1B,qCAAqC,GACtC,MAAM,yBAAyB,CAAC;AAEjC,MAAM,OAAO,iBAAiB;IAS5B,YAAY,EAAE,aAAa,GAAG,KAAK,EAAE,UAAU,GAAG,GAAG,EAAE,GAAE,CAAC,EAAE,GAAG,EAAE;QAC/D,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM,CACV,MAAoB,EACpB,UAAsB;;QAEtB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,iCAAiC;YACjC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;gBACtB,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;SACJ;QAED,QAAQ,MAAA,IAAI,CAAC,YAAY,0CAAE,KAAK,EAAE;YAChC,KAAK,eAAe;gBAClB,OAAO,uBAAuB,CAAC;YACjC,KAAK,UAAU;gBACb,OAAO,yBAAyB,CAAC;YACnC,KAAK,YAAY;gBACf,OAAO,0BAA0B,CAAC;YACpC,KAAK,qBAAqB;gBACxB,OAAO,qCAAqC,CAAC;YAC/C,KAAK,WAAW;gBACd,OAAO,kCAAkC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7D;gBACE,OAAO,0BAA0B,CAAC;SACrC;IACH,CAAC;CACF","sourcesContent":["import type { Result } from '@internetarchive/result-type';\nimport type {\n SearchParams,\n SearchResponse,\n SearchServiceInterface,\n SearchServiceError,\n SearchType,\n} from '@internetarchive/search-service';\nimport {\n mockSuccessSingleResult,\n mockSuccessMultipleResults,\n getMockSuccessSingleResultWithSort,\n mockSuccessLoggedInResult,\n mockSuccessNoPreviewResult,\n mockSuccessLoggedInAndNoPreviewResult,\n} from './mock-search-responses';\n\nexport class MockSearchService implements SearchServiceInterface {\n searchParams?: SearchParams;\n\n searchType?: SearchType;\n\n asyncResponse: boolean;\n\n resultsSpy: Function;\n\n constructor({ asyncResponse = false, resultsSpy = () => {} } = {}) {\n this.asyncResponse = asyncResponse;\n this.resultsSpy = resultsSpy;\n }\n\n async search(\n params: SearchParams,\n searchType: SearchType\n ): Promise<Result<SearchResponse, SearchServiceError>> {\n this.searchParams = params;\n this.searchType = searchType;\n\n if (this.asyncResponse) {\n // Add an artificial 1-tick delay\n await new Promise(res => {\n setTimeout(res, 0);\n });\n }\n\n switch (this.searchParams?.query) {\n case 'single-result':\n return mockSuccessSingleResult;\n case 'loggedin':\n return mockSuccessLoggedInResult;\n case 'no-preview':\n return mockSuccessNoPreviewResult;\n case 'loggedin-no-preview':\n return mockSuccessLoggedInAndNoPreviewResult;\n case 'with-sort':\n return getMockSuccessSingleResultWithSort(this.resultsSpy);\n default:\n return mockSuccessMultipleResults;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"mock-search-service.js","sourceRoot":"","sources":["../../../test/mocks/mock-search-service.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,kCAAkC,EAClC,yBAAyB,EACzB,0BAA0B,EAC1B,qCAAqC,EACrC,gCAAgC,EAChC,+BAA+B,GAChC,MAAM,yBAAyB,CAAC;AAEjC,MAAM,OAAO,iBAAiB;IAS5B,YAAY,EAAE,aAAa,GAAG,KAAK,EAAE,UAAU,GAAG,GAAG,EAAE,GAAE,CAAC,EAAE,GAAG,EAAE;QAC/D,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM,CACV,MAAoB,EACpB,UAAsB;;QAEtB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,iCAAiC;YACjC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;gBACtB,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;SACJ;QAED,QAAQ,MAAA,IAAI,CAAC,YAAY,0CAAE,KAAK,EAAE;YAChC,KAAK,eAAe;gBAClB,OAAO,uBAAuB,CAAC;YACjC,KAAK,OAAO;gBACV,OAAO,gCAAgC,CAAC;YAC1C,KAAK,wBAAwB;gBAC3B,OAAO,+BAA+B,CAAC;YACzC,KAAK,UAAU;gBACb,OAAO,yBAAyB,CAAC;YACnC,KAAK,YAAY;gBACf,OAAO,0BAA0B,CAAC;YACpC,KAAK,qBAAqB;gBACxB,OAAO,qCAAqC,CAAC;YAC/C,KAAK,WAAW;gBACd,OAAO,kCAAkC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7D;gBACE,OAAO,0BAA0B,CAAC;SACrC;IACH,CAAC;CACF","sourcesContent":["import type { Result } from '@internetarchive/result-type';\nimport type {\n SearchParams,\n SearchResponse,\n SearchServiceInterface,\n SearchServiceError,\n SearchType,\n} from '@internetarchive/search-service';\nimport {\n mockSuccessSingleResult,\n mockSuccessMultipleResults,\n getMockSuccessSingleResultWithSort,\n mockSuccessLoggedInResult,\n mockSuccessNoPreviewResult,\n mockSuccessLoggedInAndNoPreviewResult,\n mockSuccessWithYearHistogramAggs,\n mockSuccessMultiLineDescription,\n} from './mock-search-responses';\n\nexport class MockSearchService implements SearchServiceInterface {\n searchParams?: SearchParams;\n\n searchType?: SearchType;\n\n asyncResponse: boolean;\n\n resultsSpy: Function;\n\n constructor({ asyncResponse = false, resultsSpy = () => {} } = {}) {\n this.asyncResponse = asyncResponse;\n this.resultsSpy = resultsSpy;\n }\n\n async search(\n params: SearchParams,\n searchType: SearchType\n ): Promise<Result<SearchResponse, SearchServiceError>> {\n this.searchParams = params;\n this.searchType = searchType;\n\n if (this.asyncResponse) {\n // Add an artificial 1-tick delay\n await new Promise(res => {\n setTimeout(res, 0);\n });\n }\n\n switch (this.searchParams?.query) {\n case 'single-result':\n return mockSuccessSingleResult;\n case 'years':\n return mockSuccessWithYearHistogramAggs;\n case 'multi-line-description':\n return mockSuccessMultiLineDescription;\n case 'loggedin':\n return mockSuccessLoggedInResult;\n case 'no-preview':\n return mockSuccessNoPreviewResult;\n case 'loggedin-no-preview':\n return mockSuccessLoggedInAndNoPreviewResult;\n case 'with-sort':\n return getMockSuccessSingleResultWithSort(this.resultsSpy);\n default:\n return mockSuccessMultipleResults;\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,127 +1,127 @@
1
- import { SearchType } from '@internetarchive/search-service';
2
- import { expect } from '@open-wc/testing';
3
- import { RestorationStateHandler } from '../src/restoration-state-handler';
4
- describe('Restoration state handler', () => {
5
- it('should restore query from URL', async () => {
6
- const handler = new RestorationStateHandler({ context: 'search' });
7
- const url = new URL(window.location.href);
8
- url.search = '?query=boop';
9
- window.history.replaceState({ path: url.href }, '', url.href);
10
- const restorationState = handler.getRestorationState();
11
- expect(restorationState.baseQuery).to.equal('boop');
12
- });
13
- it('should restore full text search type from URL', async () => {
14
- const handler = new RestorationStateHandler({ context: 'search' });
15
- const url = new URL(window.location.href);
16
- url.search = '?sin=TXT';
17
- window.history.replaceState({ path: url.href }, '', url.href);
18
- const restorationState = handler.getRestorationState();
19
- expect(restorationState.searchType).to.equal(SearchType.FULLTEXT);
20
- });
21
- it('should restore page number from URL', async () => {
22
- const handler = new RestorationStateHandler({ context: 'search' });
23
- const url = new URL(window.location.href);
24
- url.search = '?page=42';
25
- window.history.replaceState({ path: url.href }, '', url.href);
26
- const restorationState = handler.getRestorationState();
27
- expect(restorationState.currentPage).to.equal(42);
28
- });
29
- it('should restore selected year facets from URL', async () => {
30
- const handler = new RestorationStateHandler({ context: 'search' });
31
- const url = new URL(window.location.href);
32
- url.search = '?and[]=year:"2018"';
33
- window.history.replaceState({ path: url.href }, '', url.href);
34
- const restorationState = handler.getRestorationState();
35
- expect(restorationState.selectedFacets.year['2018'].state).to.equal('selected');
36
- });
37
- it('should restore selected date range facets from URL', async () => {
38
- const handler = new RestorationStateHandler({ context: 'search' });
39
- const url = new URL(window.location.href);
40
- url.search = '?and[]=year:"2018+TO+2021"';
41
- window.history.replaceState({ path: url.href }, '', url.href);
42
- const restorationState = handler.getRestorationState();
43
- expect(restorationState.minSelectedDate).to.equal('2018');
44
- expect(restorationState.maxSelectedDate).to.equal('2021');
45
- expect(restorationState.dateRangeQueryClause).to.equal('year:"2018 TO 2021"');
46
- });
47
- it('should restore creator filter from URL', async () => {
48
- const handler = new RestorationStateHandler({ context: 'search' });
49
- const url = new URL(window.location.href);
50
- url.search = '?and[]=firstCreator:F';
51
- window.history.replaceState({ path: url.href }, '', url.href);
52
- const restorationState = handler.getRestorationState();
53
- expect(restorationState.selectedCreatorFilter).to.equal('F');
54
- });
55
- it('should restore title filter from URL', async () => {
56
- const handler = new RestorationStateHandler({ context: 'search' });
57
- const url = new URL(window.location.href);
58
- url.search = '?and[]=firstTitle:F';
59
- window.history.replaceState({ path: url.href }, '', url.href);
60
- const restorationState = handler.getRestorationState();
61
- expect(restorationState.selectedTitleFilter).to.equal('F');
62
- });
63
- it('should restore other selected facets from URL', async () => {
64
- const handler = new RestorationStateHandler({ context: 'search' });
65
- const url = new URL(window.location.href);
66
- url.search = '?and[]=subject:"foo"';
67
- window.history.replaceState({ path: url.href }, '', url.href);
68
- const restorationState = handler.getRestorationState();
69
- expect(restorationState.selectedFacets.subject.foo.state).to.equal('selected');
70
- });
71
- it('should restore negative facets from URL', async () => {
72
- const handler = new RestorationStateHandler({ context: 'search' });
73
- const url = new URL(window.location.href);
74
- url.search = '?not[]=year:2018';
75
- window.history.replaceState({ path: url.href }, '', url.href);
76
- const restorationState = handler.getRestorationState();
77
- expect(restorationState.selectedFacets.year['2018'].state).to.equal('hidden');
78
- });
79
- it('should restore multiple selected/negative facets from URL', async () => {
80
- const handler = new RestorationStateHandler({ context: 'search' });
81
- const url = new URL(window.location.href);
82
- url.search =
83
- '?and[]=collection:"foo"&and[]=collection:"bar"&not[]=collection:"baz"&not[]=collection:"boop"';
84
- window.history.replaceState({ path: url.href }, '', url.href);
85
- const restorationState = handler.getRestorationState();
86
- expect(restorationState.selectedFacets.collection.foo.state).to.equal('selected');
87
- expect(restorationState.selectedFacets.collection.bar.state).to.equal('selected');
88
- expect(restorationState.selectedFacets.collection.baz.state).to.equal('hidden');
89
- expect(restorationState.selectedFacets.collection.boop.state).to.equal('hidden');
90
- });
91
- it('negative facets take precedence if both present in URL', async () => {
92
- const handler = new RestorationStateHandler({ context: 'search' });
93
- const url = new URL(window.location.href);
94
- url.search = '?and[]=collection:"foo"&not[]=collection:"foo"';
95
- window.history.replaceState({ path: url.href }, '', url.href);
96
- const restorationState = handler.getRestorationState();
97
- expect(restorationState.selectedFacets.collection.foo.state).to.equal('hidden');
98
- });
99
- it('should restore sort from URL (space format)', async () => {
100
- const handler = new RestorationStateHandler({ context: 'search' });
101
- const url = new URL(window.location.href);
102
- url.search = '?sort=date+desc';
103
- window.history.replaceState({ path: url.href }, '', url.href);
104
- const restorationState = handler.getRestorationState();
105
- expect(restorationState.selectedSort).to.equal('date');
106
- expect(restorationState.sortDirection).to.equal('desc');
107
- });
108
- it('should restore sort from URL (prefix format, desc)', async () => {
109
- const handler = new RestorationStateHandler({ context: 'search' });
110
- const url = new URL(window.location.href);
111
- url.search = '?sort=-date';
112
- window.history.replaceState({ path: url.href }, '', url.href);
113
- const restorationState = handler.getRestorationState();
114
- expect(restorationState.selectedSort).to.equal('date');
115
- expect(restorationState.sortDirection).to.equal('desc');
116
- });
117
- it('should restore sort from URL (prefix format, asc)', async () => {
118
- const handler = new RestorationStateHandler({ context: 'search' });
119
- const url = new URL(window.location.href);
120
- url.search = '?sort=date';
121
- window.history.replaceState({ path: url.href }, '', url.href);
122
- const restorationState = handler.getRestorationState();
123
- expect(restorationState.selectedSort).to.equal('date');
124
- expect(restorationState.sortDirection).to.equal('asc');
125
- });
126
- });
1
+ import { SearchType } from '@internetarchive/search-service';
2
+ import { expect } from '@open-wc/testing';
3
+ import { RestorationStateHandler } from '../src/restoration-state-handler';
4
+ describe('Restoration state handler', () => {
5
+ it('should restore query from URL', async () => {
6
+ const handler = new RestorationStateHandler({ context: 'search' });
7
+ const url = new URL(window.location.href);
8
+ url.search = '?query=boop';
9
+ window.history.replaceState({ path: url.href }, '', url.href);
10
+ const restorationState = handler.getRestorationState();
11
+ expect(restorationState.baseQuery).to.equal('boop');
12
+ });
13
+ it('should restore full text search type from URL', async () => {
14
+ const handler = new RestorationStateHandler({ context: 'search' });
15
+ const url = new URL(window.location.href);
16
+ url.search = '?sin=TXT';
17
+ window.history.replaceState({ path: url.href }, '', url.href);
18
+ const restorationState = handler.getRestorationState();
19
+ expect(restorationState.searchType).to.equal(SearchType.FULLTEXT);
20
+ });
21
+ it('should restore page number from URL', async () => {
22
+ const handler = new RestorationStateHandler({ context: 'search' });
23
+ const url = new URL(window.location.href);
24
+ url.search = '?page=42';
25
+ window.history.replaceState({ path: url.href }, '', url.href);
26
+ const restorationState = handler.getRestorationState();
27
+ expect(restorationState.currentPage).to.equal(42);
28
+ });
29
+ it('should restore selected year facets from URL', async () => {
30
+ const handler = new RestorationStateHandler({ context: 'search' });
31
+ const url = new URL(window.location.href);
32
+ url.search = '?and[]=year:"2018"';
33
+ window.history.replaceState({ path: url.href }, '', url.href);
34
+ const restorationState = handler.getRestorationState();
35
+ expect(restorationState.selectedFacets.year['2018'].state).to.equal('selected');
36
+ });
37
+ it('should restore selected date range facets from URL', async () => {
38
+ const handler = new RestorationStateHandler({ context: 'search' });
39
+ const url = new URL(window.location.href);
40
+ url.search = '?and[]=year:"2018+TO+2021"';
41
+ window.history.replaceState({ path: url.href }, '', url.href);
42
+ const restorationState = handler.getRestorationState();
43
+ expect(restorationState.minSelectedDate).to.equal('2018');
44
+ expect(restorationState.maxSelectedDate).to.equal('2021');
45
+ expect(restorationState.dateRangeQueryClause).to.equal('year:"2018 TO 2021"');
46
+ });
47
+ it('should restore creator filter from URL', async () => {
48
+ const handler = new RestorationStateHandler({ context: 'search' });
49
+ const url = new URL(window.location.href);
50
+ url.search = '?and[]=firstCreator:F';
51
+ window.history.replaceState({ path: url.href }, '', url.href);
52
+ const restorationState = handler.getRestorationState();
53
+ expect(restorationState.selectedCreatorFilter).to.equal('F');
54
+ });
55
+ it('should restore title filter from URL', async () => {
56
+ const handler = new RestorationStateHandler({ context: 'search' });
57
+ const url = new URL(window.location.href);
58
+ url.search = '?and[]=firstTitle:F';
59
+ window.history.replaceState({ path: url.href }, '', url.href);
60
+ const restorationState = handler.getRestorationState();
61
+ expect(restorationState.selectedTitleFilter).to.equal('F');
62
+ });
63
+ it('should restore other selected facets from URL', async () => {
64
+ const handler = new RestorationStateHandler({ context: 'search' });
65
+ const url = new URL(window.location.href);
66
+ url.search = '?and[]=subject:"foo"';
67
+ window.history.replaceState({ path: url.href }, '', url.href);
68
+ const restorationState = handler.getRestorationState();
69
+ expect(restorationState.selectedFacets.subject.foo.state).to.equal('selected');
70
+ });
71
+ it('should restore negative facets from URL', async () => {
72
+ const handler = new RestorationStateHandler({ context: 'search' });
73
+ const url = new URL(window.location.href);
74
+ url.search = '?not[]=year:2018';
75
+ window.history.replaceState({ path: url.href }, '', url.href);
76
+ const restorationState = handler.getRestorationState();
77
+ expect(restorationState.selectedFacets.year['2018'].state).to.equal('hidden');
78
+ });
79
+ it('should restore multiple selected/negative facets from URL', async () => {
80
+ const handler = new RestorationStateHandler({ context: 'search' });
81
+ const url = new URL(window.location.href);
82
+ url.search =
83
+ '?and[]=collection:"foo"&and[]=collection:"bar"&not[]=collection:"baz"&not[]=collection:"boop"';
84
+ window.history.replaceState({ path: url.href }, '', url.href);
85
+ const restorationState = handler.getRestorationState();
86
+ expect(restorationState.selectedFacets.collection.foo.state).to.equal('selected');
87
+ expect(restorationState.selectedFacets.collection.bar.state).to.equal('selected');
88
+ expect(restorationState.selectedFacets.collection.baz.state).to.equal('hidden');
89
+ expect(restorationState.selectedFacets.collection.boop.state).to.equal('hidden');
90
+ });
91
+ it('negative facets take precedence if both present in URL', async () => {
92
+ const handler = new RestorationStateHandler({ context: 'search' });
93
+ const url = new URL(window.location.href);
94
+ url.search = '?and[]=collection:"foo"&not[]=collection:"foo"';
95
+ window.history.replaceState({ path: url.href }, '', url.href);
96
+ const restorationState = handler.getRestorationState();
97
+ expect(restorationState.selectedFacets.collection.foo.state).to.equal('hidden');
98
+ });
99
+ it('should restore sort from URL (space format)', async () => {
100
+ const handler = new RestorationStateHandler({ context: 'search' });
101
+ const url = new URL(window.location.href);
102
+ url.search = '?sort=date+desc';
103
+ window.history.replaceState({ path: url.href }, '', url.href);
104
+ const restorationState = handler.getRestorationState();
105
+ expect(restorationState.selectedSort).to.equal('date');
106
+ expect(restorationState.sortDirection).to.equal('desc');
107
+ });
108
+ it('should restore sort from URL (prefix format, desc)', async () => {
109
+ const handler = new RestorationStateHandler({ context: 'search' });
110
+ const url = new URL(window.location.href);
111
+ url.search = '?sort=-date';
112
+ window.history.replaceState({ path: url.href }, '', url.href);
113
+ const restorationState = handler.getRestorationState();
114
+ expect(restorationState.selectedSort).to.equal('date');
115
+ expect(restorationState.sortDirection).to.equal('desc');
116
+ });
117
+ it('should restore sort from URL (prefix format, asc)', async () => {
118
+ const handler = new RestorationStateHandler({ context: 'search' });
119
+ const url = new URL(window.location.href);
120
+ url.search = '?sort=date';
121
+ window.history.replaceState({ path: url.href }, '', url.href);
122
+ const restorationState = handler.getRestorationState();
123
+ expect(restorationState.selectedSort).to.equal('date');
124
+ expect(restorationState.sortDirection).to.equal('asc');
125
+ });
126
+ });
127
127
  //# sourceMappingURL=restoration-state-handler.test.js.map
@@ -1 +1 @@
1
- import '../../src/sort-filter-bar/sort-filter-bar';
1
+ import '../../src/sort-filter-bar/sort-filter-bar';
@@ -1,122 +1,122 @@
1
- /* eslint-disable import/no-duplicates */
2
- import { expect, fixture } from '@open-wc/testing';
3
- import { html } from 'lit';
4
- import '../../src/sort-filter-bar/sort-filter-bar';
5
- describe('Sort direction buttons', () => {
6
- it('should render sort direction button', async () => {
7
- var _a;
1
+ /* eslint-disable import/no-duplicates */
2
+ import { expect, fixture } from '@open-wc/testing';
3
+ import { html } from 'lit';
4
+ import '../../src/sort-filter-bar/sort-filter-bar';
5
+ describe('Sort direction buttons', () => {
6
+ it('should render sort direction button', async () => {
7
+ var _a;
8
8
  const el = await fixture(html `
9
9
  <sort-filter-bar> </sort-filter-bar>
10
- `);
11
- el.sortDirection = 'asc'; // selected sort
12
- await el.updateComplete;
13
- const sortDirectionButtonList = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#sort-direction-selector');
14
- const sortByAscButton = sortDirectionButtonList === null || sortDirectionButtonList === void 0 ? void 0 : sortDirectionButtonList.querySelector('#sort-ascending-btn');
15
- expect(sortByAscButton).to.exist;
16
- // ascending order button is selected
17
- expect(sortByAscButton === null || sortByAscButton === void 0 ? void 0 : sortByAscButton.getAttribute('class')).to.equal('sort-button selected');
18
- const sortByDescButton = sortDirectionButtonList === null || sortDirectionButtonList === void 0 ? void 0 : sortDirectionButtonList.querySelector('#sort-descending-btn');
19
- expect(sortByDescButton).to.exist;
20
- // descending order button is not selected
21
- expect(sortByDescButton === null || sortByDescButton === void 0 ? void 0 : sortByDescButton.getAttribute('class')).to.not.equal('sort-button selected');
22
- });
23
- });
24
- describe('Sort selector default buttons', async () => {
25
- var _a;
10
+ `);
11
+ el.sortDirection = 'asc'; // selected sort
12
+ await el.updateComplete;
13
+ const sortDirectionButtonList = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#sort-direction-selector');
14
+ const sortByAscButton = sortDirectionButtonList === null || sortDirectionButtonList === void 0 ? void 0 : sortDirectionButtonList.querySelector('#sort-ascending-btn');
15
+ expect(sortByAscButton).to.exist;
16
+ // ascending order button is selected
17
+ expect(sortByAscButton === null || sortByAscButton === void 0 ? void 0 : sortByAscButton.getAttribute('class')).to.equal('sort-button selected');
18
+ const sortByDescButton = sortDirectionButtonList === null || sortDirectionButtonList === void 0 ? void 0 : sortDirectionButtonList.querySelector('#sort-descending-btn');
19
+ expect(sortByDescButton).to.exist;
20
+ // descending order button is not selected
21
+ expect(sortByDescButton === null || sortByDescButton === void 0 ? void 0 : sortByDescButton.getAttribute('class')).to.not.equal('sort-button selected');
22
+ });
23
+ });
24
+ describe('Sort selector default buttons', async () => {
25
+ var _a;
26
26
  const el = await fixture(html `
27
27
  <sort-filter-bar> </sort-filter-bar>
28
- `);
29
- const sortSelectorContainer = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#desktop-sort-selector');
30
- it('should render sort-by label', async () => {
31
- var _a;
32
- expect((_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(0)) === null || _a === void 0 ? void 0 : _a.textContent).to.equal('Sort By');
33
- });
34
- it('should render default relevance-sort selector', async () => {
35
- var _a;
36
- const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(1)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
37
- expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent).to.contain('Relevance');
38
- expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.getAttribute('class')).to.equal('selected');
39
- });
40
- it('should render default view-sort selector', async () => {
41
- var _a;
42
- const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(2)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
43
- expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent).to.contain('Weekly Views');
44
- });
45
- it('should render active view-sort selectors', async () => {
46
- el.selectedSort = 'alltimeview';
47
- await el.updateComplete;
48
- const defaultSortSelector = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.querySelector('a.selected');
49
- expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent).to.contain('All-time Views');
50
- });
51
- it('should render default title-sort selector', async () => {
52
- var _a;
53
- const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(3)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
54
- expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent).to.contain('Title');
55
- });
56
- it('should render default date-sort selector', async () => {
57
- var _a;
58
- const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(4)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
59
- expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent).to.contain('Date Published');
60
- });
61
- it('should render active date-sort selectors', async () => {
62
- el.selectedSort = 'datereviewed';
63
- await el.updateComplete;
64
- const defaultSortSelector = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.querySelector('a.selected');
65
- expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent).to.contain('Date Reviewed');
66
- });
67
- it('should render default creator-sort selector', async () => {
68
- var _a;
69
- const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(5)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
70
- expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent).to.contain('Creator');
71
- });
72
- it('click event on view-sort selector', async () => {
73
- var _a;
74
- const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(2)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
75
- await (defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.click());
76
- expect(el.selectedSort).to.equal('weeklyview');
77
- });
78
- it('click event on title selector', async () => {
79
- var _a;
80
- const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(3)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
81
- await (defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.click());
82
- expect(el.selectedSort).to.equal('title');
83
- });
84
- it('click event on date-sort selector', async () => {
85
- var _a;
86
- const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(4)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
87
- await (defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.click());
88
- expect(el.selectedSort).to.equal('date');
89
- });
90
- it('click event on creator selector', async () => {
91
- var _a;
92
- const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(5)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
93
- await (defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.click());
94
- expect(el.selectedSort).to.equal('creator');
95
- });
96
- });
97
- describe('Display mode/style buttons', () => {
98
- it('should render all display mode buttons', async () => {
99
- var _a, _b, _c, _d, _e;
28
+ `);
29
+ const sortSelectorContainer = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#desktop-sort-selector');
30
+ it('should render sort-by label', async () => {
31
+ var _a;
32
+ expect((_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(0)) === null || _a === void 0 ? void 0 : _a.textContent).to.equal('Sort By');
33
+ });
34
+ it('should render default relevance-sort selector', async () => {
35
+ var _a;
36
+ const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(1)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
37
+ expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent).to.contain('Relevance');
38
+ expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.getAttribute('class')).to.equal('selected');
39
+ });
40
+ it('should render default view-sort selector', async () => {
41
+ var _a;
42
+ const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(2)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
43
+ expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent).to.contain('Weekly Views');
44
+ });
45
+ it('should render active view-sort selectors', async () => {
46
+ el.selectedSort = 'alltimeview';
47
+ await el.updateComplete;
48
+ const defaultSortSelector = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.querySelector('a.selected');
49
+ expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent).to.contain('All-time Views');
50
+ });
51
+ it('should render default title-sort selector', async () => {
52
+ var _a;
53
+ const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(3)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
54
+ expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent).to.contain('Title');
55
+ });
56
+ it('should render default date-sort selector', async () => {
57
+ var _a;
58
+ const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(4)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
59
+ expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent).to.contain('Date Published');
60
+ });
61
+ it('should render active date-sort selectors', async () => {
62
+ el.selectedSort = 'datereviewed';
63
+ await el.updateComplete;
64
+ const defaultSortSelector = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.querySelector('a.selected');
65
+ expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent).to.contain('Date Reviewed');
66
+ });
67
+ it('should render default creator-sort selector', async () => {
68
+ var _a;
69
+ const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(5)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
70
+ expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent).to.contain('Creator');
71
+ });
72
+ it('click event on view-sort selector', async () => {
73
+ var _a;
74
+ const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(2)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
75
+ await (defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.click());
76
+ expect(el.selectedSort).to.equal('weeklyview');
77
+ });
78
+ it('click event on title selector', async () => {
79
+ var _a;
80
+ const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(3)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
81
+ await (defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.click());
82
+ expect(el.selectedSort).to.equal('title');
83
+ });
84
+ it('click event on date-sort selector', async () => {
85
+ var _a;
86
+ const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(4)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
87
+ await (defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.click());
88
+ expect(el.selectedSort).to.equal('date');
89
+ });
90
+ it('click event on creator selector', async () => {
91
+ var _a;
92
+ const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(5)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
93
+ await (defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.click());
94
+ expect(el.selectedSort).to.equal('creator');
95
+ });
96
+ });
97
+ describe('Display mode/style buttons', () => {
98
+ it('should render all display mode buttons', async () => {
99
+ var _a, _b, _c, _d, _e;
100
100
  const el = await fixture(html `
101
101
  <sort-filter-bar> </sort-filter-bar>
102
- `);
103
- const displayModeButtonList = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#display-style-selector')) === null || _b === void 0 ? void 0 : _b.querySelector('ul');
104
- const gridButton = (_c = displayModeButtonList === null || displayModeButtonList === void 0 ? void 0 : displayModeButtonList.children.item(0)) === null || _c === void 0 ? void 0 : _c.querySelector('#grid-button');
105
- expect(gridButton).to.exist;
106
- const detailListButton = (_d = displayModeButtonList === null || displayModeButtonList === void 0 ? void 0 : displayModeButtonList.children.item(1)) === null || _d === void 0 ? void 0 : _d.querySelector('#list-detail-button');
107
- expect(detailListButton).to.exist;
108
- const compactListButton = (_e = displayModeButtonList === null || displayModeButtonList === void 0 ? void 0 : displayModeButtonList.children.item(2)) === null || _e === void 0 ? void 0 : _e.querySelector('#list-compact-button');
109
- expect(compactListButton).to.exist;
110
- });
111
- it('should active current display mode', async () => {
112
- var _a, _b, _c;
102
+ `);
103
+ const displayModeButtonList = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#display-style-selector')) === null || _b === void 0 ? void 0 : _b.querySelector('ul');
104
+ const gridButton = (_c = displayModeButtonList === null || displayModeButtonList === void 0 ? void 0 : displayModeButtonList.children.item(0)) === null || _c === void 0 ? void 0 : _c.querySelector('#grid-button');
105
+ expect(gridButton).to.exist;
106
+ const detailListButton = (_d = displayModeButtonList === null || displayModeButtonList === void 0 ? void 0 : displayModeButtonList.children.item(1)) === null || _d === void 0 ? void 0 : _d.querySelector('#list-detail-button');
107
+ expect(detailListButton).to.exist;
108
+ const compactListButton = (_e = displayModeButtonList === null || displayModeButtonList === void 0 ? void 0 : displayModeButtonList.children.item(2)) === null || _e === void 0 ? void 0 : _e.querySelector('#list-compact-button');
109
+ expect(compactListButton).to.exist;
110
+ });
111
+ it('should active current display mode', async () => {
112
+ var _a, _b, _c;
113
113
  const el = await fixture(html `
114
114
  <sort-filter-bar> </sort-filter-bar>
115
- `);
116
- el.displayMode = 'grid';
117
- await el.updateComplete;
118
- const displayModeTitle = (_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#display-style-selector')) === null || _b === void 0 ? void 0 : _b.querySelector('button.active')) === null || _c === void 0 ? void 0 : _c.getAttribute('title');
119
- expect(displayModeTitle).to.equal('Tile view');
120
- });
121
- });
115
+ `);
116
+ el.displayMode = 'grid';
117
+ await el.updateComplete;
118
+ const displayModeTitle = (_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#display-style-selector')) === null || _b === void 0 ? void 0 : _b.querySelector('button.active')) === null || _c === void 0 ? void 0 : _c.getAttribute('title');
119
+ expect(displayModeTitle).to.equal('Tile view');
120
+ });
121
+ });
122
122
  //# sourceMappingURL=sort-filter-bar.test.js.map
@@ -1 +1 @@
1
- import '../src/tiles/overlay/text-overlay';
1
+ import '../src/tiles/overlay/text-overlay';