@internetarchive/collection-browser 0.4.11 → 0.4.13-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/.editorconfig +29 -29
  2. package/.github/workflows/ci.yml +26 -26
  3. package/.github/workflows/gh-pages-main.yml +39 -39
  4. package/.github/workflows/npm-publish.yml +39 -39
  5. package/.github/workflows/pr-preview.yml +38 -38
  6. package/.husky/pre-commit +4 -4
  7. package/LICENSE +661 -661
  8. package/README.md +83 -83
  9. package/dist/index.d.ts +9 -9
  10. package/dist/index.js +9 -9
  11. package/dist/src/app-root.d.ts +50 -50
  12. package/dist/src/app-root.js +278 -278
  13. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  14. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  15. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  16. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  17. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  18. package/dist/src/assets/img/icons/chevron.js +2 -2
  19. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  20. package/dist/src/assets/img/icons/empty-query.js +2 -2
  21. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  22. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  23. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  24. package/dist/src/assets/img/icons/eye.js +2 -2
  25. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  26. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  27. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  28. package/dist/src/assets/img/icons/login-required.js +2 -2
  29. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  30. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  31. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  32. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  33. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  34. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  35. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  36. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  37. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  38. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  39. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  40. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  41. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  42. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  43. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  44. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  45. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  46. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  47. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  48. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  49. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  50. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  51. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  52. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  53. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  54. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  55. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  56. package/dist/src/assets/img/icons/null-result.js +2 -2
  57. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  58. package/dist/src/assets/img/icons/restricted.js +2 -2
  59. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  60. package/dist/src/assets/img/icons/reviews.js +2 -2
  61. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  62. package/dist/src/assets/img/icons/upload.js +2 -2
  63. package/dist/src/assets/img/icons/views.d.ts +1 -1
  64. package/dist/src/assets/img/icons/views.js +2 -2
  65. package/dist/src/circular-activity-indicator.d.ts +5 -5
  66. package/dist/src/circular-activity-indicator.js +17 -17
  67. package/dist/src/collection-browser.d.ts +280 -279
  68. package/dist/src/collection-browser.js +1178 -1156
  69. package/dist/src/collection-browser.js.map +1 -1
  70. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  71. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  72. package/dist/src/collection-facets/facets-template.d.ts +16 -16
  73. package/dist/src/collection-facets/facets-template.js +125 -125
  74. package/dist/src/collection-facets/more-facets-content.d.ts +76 -75
  75. package/dist/src/collection-facets/more-facets-content.js +354 -377
  76. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  77. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  78. package/dist/src/collection-facets/more-facets-pagination.js +197 -195
  79. package/dist/src/collection-facets/more-facets-pagination.js.map +1 -1
  80. package/dist/src/collection-facets/toggle-switch.d.ts +41 -0
  81. package/dist/src/collection-facets/toggle-switch.js +184 -0
  82. package/dist/src/collection-facets/toggle-switch.js.map +1 -0
  83. package/dist/src/collection-facets.d.ts +81 -81
  84. package/dist/src/collection-facets.js +376 -385
  85. package/dist/src/collection-facets.js.map +1 -1
  86. package/dist/src/empty-placeholder.d.ts +13 -11
  87. package/dist/src/empty-placeholder.js +80 -44
  88. package/dist/src/empty-placeholder.js.map +1 -1
  89. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  90. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  91. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  92. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  93. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  94. package/dist/src/mediatype/mediatype-config.js +85 -85
  95. package/dist/src/models.d.ts +119 -115
  96. package/dist/src/models.js +136 -125
  97. package/dist/src/models.js.map +1 -1
  98. package/dist/src/restoration-state-handler.d.ts +45 -45
  99. package/dist/src/restoration-state-handler.js +230 -230
  100. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  101. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +25 -26
  102. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js.map +1 -1
  103. package/dist/src/sort-filter-bar/alpha-bar.d.ts +20 -20
  104. package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
  105. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  106. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  107. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  108. package/dist/src/sort-filter-bar/img/list.js +3 -3
  109. package/dist/src/sort-filter-bar/img/list.js.map +1 -1
  110. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -0
  111. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +15 -0
  112. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js.map +1 -0
  113. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -0
  114. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +17 -0
  115. package/dist/src/sort-filter-bar/img/sort-toggle-down.js.map +1 -0
  116. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -0
  117. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +17 -0
  118. package/dist/src/sort-filter-bar/img/sort-toggle-up.js.map +1 -0
  119. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  120. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  121. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  122. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  123. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +189 -108
  124. package/dist/src/sort-filter-bar/sort-filter-bar.js +708 -614
  125. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  126. package/dist/src/styles/item-image-styles.d.ts +8 -8
  127. package/dist/src/styles/item-image-styles.js +9 -9
  128. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  129. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  130. package/dist/src/tiles/grid/account-tile.d.ts +20 -20
  131. package/dist/src/tiles/grid/account-tile.js +64 -64
  132. package/dist/src/tiles/grid/collection-tile.d.ts +17 -17
  133. package/dist/src/tiles/grid/collection-tile.js +71 -71
  134. package/dist/src/tiles/grid/item-tile.d.ts +32 -32
  135. package/dist/src/tiles/grid/item-tile.js +130 -126
  136. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  137. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  138. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +7 -7
  139. package/dist/src/tiles/grid/tile-stats.d.ts +11 -10
  140. package/dist/src/tiles/grid/tile-stats.js +44 -40
  141. package/dist/src/tiles/grid/tile-stats.js.map +1 -1
  142. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  143. package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
  144. package/dist/src/tiles/hover/tile-hover-pane.d.ts +15 -15
  145. package/dist/src/tiles/hover/tile-hover-pane.js +38 -38
  146. package/dist/src/tiles/image-block.d.ts +17 -17
  147. package/dist/src/tiles/image-block.js +72 -72
  148. package/dist/src/tiles/item-image.d.ts +35 -35
  149. package/dist/src/tiles/item-image.js +117 -117
  150. package/dist/src/tiles/list/account-label.d.ts +1 -1
  151. package/dist/src/tiles/list/account-label.js +6 -6
  152. package/dist/src/tiles/list/date-label.d.ts +1 -1
  153. package/dist/src/tiles/list/date-label.js +12 -12
  154. package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
  155. package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
  156. package/dist/src/tiles/list/tile-list-compact.d.ts +22 -21
  157. package/dist/src/tiles/list/tile-list-compact.js +114 -101
  158. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  159. package/dist/src/tiles/list/tile-list.d.ts +55 -55
  160. package/dist/src/tiles/list/tile-list.js +304 -301
  161. package/dist/src/tiles/list/tile-list.js.map +1 -1
  162. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  163. package/dist/src/tiles/mediatype-icon.js +47 -47
  164. package/dist/src/tiles/overlay/icon-overlay.d.ts +10 -10
  165. package/dist/src/tiles/overlay/icon-overlay.js +40 -40
  166. package/dist/src/tiles/overlay/icon-text-overlay.d.ts +9 -9
  167. package/dist/src/tiles/overlay/icon-text-overlay.js +38 -38
  168. package/dist/src/tiles/overlay/text-overlay.d.ts +10 -10
  169. package/dist/src/tiles/overlay/text-overlay.js +42 -42
  170. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  171. package/dist/src/tiles/text-snippet-block.js +73 -73
  172. package/dist/src/tiles/tile-dispatcher.d.ts +58 -58
  173. package/dist/src/tiles/tile-dispatcher.js +194 -194
  174. package/dist/src/utils/analytics-events.d.ts +22 -22
  175. package/dist/src/utils/analytics-events.js +24 -24
  176. package/dist/src/utils/format-count.d.ts +7 -7
  177. package/dist/src/utils/format-count.js +76 -76
  178. package/dist/src/utils/format-date.d.ts +2 -2
  179. package/dist/src/utils/format-date.js +23 -23
  180. package/dist/src/utils/format-unit-size.d.ts +2 -2
  181. package/dist/src/utils/format-unit-size.js +33 -33
  182. package/dist/test/collection-browser.test.d.ts +1 -1
  183. package/dist/test/collection-browser.test.js +584 -584
  184. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  185. package/dist/test/collection-facets/facets-template.test.js +62 -62
  186. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  187. package/dist/test/collection-facets/more-facets-content.test.js +114 -114
  188. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  189. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  190. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -0
  191. package/dist/test/collection-facets/toggle-switch.test.js +87 -0
  192. package/dist/test/collection-facets/toggle-switch.test.js.map +1 -0
  193. package/dist/test/collection-facets.test.d.ts +2 -2
  194. package/dist/test/collection-facets.test.js +460 -460
  195. package/dist/test/empty-placeholder.test.d.ts +1 -1
  196. package/dist/test/empty-placeholder.test.js +33 -33
  197. package/dist/test/icon-overlay.test.d.ts +1 -1
  198. package/dist/test/icon-overlay.test.js +24 -24
  199. package/dist/test/image-block.test.d.ts +1 -1
  200. package/dist/test/image-block.test.js +48 -48
  201. package/dist/test/item-image.test.d.ts +1 -1
  202. package/dist/test/item-image.test.js +84 -84
  203. package/dist/test/mediatype-config.test.d.ts +1 -1
  204. package/dist/test/mediatype-config.test.js +16 -16
  205. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  206. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  207. package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
  208. package/dist/test/mocks/mock-collection-name-cache.js +13 -13
  209. package/dist/test/mocks/mock-search-responses.d.ts +12 -12
  210. package/dist/test/mocks/mock-search-responses.js +341 -341
  211. package/dist/test/mocks/mock-search-service.d.ts +13 -13
  212. package/dist/test/mocks/mock-search-service.js +40 -40
  213. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  214. package/dist/test/restoration-state-handler.test.js +125 -125
  215. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  216. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  217. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  218. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  219. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  220. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +372 -199
  221. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -1
  222. package/dist/test/text-overlay.test.d.ts +1 -1
  223. package/dist/test/text-overlay.test.js +48 -48
  224. package/dist/test/text-snippet-block.test.d.ts +1 -1
  225. package/dist/test/text-snippet-block.test.js +57 -57
  226. package/dist/test/tile-stats.test.d.ts +1 -1
  227. package/dist/test/tile-stats.test.js +33 -33
  228. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  229. package/dist/test/tiles/grid/account-tile.test.js +76 -76
  230. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  231. package/dist/test/tiles/grid/collection-tile.test.js +73 -73
  232. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  233. package/dist/test/tiles/grid/item-tile.test.js +158 -158
  234. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  235. package/dist/test/tiles/hover/hover-pane-controller.test.js +257 -257
  236. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  237. package/dist/test/tiles/hover/tile-hover-pane.test.js +13 -13
  238. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  239. package/dist/test/tiles/list/tile-list-compact.test.js +104 -92
  240. package/dist/test/tiles/list/tile-list-compact.test.js.map +1 -1
  241. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  242. package/dist/test/tiles/list/tile-list.test.js +175 -163
  243. package/dist/test/tiles/list/tile-list.test.js.map +1 -1
  244. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  245. package/dist/test/tiles/tile-dispatcher.test.js +67 -67
  246. package/dist/test/utils/format-count.test.d.ts +1 -1
  247. package/dist/test/utils/format-count.test.js +23 -23
  248. package/dist/test/utils/format-date.test.d.ts +1 -1
  249. package/dist/test/utils/format-date.test.js +17 -17
  250. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  251. package/dist/test/utils/format-unit-size.test.js +17 -17
  252. package/local.archive.org.cert +86 -86
  253. package/local.archive.org.key +27 -27
  254. package/package.json +4 -3
  255. package/renovate.json +6 -6
  256. package/src/collection-browser.ts +28 -1
  257. package/src/collection-facets/more-facets-content.ts +25 -48
  258. package/src/collection-facets/more-facets-pagination.ts +5 -3
  259. package/src/collection-facets/toggle-switch.ts +184 -0
  260. package/src/collection-facets.ts +1 -10
  261. package/src/empty-placeholder.ts +53 -7
  262. package/src/models.ts +23 -8
  263. package/src/sort-filter-bar/alpha-bar-tooltip.ts +1 -2
  264. package/src/sort-filter-bar/img/list.ts +1 -1
  265. package/src/sort-filter-bar/img/sort-toggle-disabled.ts +15 -0
  266. package/src/sort-filter-bar/img/sort-toggle-down.ts +17 -0
  267. package/src/sort-filter-bar/img/sort-toggle-up.ts +17 -0
  268. package/src/sort-filter-bar/sort-filter-bar.ts +433 -303
  269. package/src/tiles/grid/item-tile.ts +6 -1
  270. package/src/tiles/grid/tile-stats.ts +3 -1
  271. package/src/tiles/list/tile-list-compact.ts +15 -2
  272. package/src/tiles/list/tile-list.ts +3 -0
  273. package/test/collection-facets/toggle-switch.test.ts +154 -0
  274. package/test/sort-filter-bar/sort-filter-bar.test.ts +377 -101
  275. package/test/tiles/list/tile-list-compact.test.ts +14 -0
  276. package/test/tiles/list/tile-list.test.ts +14 -0
  277. package/tsconfig.json +21 -21
  278. package/web-dev-server.config.mjs +30 -30
  279. package/web-test-runner.config.mjs +41 -41
@@ -1,218 +1,391 @@
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
- const el = await fixture(html `
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;
1
+ /* eslint-disable import/no-duplicates */
2
+ import { expect, fixture } from '@open-wc/testing';
3
+ import { html } from 'lit';
4
+ import { SharedResizeObserver } from '@internetarchive/shared-resize-observer';
5
+ import '../../src/sort-filter-bar/sort-filter-bar';
6
+ describe('Sort selector default buttons', async () => {
7
+ var _a;
26
8
  const el = await fixture(html `
27
9
  <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;
10
+ `);
11
+ const sortSelectorContainer = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#sort-selector-container');
12
+ const desktopSortSelector = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.querySelector('#desktop-sort-selector');
13
+ before(async () => {
14
+ el.resizeObserver = new SharedResizeObserver();
15
+ await el.updateComplete;
16
+ });
17
+ it('should render basic component', async () => {
18
+ expect(sortSelectorContainer).to.exist;
19
+ expect(desktopSortSelector).to.exist;
20
+ });
21
+ it('should render sort-by label', async () => {
22
+ var _a, _b;
23
+ const sortByLabel = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.sort-by-text');
24
+ expect(sortByLabel).to.exist;
25
+ expect((_b = sortByLabel === null || sortByLabel === void 0 ? void 0 : sortByLabel.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Sort by:');
26
+ });
27
+ it('should render sort direction button', async () => {
28
+ var _a;
29
+ const sortDirections = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.sort-direction-container');
30
+ expect(sortDirections).to.exist;
31
+ expect(sortDirections === null || sortDirections === void 0 ? void 0 : sortDirections.querySelector('.sort-direction-icon')).to.exist;
32
+ });
33
+ it('should render default relevance-sort selector', async () => {
34
+ var _a;
35
+ const defaultSortSelector = desktopSortSelector === null || desktopSortSelector === void 0 ? void 0 : desktopSortSelector.querySelector('a.selected');
36
+ expect((_a = defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent) === null || _a === void 0 ? void 0 : _a.trim()).to.equal('Relevance');
37
+ });
38
+ it('should render default view-sort selector', async () => {
39
+ var _a, _b;
40
+ const defaultSortSelector = (_a = desktopSortSelector === null || desktopSortSelector === void 0 ? void 0 : desktopSortSelector.children.item(1)) === null || _a === void 0 ? void 0 : _a.querySelector('ia-dropdown');
41
+ expect((_b = defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Weekly views');
42
+ });
43
+ it('should render active view-sort selectors', async () => {
44
+ var _a;
45
+ el.selectedSort = 'alltimeview';
46
+ await el.updateComplete;
47
+ const defaultSortSelector = desktopSortSelector === null || desktopSortSelector === void 0 ? void 0 : desktopSortSelector.querySelector('ia-dropdown.selected');
48
+ expect((_a = defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent) === null || _a === void 0 ? void 0 : _a.trim()).to.equal('All-time views');
49
+ });
50
+ it('should render default title-sort selector', async () => {
51
+ var _a, _b;
52
+ const defaultSortSelector = (_a = desktopSortSelector === null || desktopSortSelector === void 0 ? void 0 : desktopSortSelector.children.item(2)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
53
+ expect((_b = defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Title');
54
+ });
55
+ it('should render default date-sort selector', async () => {
56
+ var _a, _b;
57
+ const defaultSortSelector = (_a = desktopSortSelector === null || desktopSortSelector === void 0 ? void 0 : desktopSortSelector.children.item(3)) === null || _a === void 0 ? void 0 : _a.querySelector('ia-dropdown');
58
+ expect((_b = defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Date published');
59
+ });
60
+ it('should render active date-sort selectors', async () => {
61
+ var _a;
62
+ el.selectedSort = 'datereviewed';
63
+ await el.updateComplete;
64
+ const defaultSortSelector = desktopSortSelector === null || desktopSortSelector === void 0 ? void 0 : desktopSortSelector.querySelector('ia-dropdown.selected');
65
+ expect((_a = defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent) === null || _a === void 0 ? void 0 : _a.trim()).to.equal('Date reviewed');
66
+ });
67
+ it('should render default creator-sort selector', async () => {
68
+ var _a, _b;
69
+ const defaultSortSelector = (_a = desktopSortSelector === null || desktopSortSelector === void 0 ? void 0 : desktopSortSelector.children.item(4)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
70
+ expect((_b = defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Creator');
71
+ });
72
+ it('handles click event on view-sort selector', async () => {
73
+ var _a;
74
+ const defaultSortSelector = (_a = desktopSortSelector === null || desktopSortSelector === void 0 ? void 0 : desktopSortSelector.children.item(1)) === null || _a === void 0 ? void 0 : _a.querySelector('.dropdown-label');
75
+ defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.click();
76
+ await el.updateComplete;
77
+ expect(el.selectedSort).to.equal('weeklyview');
78
+ });
79
+ it('handles click event on title selector', async () => {
80
+ var _a;
81
+ const defaultSortSelector = (_a = desktopSortSelector === null || desktopSortSelector === void 0 ? void 0 : desktopSortSelector.children.item(2)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
82
+ defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.click();
83
+ await el.updateComplete;
84
+ expect(el.selectedSort).to.equal('title');
85
+ });
86
+ it('handles click event on date-sort selector', async () => {
87
+ var _a;
88
+ const defaultSortSelector = (_a = desktopSortSelector === null || desktopSortSelector === void 0 ? void 0 : desktopSortSelector.children.item(3)) === null || _a === void 0 ? void 0 : _a.querySelector('.dropdown-label');
89
+ defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.click();
90
+ await el.updateComplete;
91
+ expect(el.selectedSort).to.equal('date');
92
+ });
93
+ it('handles return/space key event on view-sort selector', async () => {
94
+ var _a;
95
+ const defaultSortSelector = (_a = desktopSortSelector === null || desktopSortSelector === void 0 ? void 0 : desktopSortSelector.children.item(1)) === null || _a === void 0 ? void 0 : _a.querySelector('.dropdown-label');
96
+ el.selectedSort = 'relevance';
97
+ const enterEvent = new KeyboardEvent('keydown', { key: 'Enter' });
98
+ defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.dispatchEvent(enterEvent);
99
+ await el.updateComplete;
100
+ expect(el.selectedSort).to.equal('weeklyview');
101
+ el.selectedSort = 'relevance';
102
+ const spaceEvent = new KeyboardEvent('keydown', { key: ' ' });
103
+ defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.dispatchEvent(spaceEvent);
104
+ await el.updateComplete;
105
+ expect(el.selectedSort).to.equal('weeklyview');
106
+ });
107
+ it('handles return/space key event on date-sort selector', async () => {
108
+ var _a;
109
+ const defaultSortSelector = (_a = desktopSortSelector === null || desktopSortSelector === void 0 ? void 0 : desktopSortSelector.children.item(3)) === null || _a === void 0 ? void 0 : _a.querySelector('.dropdown-label');
110
+ el.selectedSort = 'relevance';
111
+ const enterEvent = new KeyboardEvent('keydown', { key: 'Enter' });
112
+ defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.dispatchEvent(enterEvent);
113
+ await el.updateComplete;
114
+ expect(el.selectedSort).to.equal('date');
115
+ el.selectedSort = 'relevance';
116
+ const spaceEvent = new KeyboardEvent('keydown', { key: ' ' });
117
+ defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.dispatchEvent(spaceEvent);
118
+ await el.updateComplete;
119
+ expect(el.selectedSort).to.equal('date');
120
+ });
121
+ it('handles click event on creator selector', async () => {
122
+ var _a;
123
+ const defaultSortSelector = (_a = desktopSortSelector === null || desktopSortSelector === void 0 ? void 0 : desktopSortSelector.children.item(4)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
124
+ defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.click();
125
+ await el.updateComplete;
126
+ expect(el.selectedSort).to.equal('creator');
127
+ });
128
+ it('handles click event on view-sort dropdown option', async () => {
129
+ var _a, _b;
130
+ const defaultSortSelector = (_a = desktopSortSelector === null || desktopSortSelector === void 0 ? void 0 : desktopSortSelector.children.item(1)) === null || _a === void 0 ? void 0 : _a.querySelector('ia-dropdown');
131
+ const firstOption = (_b = defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('li > button');
132
+ expect(firstOption).to.exist;
133
+ firstOption === null || firstOption === void 0 ? void 0 : firstOption.click();
134
+ await el.updateComplete;
135
+ expect(el.selectedSort).to.equal('weeklyview');
136
+ });
137
+ it('handles click event on date-sort dropdown option', async () => {
138
+ var _a, _b;
139
+ const defaultSortSelector = (_a = desktopSortSelector === null || desktopSortSelector === void 0 ? void 0 : desktopSortSelector.children.item(3)) === null || _a === void 0 ? void 0 : _a.querySelector('ia-dropdown');
140
+ const firstOption = (_b = defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('li > button');
141
+ expect(firstOption).to.exist;
142
+ firstOption === null || firstOption === void 0 ? void 0 : firstOption.click();
143
+ await el.updateComplete;
144
+ expect(el.selectedSort).to.equal('date');
145
+ });
146
+ it('shows view sort selector backdrop when view sort open', async () => {
147
+ var _a, _b, _c, _d;
148
+ const defaultSortSelector = (_a = desktopSortSelector === null || desktopSortSelector === void 0 ? void 0 : desktopSortSelector.children.item(1)) === null || _a === void 0 ? void 0 : _a.querySelector('ia-dropdown');
149
+ const caret = (_b = defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.caret');
150
+ expect(caret).to.exist;
151
+ caret === null || caret === void 0 ? void 0 : caret.click();
152
+ await el.updateComplete;
153
+ let backdrop = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#sort-selector-backdrop');
154
+ expect(backdrop).to.exist;
155
+ backdrop === null || backdrop === void 0 ? void 0 : backdrop.click();
156
+ await el.updateComplete;
157
+ backdrop = (_d = el.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('#sort-selector-backdrop');
158
+ expect(backdrop).not.to.exist;
159
+ });
160
+ it('shows date sort selector backdrop when date sort open', async () => {
161
+ var _a, _b, _c, _d;
162
+ const defaultSortSelector = (_a = desktopSortSelector === null || desktopSortSelector === void 0 ? void 0 : desktopSortSelector.children.item(3)) === null || _a === void 0 ? void 0 : _a.querySelector('ia-dropdown');
163
+ const caret = (_b = defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.caret');
164
+ expect(caret).to.exist;
165
+ caret === null || caret === void 0 ? void 0 : caret.click();
166
+ await el.updateComplete;
167
+ let backdrop = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#sort-selector-backdrop');
168
+ expect(backdrop).to.exist;
169
+ backdrop === null || backdrop === void 0 ? void 0 : backdrop.click();
170
+ await el.updateComplete;
171
+ backdrop = (_d = el.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('#sort-selector-backdrop');
172
+ expect(backdrop).not.to.exist;
173
+ });
174
+ it('closes dropdown by hitting escape key', async () => {
175
+ var _a, _b, _c, _d;
176
+ const defaultSortSelector = (_a = desktopSortSelector === null || desktopSortSelector === void 0 ? void 0 : desktopSortSelector.children.item(3)) === null || _a === void 0 ? void 0 : _a.querySelector('ia-dropdown');
177
+ const caret = (_b = defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.caret');
178
+ expect(caret).to.exist;
179
+ caret === null || caret === void 0 ? void 0 : caret.click();
180
+ await el.updateComplete;
181
+ let backdrop = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#sort-selector-backdrop');
182
+ expect(backdrop).to.exist;
183
+ document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape' }));
184
+ await el.updateComplete;
185
+ backdrop = (_d = el.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('#sort-selector-backdrop');
186
+ expect(backdrop).not.to.exist;
187
+ });
188
+ });
189
+ describe('Sort direction button behavior', () => {
190
+ it('should disable sort direction button when sorting by relevance', async () => {
191
+ var _a;
192
+ const el = await fixture(html `
193
+ <sort-filter-bar> </sort-filter-bar>
194
+ `);
195
+ el.selectedSort = 'relevance';
196
+ await el.updateComplete;
197
+ const sortDirectionButton = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.sort-direction-selector');
198
+ expect(sortDirectionButton).to.exist;
199
+ expect(sortDirectionButton.disabled).to.be.true;
200
+ });
201
+ it('should enable sort direction button when not sorting by relevance', async () => {
202
+ var _a;
203
+ const el = await fixture(html `
204
+ <sort-filter-bar> </sort-filter-bar>
205
+ `);
206
+ el.selectedSort = 'title';
207
+ await el.updateComplete;
208
+ const sortDirectionButton = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.sort-direction-selector');
209
+ expect(sortDirectionButton).to.exist;
210
+ expect(sortDirectionButton.disabled).to.be.false;
211
+ });
212
+ it('should toggle sort direction when clicked', async () => {
213
+ var _a;
100
214
  const el = await fixture(html `
101
215
  <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;
216
+ `);
217
+ el.selectedSort = 'title';
218
+ el.sortDirection = 'asc';
219
+ await el.updateComplete;
220
+ const sortDirectionButton = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.sort-direction-selector');
221
+ sortDirectionButton.click();
222
+ await el.updateComplete;
223
+ expect(el.sortDirection).to.equal('desc');
224
+ sortDirectionButton.click();
225
+ await el.updateComplete;
226
+ expect(el.sortDirection).to.equal('asc');
227
+ });
228
+ });
229
+ describe('Display mode/style buttons', () => {
230
+ it('should render all display mode buttons', async () => {
231
+ var _a, _b, _c, _d, _e;
113
232
  const el = await fixture(html `
114
233
  <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
- });
122
- describe('Sort/filter bar letter behavior', () => {
123
- it('sets the selected title letter when clicked', async () => {
124
- var _a, _b, _c;
234
+ `);
235
+ 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');
236
+ const gridButton = (_c = displayModeButtonList === null || displayModeButtonList === void 0 ? void 0 : displayModeButtonList.children.item(0)) === null || _c === void 0 ? void 0 : _c.querySelector('#grid-button');
237
+ expect(gridButton).to.exist;
238
+ 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');
239
+ expect(detailListButton).to.exist;
240
+ 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');
241
+ expect(compactListButton).to.exist;
242
+ });
243
+ it('should active current display mode', async () => {
244
+ var _a, _b, _c;
245
+ const el = await fixture(html `
246
+ <sort-filter-bar> </sort-filter-bar>
247
+ `);
248
+ el.displayMode = 'grid';
249
+ await el.updateComplete;
250
+ 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');
251
+ expect(displayModeTitle).to.equal('Tile view');
252
+ });
253
+ it('should change displayMode prop to the one clicked', async () => {
254
+ var _a, _b, _c;
255
+ const el = await fixture(html `
256
+ <sort-filter-bar> </sort-filter-bar>
257
+ `);
258
+ el.displayMode = 'grid';
259
+ await el.updateComplete;
260
+ const extendedListButton = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#list-detail-button');
261
+ extendedListButton.click();
262
+ await el.updateComplete;
263
+ expect(el.displayMode).to.equal('list-detail');
264
+ const compactListButton = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#list-compact-button');
265
+ compactListButton.click();
266
+ await el.updateComplete;
267
+ expect(el.displayMode).to.equal('list-compact');
268
+ const gridModeButton = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#grid-button');
269
+ gridModeButton.click();
270
+ await el.updateComplete;
271
+ expect(el.displayMode).to.equal('grid');
272
+ });
273
+ });
274
+ describe('Sort/filter bar letter behavior', () => {
275
+ it('sets the selected title letter when clicked', async () => {
276
+ var _a, _b, _c;
277
+ const el = await fixture(html `
278
+ <sort-filter-bar></sort-filter-bar>
279
+ `);
280
+ el.selectedSort = 'title';
281
+ el.prefixFilterCountMap = { title: { T: 1 }, creator: {} };
282
+ await el.updateComplete;
283
+ const alphaBar = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('alpha-bar');
284
+ const letterLink = (_b = alphaBar === null || alphaBar === void 0 ? void 0 : alphaBar.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('li > a[href]');
285
+ expect((_c = letterLink === null || letterLink === void 0 ? void 0 : letterLink.textContent) === null || _c === void 0 ? void 0 : _c.trim()).to.equal('T');
286
+ letterLink === null || letterLink === void 0 ? void 0 : letterLink.click();
287
+ await el.updateComplete;
288
+ expect(el.selectedTitleFilter).to.equal('T');
289
+ });
290
+ it('sets the selected creator letter when clicked', async () => {
291
+ var _a, _b, _c;
125
292
  const el = await fixture(html `
126
293
  <sort-filter-bar></sort-filter-bar>
127
- `);
128
- el.selectedSort = 'title';
129
- el.prefixFilterCountMap = { title: { T: 1 }, creator: {} };
130
- await el.updateComplete;
131
- const alphaBar = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('alpha-bar');
132
- const letterLink = (_b = alphaBar === null || alphaBar === void 0 ? void 0 : alphaBar.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('li > a[href]');
133
- expect((_c = letterLink === null || letterLink === void 0 ? void 0 : letterLink.textContent) === null || _c === void 0 ? void 0 : _c.trim()).to.equal('T');
134
- letterLink === null || letterLink === void 0 ? void 0 : letterLink.click();
135
- await el.updateComplete;
136
- expect(el.selectedTitleFilter).to.equal('T');
137
- });
138
- it('sets the selected creator letter when clicked', async () => {
139
- var _a, _b, _c;
294
+ `);
295
+ el.selectedSort = 'creator';
296
+ el.prefixFilterCountMap = { title: {}, creator: { C: 1 } };
297
+ await el.updateComplete;
298
+ const alphaBar = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('alpha-bar');
299
+ const letterLink = (_b = alphaBar === null || alphaBar === void 0 ? void 0 : alphaBar.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('li > a[href]');
300
+ expect((_c = letterLink === null || letterLink === void 0 ? void 0 : letterLink.textContent) === null || _c === void 0 ? void 0 : _c.trim()).to.equal('C');
301
+ letterLink === null || letterLink === void 0 ? void 0 : letterLink.click();
302
+ await el.updateComplete;
303
+ expect(el.selectedCreatorFilter).to.equal('C');
304
+ });
305
+ });
306
+ describe('Sort/filter bar mobile view', () => {
307
+ let origWindowSize;
308
+ before(() => {
309
+ origWindowSize = { width: window.innerWidth, height: window.innerHeight };
310
+ window.resizeTo(500, 600);
311
+ });
312
+ after(() => {
313
+ window.resizeTo(origWindowSize.width, origWindowSize.height);
314
+ });
315
+ it('renders in mobile view', async () => {
316
+ var _a, _b, _c, _d;
140
317
  const el = await fixture(html `
141
318
  <sort-filter-bar></sort-filter-bar>
142
- `);
143
- el.selectedSort = 'creator';
144
- el.prefixFilterCountMap = { title: {}, creator: { C: 1 } };
145
- await el.updateComplete;
146
- const alphaBar = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('alpha-bar');
147
- const letterLink = (_b = alphaBar === null || alphaBar === void 0 ? void 0 : alphaBar.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('li > a[href]');
148
- expect((_c = letterLink === null || letterLink === void 0 ? void 0 : letterLink.textContent) === null || _c === void 0 ? void 0 : _c.trim()).to.equal('C');
149
- letterLink === null || letterLink === void 0 ? void 0 : letterLink.click();
150
- await el.updateComplete;
151
- expect(el.selectedCreatorFilter).to.equal('C');
152
- });
153
- });
154
- describe('Sort/filter bar mobile view', () => {
155
- let origWindowSize;
156
- before(() => {
157
- origWindowSize = { width: window.innerWidth, height: window.innerHeight };
158
- window.resizeTo(500, 600);
159
- });
160
- after(() => {
161
- window.resizeTo(origWindowSize.width, origWindowSize.height);
162
- });
163
- it('renders in mobile view', async () => {
164
- var _a, _b, _c, _d;
319
+ `);
320
+ const mobileSortContainer = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#mobile-sort-container');
321
+ const desktopSortContainer = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#desktop-sort-container');
322
+ expect((_c = mobileSortContainer === null || mobileSortContainer === void 0 ? void 0 : mobileSortContainer.classList) === null || _c === void 0 ? void 0 : _c.contains('visible')).to.be.true;
323
+ expect((_d = desktopSortContainer === null || desktopSortContainer === void 0 ? void 0 : desktopSortContainer.classList) === null || _d === void 0 ? void 0 : _d.contains('hidden')).to.be.true;
324
+ });
325
+ it('changes selected sort in mobile view', async () => {
326
+ var _a;
165
327
  const el = await fixture(html `
166
328
  <sort-filter-bar></sort-filter-bar>
167
- `);
168
- const mobileSortSelector = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#mobile-sort-selector');
169
- const desktopSortSelector = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#desktop-sort-selector');
170
- expect((_c = mobileSortSelector === null || mobileSortSelector === void 0 ? void 0 : mobileSortSelector.classList) === null || _c === void 0 ? void 0 : _c.contains('visible')).to.be.true;
171
- expect((_d = desktopSortSelector === null || desktopSortSelector === void 0 ? void 0 : desktopSortSelector.classList) === null || _d === void 0 ? void 0 : _d.contains('hidden')).to.be.true;
172
- });
173
- it('changes selected sort in mobile view', async () => {
174
- var _a;
329
+ `);
330
+ const mobileDropdown = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#mobile-dropdown');
331
+ expect(mobileDropdown).to.exist;
332
+ mobileDropdown.selectedOption = 'title';
333
+ const option = { id: 'title' };
334
+ mobileDropdown.dispatchEvent(new CustomEvent('optionSelected', { detail: { option } }));
335
+ await el.updateComplete;
336
+ expect(el.selectedSort).to.equal('title');
337
+ });
338
+ it('clears title filter when sort changed from title in mobile view', async () => {
339
+ var _a;
175
340
  const el = await fixture(html `
176
341
  <sort-filter-bar></sort-filter-bar>
177
- `);
178
- const mobileSortSelector = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#mobile-sort-selector');
179
- expect(mobileSortSelector).to.exist;
180
- mobileSortSelector.value = 'title';
181
- mobileSortSelector.dispatchEvent(new Event('change'));
182
- await el.updateComplete;
183
- expect(el.selectedSort).to.equal('title');
184
- });
185
- it('clears title filter when sort changed from title in mobile view', async () => {
186
- var _a;
342
+ `);
343
+ el.selectedSort = 'title';
344
+ el.selectedTitleFilter = 'A';
345
+ await el.updateComplete;
346
+ const mobileDropdown = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#mobile-dropdown');
347
+ expect(mobileDropdown).to.exist;
348
+ mobileDropdown.selectedOption = 'relevance';
349
+ const option = { id: 'relevance' };
350
+ mobileDropdown.dispatchEvent(new CustomEvent('optionSelected', { detail: { option } }));
351
+ await el.updateComplete;
352
+ expect(el.selectedSort).to.equal('relevance');
353
+ expect(el.selectedTitleFilter).to.be.null;
354
+ });
355
+ it('clears creator filter when sort changed from creator in mobile view', async () => {
356
+ var _a;
187
357
  const el = await fixture(html `
188
358
  <sort-filter-bar></sort-filter-bar>
189
- `);
190
- el.selectedSort = 'title';
191
- el.selectedTitleFilter = 'A';
192
- await el.updateComplete;
193
- const mobileSortSelector = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#mobile-sort-selector');
194
- expect(mobileSortSelector).to.exist;
195
- mobileSortSelector.value = 'relevance';
196
- mobileSortSelector.dispatchEvent(new Event('change'));
197
- await el.updateComplete;
198
- expect(el.selectedSort).to.equal('relevance');
199
- expect(el.selectedTitleFilter).to.be.null;
200
- });
201
- it('clears creator filter when sort changed from creator in mobile view', async () => {
202
- var _a;
359
+ `);
360
+ el.selectedSort = 'creator';
361
+ el.selectedCreatorFilter = 'A';
362
+ await el.updateComplete;
363
+ const mobileDropdown = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#mobile-dropdown');
364
+ expect(mobileDropdown).to.exist;
365
+ mobileDropdown.selectedOption = 'relevance';
366
+ const option = { id: 'relevance' };
367
+ mobileDropdown.dispatchEvent(new CustomEvent('optionSelected', { detail: { option } }));
368
+ await el.updateComplete;
369
+ expect(el.selectedSort).to.equal('relevance');
370
+ expect(el.selectedCreatorFilter).to.be.null;
371
+ });
372
+ it('shows sort selector backdrop when mobile sort open', async () => {
373
+ var _a, _b, _c, _d;
203
374
  const el = await fixture(html `
204
375
  <sort-filter-bar></sort-filter-bar>
205
- `);
206
- el.selectedSort = 'creator';
207
- el.selectedCreatorFilter = 'A';
208
- await el.updateComplete;
209
- const mobileSortSelector = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#mobile-sort-selector');
210
- expect(mobileSortSelector).to.exist;
211
- mobileSortSelector.value = 'relevance';
212
- mobileSortSelector.dispatchEvent(new Event('change'));
213
- await el.updateComplete;
214
- expect(el.selectedSort).to.equal('relevance');
215
- expect(el.selectedCreatorFilter).to.be.null;
216
- });
217
- });
376
+ `);
377
+ const mobileDropdown = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#mobile-dropdown');
378
+ expect(mobileDropdown).to.exist;
379
+ const caret = (_b = mobileDropdown === null || mobileDropdown === void 0 ? void 0 : mobileDropdown.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.caret');
380
+ expect(caret).to.exist;
381
+ caret === null || caret === void 0 ? void 0 : caret.click();
382
+ await el.updateComplete;
383
+ let backdrop = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#sort-selector-backdrop');
384
+ expect(backdrop).to.exist;
385
+ backdrop === null || backdrop === void 0 ? void 0 : backdrop.click();
386
+ await el.updateComplete;
387
+ backdrop = (_d = el.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('#sort-selector-backdrop');
388
+ expect(backdrop).not.to.exist;
389
+ });
390
+ });
218
391
  //# sourceMappingURL=sort-filter-bar.test.js.map