@internetarchive/collection-browser 2.1.9 → 2.1.11-alpha.0

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 (303) hide show
  1. package/.editorconfig +29 -29
  2. package/.husky/pre-commit +4 -4
  3. package/LICENSE +661 -661
  4. package/README.md +83 -83
  5. package/dist/index.d.ts +12 -12
  6. package/dist/index.js +12 -12
  7. package/dist/src/app-root.d.ts +91 -88
  8. package/dist/src/app-root.js +501 -475
  9. package/dist/src/app-root.js.map +1 -1
  10. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  11. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  12. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  13. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  14. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  15. package/dist/src/assets/img/icons/chevron.js +2 -2
  16. package/dist/src/assets/img/icons/contract.d.ts +2 -2
  17. package/dist/src/assets/img/icons/contract.js +2 -2
  18. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  19. package/dist/src/assets/img/icons/empty-query.js +2 -2
  20. package/dist/src/assets/img/icons/expand.d.ts +2 -2
  21. package/dist/src/assets/img/icons/expand.js +2 -2
  22. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  23. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  24. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  25. package/dist/src/assets/img/icons/eye.js +2 -2
  26. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  27. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  28. package/dist/src/assets/img/icons/favorite-unfilled.d.ts +1 -1
  29. package/dist/src/assets/img/icons/favorite-unfilled.js +2 -2
  30. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  31. package/dist/src/assets/img/icons/login-required.js +2 -2
  32. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  33. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  34. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  35. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  36. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  37. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  38. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  39. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  40. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  41. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  42. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  43. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  44. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  45. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  46. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  47. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  48. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
  49. package/dist/src/assets/img/icons/mediatype/search.js +2 -2
  50. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  51. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  52. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  53. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  54. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  55. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  56. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  57. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  58. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  59. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  60. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  61. package/dist/src/assets/img/icons/null-result.js +2 -2
  62. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  63. package/dist/src/assets/img/icons/restricted.js +2 -2
  64. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  65. package/dist/src/assets/img/icons/reviews.js +2 -2
  66. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  67. package/dist/src/assets/img/icons/upload.js +2 -2
  68. package/dist/src/assets/img/icons/views.d.ts +1 -1
  69. package/dist/src/assets/img/icons/views.js +2 -2
  70. package/dist/src/circular-activity-indicator.d.ts +5 -5
  71. package/dist/src/circular-activity-indicator.js +17 -17
  72. package/dist/src/collection-browser.d.ts +453 -446
  73. package/dist/src/collection-browser.js +1422 -1408
  74. package/dist/src/collection-browser.js.map +1 -1
  75. package/dist/src/collection-facets/facet-row.d.ts +30 -30
  76. package/dist/src/collection-facets/facet-row.js +114 -114
  77. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  78. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  79. package/dist/src/collection-facets/facets-template.d.ts +17 -17
  80. package/dist/src/collection-facets/facets-template.js +114 -114
  81. package/dist/src/collection-facets/more-facets-content.d.ts +74 -74
  82. package/dist/src/collection-facets/more-facets-content.js +360 -360
  83. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  84. package/dist/src/collection-facets/more-facets-pagination.js +196 -196
  85. package/dist/src/collection-facets/toggle-switch.d.ts +41 -41
  86. package/dist/src/collection-facets/toggle-switch.js +94 -94
  87. package/dist/src/collection-facets.d.ts +103 -103
  88. package/dist/src/collection-facets.js +510 -510
  89. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +241 -236
  90. package/dist/src/data-source/collection-browser-data-source-interface.js +1 -1
  91. package/dist/src/data-source/collection-browser-data-source-interface.js.map +1 -1
  92. package/dist/src/data-source/collection-browser-data-source.d.ts +378 -364
  93. package/dist/src/data-source/collection-browser-data-source.js +987 -946
  94. package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
  95. package/dist/src/data-source/collection-browser-query-state.d.ts +44 -43
  96. package/dist/src/data-source/collection-browser-query-state.js +1 -1
  97. package/dist/src/data-source/collection-browser-query-state.js.map +1 -1
  98. package/dist/src/data-source/models.d.ts +28 -28
  99. package/dist/src/data-source/models.js +8 -8
  100. package/dist/src/empty-placeholder.d.ts +23 -23
  101. package/dist/src/empty-placeholder.js +74 -74
  102. package/dist/src/expanded-date-picker.d.ts +43 -43
  103. package/dist/src/expanded-date-picker.js +109 -109
  104. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  105. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  106. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  107. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  108. package/dist/src/manage/manage-bar.d.ts +30 -30
  109. package/dist/src/manage/manage-bar.js +61 -61
  110. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  111. package/dist/src/mediatype/mediatype-config.js +91 -91
  112. package/dist/src/models.d.ts +198 -198
  113. package/dist/src/models.js +381 -381
  114. package/dist/src/restoration-state-handler.d.ts +70 -70
  115. package/dist/src/restoration-state-handler.js +357 -357
  116. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  117. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  118. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
  119. package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
  120. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  121. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  122. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  123. package/dist/src/sort-filter-bar/img/list.js +2 -2
  124. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  125. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
  126. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  127. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
  128. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  129. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
  130. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  131. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  132. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  133. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  134. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +222 -221
  135. package/dist/src/sort-filter-bar/sort-filter-bar.js +696 -691
  136. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  137. package/dist/src/styles/ia-button.d.ts +2 -2
  138. package/dist/src/styles/ia-button.js +16 -16
  139. package/dist/src/styles/item-image-styles.d.ts +8 -8
  140. package/dist/src/styles/item-image-styles.js +9 -9
  141. package/dist/src/styles/sr-only.d.ts +1 -1
  142. package/dist/src/styles/sr-only.js +2 -2
  143. package/dist/src/tiles/base-tile-component.d.ts +19 -19
  144. package/dist/src/tiles/base-tile-component.js +63 -63
  145. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  146. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  147. package/dist/src/tiles/grid/account-tile.d.ts +18 -18
  148. package/dist/src/tiles/grid/account-tile.js +72 -72
  149. package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
  150. package/dist/src/tiles/grid/collection-tile.js +80 -80
  151. package/dist/src/tiles/grid/item-tile.d.ts +30 -30
  152. package/dist/src/tiles/grid/item-tile.js +149 -149
  153. package/dist/src/tiles/grid/search-tile.d.ts +10 -10
  154. package/dist/src/tiles/grid/search-tile.js +51 -51
  155. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  156. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
  157. package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
  158. package/dist/src/tiles/grid/tile-stats.js +53 -53
  159. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  160. package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
  161. package/dist/src/tiles/hover/tile-hover-pane.d.ts +15 -15
  162. package/dist/src/tiles/hover/tile-hover-pane.js +38 -38
  163. package/dist/src/tiles/image-block.d.ts +17 -17
  164. package/dist/src/tiles/image-block.js +73 -73
  165. package/dist/src/tiles/item-image.d.ts +39 -39
  166. package/dist/src/tiles/item-image.js +154 -154
  167. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
  168. package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
  169. package/dist/src/tiles/list/tile-list-compact.d.ts +15 -15
  170. package/dist/src/tiles/list/tile-list-compact.js +114 -114
  171. package/dist/src/tiles/list/tile-list.d.ts +50 -50
  172. package/dist/src/tiles/list/tile-list.js +315 -315
  173. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  174. package/dist/src/tiles/mediatype-icon.js +47 -47
  175. package/dist/src/tiles/overlay/icon-overlay.d.ts +10 -10
  176. package/dist/src/tiles/overlay/icon-overlay.js +40 -40
  177. package/dist/src/tiles/overlay/icon-text-overlay.d.ts +9 -9
  178. package/dist/src/tiles/overlay/icon-text-overlay.js +38 -38
  179. package/dist/src/tiles/overlay/text-overlay.d.ts +10 -10
  180. package/dist/src/tiles/overlay/text-overlay.js +42 -42
  181. package/dist/src/tiles/review-block.d.ts +12 -12
  182. package/dist/src/tiles/review-block.js +56 -56
  183. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  184. package/dist/src/tiles/text-snippet-block.js +73 -73
  185. package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
  186. package/dist/src/tiles/tile-dispatcher.js +229 -229
  187. package/dist/src/tiles/tile-display-value-provider.d.ts +47 -47
  188. package/dist/src/tiles/tile-display-value-provider.js +94 -94
  189. package/dist/src/utils/analytics-events.d.ts +26 -26
  190. package/dist/src/utils/analytics-events.js +28 -28
  191. package/dist/src/utils/array-equals.d.ts +4 -4
  192. package/dist/src/utils/array-equals.js +10 -10
  193. package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -11
  194. package/dist/src/utils/collapse-repeated-quotes.js +13 -13
  195. package/dist/src/utils/format-count.d.ts +7 -7
  196. package/dist/src/utils/format-count.js +76 -76
  197. package/dist/src/utils/format-date.d.ts +2 -2
  198. package/dist/src/utils/format-date.js +25 -25
  199. package/dist/src/utils/format-unit-size.d.ts +2 -2
  200. package/dist/src/utils/format-unit-size.js +33 -33
  201. package/dist/src/utils/local-date-from-utc.d.ts +9 -9
  202. package/dist/src/utils/local-date-from-utc.js +15 -15
  203. package/dist/src/utils/log.d.ts +7 -7
  204. package/dist/src/utils/log.js +15 -15
  205. package/dist/src/utils/resolve-mediatype.d.ts +8 -8
  206. package/dist/src/utils/resolve-mediatype.js +23 -23
  207. package/dist/src/utils/sha1.d.ts +2 -2
  208. package/dist/src/utils/sha1.js +8 -8
  209. package/dist/test/collection-browser.test.d.ts +1 -1
  210. package/dist/test/collection-browser.test.js +1283 -1283
  211. package/dist/test/collection-facets/facet-row.test.d.ts +1 -1
  212. package/dist/test/collection-facets/facet-row.test.js +203 -203
  213. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  214. package/dist/test/collection-facets/facets-template.test.js +105 -105
  215. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  216. package/dist/test/collection-facets/more-facets-content.test.js +139 -139
  217. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  218. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  219. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
  220. package/dist/test/collection-facets/toggle-switch.test.js +73 -73
  221. package/dist/test/collection-facets.test.d.ts +2 -2
  222. package/dist/test/collection-facets.test.js +652 -652
  223. package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -1
  224. package/dist/test/data-source/collection-browser-data-source.test.js +89 -89
  225. package/dist/test/empty-placeholder.test.d.ts +1 -1
  226. package/dist/test/empty-placeholder.test.js +63 -63
  227. package/dist/test/expanded-date-picker.test.d.ts +1 -1
  228. package/dist/test/expanded-date-picker.test.js +95 -95
  229. package/dist/test/icon-overlay.test.d.ts +1 -1
  230. package/dist/test/icon-overlay.test.js +24 -24
  231. package/dist/test/image-block.test.d.ts +1 -1
  232. package/dist/test/image-block.test.js +48 -48
  233. package/dist/test/item-image.test.d.ts +1 -1
  234. package/dist/test/item-image.test.js +85 -85
  235. package/dist/test/manage/manage-bar.test.d.ts +1 -1
  236. package/dist/test/manage/manage-bar.test.js +81 -81
  237. package/dist/test/mediatype-config.test.d.ts +1 -1
  238. package/dist/test/mediatype-config.test.js +16 -16
  239. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  240. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  241. package/dist/test/mocks/mock-search-responses.d.ts +24 -24
  242. package/dist/test/mocks/mock-search-responses.js +860 -860
  243. package/dist/test/mocks/mock-search-service.d.ts +15 -15
  244. package/dist/test/mocks/mock-search-service.js +53 -53
  245. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  246. package/dist/test/restoration-state-handler.test.js +270 -270
  247. package/dist/test/review-block.test.d.ts +1 -1
  248. package/dist/test/review-block.test.js +44 -44
  249. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  250. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  251. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  252. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  253. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  254. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +426 -426
  255. package/dist/test/text-overlay.test.d.ts +1 -1
  256. package/dist/test/text-overlay.test.js +48 -48
  257. package/dist/test/text-snippet-block.test.d.ts +1 -1
  258. package/dist/test/text-snippet-block.test.js +57 -57
  259. package/dist/test/tile-stats.test.d.ts +1 -1
  260. package/dist/test/tile-stats.test.js +81 -81
  261. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  262. package/dist/test/tiles/grid/account-tile.test.js +76 -76
  263. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  264. package/dist/test/tiles/grid/collection-tile.test.js +73 -73
  265. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  266. package/dist/test/tiles/grid/item-tile.test.js +312 -312
  267. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
  268. package/dist/test/tiles/grid/search-tile.test.js +51 -51
  269. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  270. package/dist/test/tiles/hover/hover-pane-controller.test.js +259 -259
  271. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  272. package/dist/test/tiles/hover/tile-hover-pane.test.js +13 -13
  273. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  274. package/dist/test/tiles/list/tile-list-compact.test.js +143 -143
  275. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  276. package/dist/test/tiles/list/tile-list.test.js +297 -297
  277. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  278. package/dist/test/tiles/tile-dispatcher.test.js +100 -100
  279. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
  280. package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
  281. package/dist/test/utils/array-equals.test.d.ts +1 -1
  282. package/dist/test/utils/array-equals.test.js +26 -26
  283. package/dist/test/utils/format-count.test.d.ts +1 -1
  284. package/dist/test/utils/format-count.test.js +23 -23
  285. package/dist/test/utils/format-date.test.d.ts +1 -1
  286. package/dist/test/utils/format-date.test.js +17 -17
  287. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  288. package/dist/test/utils/format-unit-size.test.js +17 -17
  289. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
  290. package/dist/test/utils/local-date-from-utc.test.js +26 -26
  291. package/local.archive.org.cert +86 -86
  292. package/local.archive.org.key +27 -27
  293. package/package.json +1 -1
  294. package/renovate.json +6 -6
  295. package/src/app-root.ts +24 -1
  296. package/src/collection-browser.ts +16 -1
  297. package/src/data-source/collection-browser-data-source-interface.ts +7 -1
  298. package/src/data-source/collection-browser-data-source.ts +56 -6
  299. package/src/data-source/collection-browser-query-state.ts +1 -0
  300. package/src/sort-filter-bar/sort-filter-bar.ts +5 -0
  301. package/tsconfig.json +21 -21
  302. package/web-dev-server.config.mjs +30 -30
  303. package/web-test-runner.config.mjs +41 -41
@@ -1,81 +1,81 @@
1
- import { __decorate } from "tslib";
2
- import { LitElement, html, css, nothing, } from 'lit';
3
- import { customElement, property, query, state } from 'lit/decorators.js';
4
- import { msg } from '@lit/localize';
5
- import '@internetarchive/ia-dropdown';
6
- import { SORT_OPTIONS, SortField, } from '../models';
7
- import './alpha-bar';
8
- import { sortUpIcon } from './img/sort-toggle-up';
9
- import { sortDownIcon } from './img/sort-toggle-down';
10
- import { sortDisabledIcon } from './img/sort-toggle-disabled';
11
- import { tileIcon } from './img/tile';
12
- import { listIcon } from './img/list';
13
- import { compactIcon } from './img/compact';
14
- import { srOnlyStyle } from '../styles/sr-only';
15
- let SortFilterBar = class SortFilterBar extends LitElement {
16
- constructor() {
17
- super(...arguments);
18
- /** The default sort direction to use if none is set */
19
- this.defaultSortDirection = null;
20
- /** The default sort field to use if none is set */
21
- this.defaultSortField = SortField.relevance;
22
- /** The current sort direction (asc/desc), or null if none is set */
23
- this.sortDirection = null;
24
- /** The field currently being sorted on (e.g., 'title'). Defaults to relevance. */
25
- this.selectedSort = SortField.default;
26
- /** The currently selected title letter filter, or null if none is set */
27
- this.selectedTitleFilter = null;
28
- /** The currently selected creator letter filter, or null if none is set */
29
- this.selectedCreatorFilter = null;
30
- /** Whether to show the Relevance sort option (default `true`) */
31
- this.showRelevance = true;
32
- /** Whether to show the Date Favorited sort option instead of Date Published/Archived/Reviewed (default `false`) */
33
- this.showDateFavorited = false;
34
- /** Whether to replace the default sort options with a slot for customization (default `false`) */
35
- this.enableSortOptionsSlot = false;
36
- /** Whether to suppress showing the three display mode options on the right of the bar (default `false`) */
37
- this.suppressDisplayModes = false;
38
- /**
39
- * The Views sort option that was most recently selected (or the default, if none has been selected yet)
40
- */
41
- this.lastSelectedViewSort = SortField.weeklyview;
42
- /**
43
- * The Date sort option that was most recently selected (or the default, if none has been selected yet)
44
- */
45
- this.lastSelectedDateSort = this.defaultDateSortField;
46
- /**
47
- * Which of the alphabet bars (title/creator) should be shown, or null if one
48
- * should not currently be rendered.
49
- */
50
- this.alphaSelectorVisible = null;
51
- /**
52
- * Whether the transparent backdrop to catch clicks outside the dropdown menu
53
- * should be rendered.
54
- */
55
- this.dropdownBackdropVisible = false;
56
- /**
57
- * The width of the desktop view sort option container, updated upon each resize.
58
- * Used for dynamically determining whether to use desktop or mobile view.
59
- */
60
- this.desktopSortContainerWidth = 0;
61
- /**
62
- * The width of the full sort bar, updated upon each resize.
63
- * Used for dynamically determining whether to use desktop or mobile view.
64
- */
65
- this.selectorBarContainerWidth = 0;
66
- this.boundSortBarSelectorEscapeListener = (e) => {
67
- if (e.key === 'Escape') {
68
- this.closeDropdowns();
69
- }
70
- };
71
- }
72
- render() {
1
+ import { __decorate } from "tslib";
2
+ import { LitElement, html, css, nothing, } from 'lit';
3
+ import { customElement, property, query, state } from 'lit/decorators.js';
4
+ import { msg } from '@lit/localize';
5
+ import '@internetarchive/ia-dropdown';
6
+ import { SORT_OPTIONS, SortField, } from '../models';
7
+ import './alpha-bar';
8
+ import { sortUpIcon } from './img/sort-toggle-up';
9
+ import { sortDownIcon } from './img/sort-toggle-down';
10
+ import { sortDisabledIcon } from './img/sort-toggle-disabled';
11
+ import { tileIcon } from './img/tile';
12
+ import { listIcon } from './img/list';
13
+ import { compactIcon } from './img/compact';
14
+ import { srOnlyStyle } from '../styles/sr-only';
15
+ let SortFilterBar = class SortFilterBar extends LitElement {
16
+ constructor() {
17
+ super(...arguments);
18
+ /** The default sort direction to use if none is set */
19
+ this.defaultSortDirection = null;
20
+ /** The default sort field to use if none is set */
21
+ this.defaultSortField = SortField.relevance;
22
+ /** The current sort direction (asc/desc), or null if none is set */
23
+ this.sortDirection = null;
24
+ /** The field currently being sorted on (e.g., 'title'). Defaults to relevance. */
25
+ this.selectedSort = SortField.default;
26
+ /** The currently selected title letter filter, or null if none is set */
27
+ this.selectedTitleFilter = null;
28
+ /** The currently selected creator letter filter, or null if none is set */
29
+ this.selectedCreatorFilter = null;
30
+ /** Whether to show the Relevance sort option (default `true`) */
31
+ this.showRelevance = true;
32
+ /** Whether to show the Date Favorited sort option instead of Date Published/Archived/Reviewed (default `false`) */
33
+ this.showDateFavorited = false;
34
+ /** Whether to replace the default sort options with a slot for customization (default `false`) */
35
+ this.enableSortOptionsSlot = false;
36
+ /** Whether to suppress showing the three display mode options on the right of the bar (default `false`) */
37
+ this.suppressDisplayModes = false;
38
+ /**
39
+ * The Views sort option that was most recently selected (or the default, if none has been selected yet)
40
+ */
41
+ this.lastSelectedViewSort = SortField.weeklyview;
42
+ /**
43
+ * The Date sort option that was most recently selected (or the default, if none has been selected yet)
44
+ */
45
+ this.lastSelectedDateSort = this.defaultDateSortField;
46
+ /**
47
+ * Which of the alphabet bars (title/creator) should be shown, or null if one
48
+ * should not currently be rendered.
49
+ */
50
+ this.alphaSelectorVisible = null;
51
+ /**
52
+ * Whether the transparent backdrop to catch clicks outside the dropdown menu
53
+ * should be rendered.
54
+ */
55
+ this.dropdownBackdropVisible = false;
56
+ /**
57
+ * The width of the desktop view sort option container, updated upon each resize.
58
+ * Used for dynamically determining whether to use desktop or mobile view.
59
+ */
60
+ this.desktopSortContainerWidth = 0;
61
+ /**
62
+ * The width of the full sort bar, updated upon each resize.
63
+ * Used for dynamically determining whether to use desktop or mobile view.
64
+ */
65
+ this.selectorBarContainerWidth = 0;
66
+ this.boundSortBarSelectorEscapeListener = (e) => {
67
+ if (e.key === 'Escape') {
68
+ this.closeDropdowns();
69
+ }
70
+ };
71
+ }
72
+ render() {
73
73
  return html `
74
74
  <div id="container">
75
75
  <section id="sort-bar" aria-label="Sorting options">
76
76
  <slot name="sort-options-left"></slot>
77
77
  <div id="sort-options">
78
- ${!this.enableSortOptionsSlot
78
+ ${!this.enableSortOptionsSlot
79
79
  ? html `
80
80
  <div class="sort-direction-container">
81
81
  ${this.sortDirectionSelectorTemplate}
@@ -85,13 +85,13 @@ let SortFilterBar = class SortFilterBar extends LitElement {
85
85
  ${this.mobileSortSelectorTemplate}
86
86
  ${this.desktopSortSelectorTemplate}
87
87
  </div>
88
- `
88
+ `
89
89
  : html `<slot name="sort-options"></slot>`}
90
90
  </div>
91
91
  <slot name="sort-options-right"></slot>
92
92
 
93
- ${this.suppressDisplayModes
94
- ? nothing
93
+ ${this.suppressDisplayModes
94
+ ? nothing
95
95
  : html `<div id="display-style-selector">
96
96
  ${this.displayOptionTemplate}
97
97
  </div>`}
@@ -100,134 +100,139 @@ let SortFilterBar = class SortFilterBar extends LitElement {
100
100
  ${this.dropdownBackdropVisible ? this.dropdownBackdrop : nothing}
101
101
  ${this.alphaBarTemplate}
102
102
  </div>
103
- `;
104
- }
105
- willUpdate(changed) {
106
- if (changed.has('selectedSort') || changed.has('defaultSortField')) {
107
- // If the sort is changed from its default without a direction set,
108
- // we adopt the default sort direction for that sort type.
109
- if (this.selectedSort &&
110
- this.selectedSort !== SortField.default &&
111
- this.sortDirection === null) {
112
- const sortOption = SORT_OPTIONS[this.finalizedSortField];
113
- this.sortDirection = sortOption.defaultSortDirection;
114
- }
115
- if (this.viewOptionSelected) {
116
- this.lastSelectedViewSort = this.finalizedSortField;
117
- }
118
- else if (this.dateOptionSelected) {
119
- this.lastSelectedDateSort = this.finalizedSortField;
120
- }
121
- }
122
- // If we change which dropdown options are available, ensure the correct default becomes selected.
123
- // Currently, Date Favorited is the only dropdown option whose presence/absence can change.
124
- if (changed.has('showDateFavorited') &&
125
- changed.get('showDateFavorited') !== this.showDateFavorited) {
126
- this.lastSelectedDateSort = this.defaultDateSortField;
127
- }
128
- }
129
- updated(changed) {
130
- if (changed.has('displayMode')) {
131
- this.displayModeChanged();
132
- }
133
- if (changed.has('selectedTitleFilter') && this.selectedTitleFilter) {
134
- this.alphaSelectorVisible = 'title';
135
- }
136
- if (changed.has('selectedCreatorFilter') && this.selectedCreatorFilter) {
137
- this.alphaSelectorVisible = 'creator';
138
- }
139
- if (changed.has('dropdownBackdropVisible')) {
140
- this.setupEscapeListeners();
141
- }
142
- if (changed.has('resizeObserver') || changed.has('enableSortOptionsSlot')) {
143
- const oldObserver = changed.get('resizeObserver');
144
- if (oldObserver)
145
- this.disconnectResizeObserver(oldObserver);
146
- this.setupResizeObserver();
147
- }
148
- }
149
- setupEscapeListeners() {
150
- if (this.dropdownBackdropVisible) {
151
- document.addEventListener('keydown', this.boundSortBarSelectorEscapeListener);
152
- }
153
- else {
154
- document.removeEventListener('keydown', this.boundSortBarSelectorEscapeListener);
155
- }
156
- }
157
- disconnectedCallback() {
158
- if (this.resizeObserver) {
159
- this.disconnectResizeObserver(this.resizeObserver);
160
- }
161
- }
162
- disconnectResizeObserver(resizeObserver) {
163
- if (this.sortSelectorContainer) {
164
- resizeObserver.removeObserver({
165
- target: this.sortSelectorContainer,
166
- handler: this,
167
- });
168
- }
169
- if (this.desktopSortContainer) {
170
- resizeObserver.removeObserver({
171
- target: this.desktopSortContainer,
172
- handler: this,
173
- });
174
- }
175
- }
176
- setupResizeObserver() {
177
- if (!this.resizeObserver)
178
- return;
179
- if (this.sortSelectorContainer) {
180
- this.resizeObserver.addObserver({
181
- target: this.sortSelectorContainer,
182
- handler: this,
183
- });
184
- }
185
- if (this.desktopSortContainer) {
186
- this.resizeObserver.addObserver({
187
- target: this.desktopSortContainer,
188
- handler: this,
189
- });
190
- }
191
- }
192
- handleResize(entry) {
193
- if (entry.target === this.desktopSortContainer) {
194
- this.desktopSortContainerWidth = entry.contentRect.width;
195
- }
196
- else if (entry.target === this.sortSelectorContainer) {
197
- this.selectorBarContainerWidth = entry.contentRect.width;
198
- }
199
- }
200
- /**
201
- * Whether to show the mobile sort bar because there is not enough space
202
- * for the desktop sort bar.
203
- */
204
- get mobileSelectorVisible() {
205
- return this.selectorBarContainerWidth - 10 < this.desktopSortContainerWidth;
206
- }
207
- /**
208
- * Template to render the alphabet bar, or `nothing` if it should not be rendered
209
- * for the current sort
210
- */
211
- get alphaBarTemplate() {
212
- if (!['title', 'creator'].includes(this.selectedSort))
213
- return nothing;
214
- if (this.alphaSelectorVisible === null) {
215
- if (this.selectedSort === 'creator')
216
- return this.creatorSelectorBar;
217
- if (this.selectedSort === 'title')
218
- return this.titleSelectorBar;
219
- }
220
- else {
221
- return this.alphaSelectorVisible === 'creator'
222
- ? this.creatorSelectorBar
223
- : this.titleSelectorBar;
224
- }
225
- return nothing;
226
- }
227
- /** Template to render the sort direction toggle button */
228
- get sortDirectionSelectorTemplate() {
229
- const oppositeSortDirectionReadable = this.sortDirection === 'asc' ? 'descending' : 'ascending';
230
- const srLabel = `Change to ${oppositeSortDirectionReadable} sort`;
103
+ `;
104
+ }
105
+ willUpdate(changed) {
106
+ if (changed.has('selectedSort') || changed.has('defaultSortField')) {
107
+ // If the sort is changed from its default without a direction set,
108
+ // we adopt the default sort direction for that sort type.
109
+ if (this.selectedSort &&
110
+ this.selectedSort !== SortField.default &&
111
+ this.sortDirection === null) {
112
+ const sortOption = SORT_OPTIONS[this.finalizedSortField];
113
+ this.sortDirection = sortOption.defaultSortDirection;
114
+ }
115
+ if (this.viewOptionSelected) {
116
+ this.lastSelectedViewSort = this.finalizedSortField;
117
+ }
118
+ else if (this.dateOptionSelected) {
119
+ this.lastSelectedDateSort = this.finalizedSortField;
120
+ }
121
+ }
122
+ // If we change which dropdown options are available, ensure the correct default becomes selected.
123
+ // Currently, Date Favorited is the only dropdown option whose presence/absence can change.
124
+ if (changed.has('showDateFavorited') &&
125
+ changed.get('showDateFavorited') !== this.showDateFavorited) {
126
+ this.lastSelectedDateSort = this.defaultDateSortField;
127
+ }
128
+ }
129
+ updated(changed) {
130
+ if (changed.has('displayMode')) {
131
+ this.displayModeChanged();
132
+ }
133
+ if (changed.has('selectedTitleFilter') && this.selectedTitleFilter) {
134
+ this.alphaSelectorVisible = 'title';
135
+ }
136
+ if (changed.has('selectedCreatorFilter') && this.selectedCreatorFilter) {
137
+ this.alphaSelectorVisible = 'creator';
138
+ }
139
+ if (changed.has('dropdownBackdropVisible')) {
140
+ this.setupEscapeListeners();
141
+ }
142
+ if (changed.has('resizeObserver') || changed.has('enableSortOptionsSlot')) {
143
+ const oldObserver = changed.get('resizeObserver');
144
+ if (oldObserver)
145
+ this.disconnectResizeObserver(oldObserver);
146
+ this.setupResizeObserver();
147
+ }
148
+ }
149
+ setupEscapeListeners() {
150
+ if (this.dropdownBackdropVisible) {
151
+ document.addEventListener('keydown', this.boundSortBarSelectorEscapeListener);
152
+ }
153
+ else {
154
+ document.removeEventListener('keydown', this.boundSortBarSelectorEscapeListener);
155
+ }
156
+ }
157
+ connectedCallback() {
158
+ var _a;
159
+ (_a = super.connectedCallback) === null || _a === void 0 ? void 0 : _a.call(this);
160
+ this.setupResizeObserver();
161
+ }
162
+ disconnectedCallback() {
163
+ if (this.resizeObserver) {
164
+ this.disconnectResizeObserver(this.resizeObserver);
165
+ }
166
+ }
167
+ disconnectResizeObserver(resizeObserver) {
168
+ if (this.sortSelectorContainer) {
169
+ resizeObserver.removeObserver({
170
+ target: this.sortSelectorContainer,
171
+ handler: this,
172
+ });
173
+ }
174
+ if (this.desktopSortContainer) {
175
+ resizeObserver.removeObserver({
176
+ target: this.desktopSortContainer,
177
+ handler: this,
178
+ });
179
+ }
180
+ }
181
+ setupResizeObserver() {
182
+ if (!this.resizeObserver)
183
+ return;
184
+ if (this.sortSelectorContainer) {
185
+ this.resizeObserver.addObserver({
186
+ target: this.sortSelectorContainer,
187
+ handler: this,
188
+ });
189
+ }
190
+ if (this.desktopSortContainer) {
191
+ this.resizeObserver.addObserver({
192
+ target: this.desktopSortContainer,
193
+ handler: this,
194
+ });
195
+ }
196
+ }
197
+ handleResize(entry) {
198
+ if (entry.target === this.desktopSortContainer) {
199
+ this.desktopSortContainerWidth = entry.contentRect.width;
200
+ }
201
+ else if (entry.target === this.sortSelectorContainer) {
202
+ this.selectorBarContainerWidth = entry.contentRect.width;
203
+ }
204
+ }
205
+ /**
206
+ * Whether to show the mobile sort bar because there is not enough space
207
+ * for the desktop sort bar.
208
+ */
209
+ get mobileSelectorVisible() {
210
+ return this.selectorBarContainerWidth - 10 < this.desktopSortContainerWidth;
211
+ }
212
+ /**
213
+ * Template to render the alphabet bar, or `nothing` if it should not be rendered
214
+ * for the current sort
215
+ */
216
+ get alphaBarTemplate() {
217
+ if (!['title', 'creator'].includes(this.selectedSort))
218
+ return nothing;
219
+ if (this.alphaSelectorVisible === null) {
220
+ if (this.selectedSort === 'creator')
221
+ return this.creatorSelectorBar;
222
+ if (this.selectedSort === 'title')
223
+ return this.titleSelectorBar;
224
+ }
225
+ else {
226
+ return this.alphaSelectorVisible === 'creator'
227
+ ? this.creatorSelectorBar
228
+ : this.titleSelectorBar;
229
+ }
230
+ return nothing;
231
+ }
232
+ /** Template to render the sort direction toggle button */
233
+ get sortDirectionSelectorTemplate() {
234
+ const oppositeSortDirectionReadable = this.sortDirection === 'asc' ? 'descending' : 'ascending';
235
+ const srLabel = `Change to ${oppositeSortDirectionReadable} sort`;
231
236
  return html `
232
237
  <button
233
238
  class="sort-direction-selector"
@@ -237,148 +242,148 @@ let SortFilterBar = class SortFilterBar extends LitElement {
237
242
  <span class="sr-only">${srLabel}</span>
238
243
  ${this.sortDirectionIcon}
239
244
  </button>
240
- `;
241
- }
242
- /** Template to render the sort direction button's icon in the correct current state */
243
- get sortDirectionIcon() {
244
- // Show a fully disabled icon for sort options without direction support
245
- if (!this.canChangeSortDirection) {
246
- return html `<div class="sort-direction-icon">${sortDisabledIcon}</div>`;
247
- }
248
- // For all other sorts, show the ascending/descending direction
245
+ `;
246
+ }
247
+ /** Template to render the sort direction button's icon in the correct current state */
248
+ get sortDirectionIcon() {
249
+ // Show a fully disabled icon for sort options without direction support
250
+ if (!this.canChangeSortDirection) {
251
+ return html `<div class="sort-direction-icon">${sortDisabledIcon}</div>`;
252
+ }
253
+ // For all other sorts, show the ascending/descending direction
249
254
  return html `
250
255
  <div class="sort-direction-icon">
251
256
  ${this.finalizedSortDirection === 'asc' ? sortUpIcon : sortDownIcon}
252
257
  </div>
253
- `;
254
- }
255
- /** The template to render all the sort options in desktop view */
256
- get desktopSortSelectorTemplate() {
258
+ `;
259
+ }
260
+ /** The template to render all the sort options in desktop view */
261
+ get desktopSortSelectorTemplate() {
257
262
  return html `
258
263
  <div
259
264
  id="desktop-sort-container"
260
265
  class=${this.mobileSelectorVisible ? 'hidden' : 'visible'}
261
266
  >
262
267
  <ul id="desktop-sort-selector">
263
- ${this.showRelevance
268
+ ${this.showRelevance
264
269
  ? html `<li>
265
- ${this.getSortDisplayOption(SortField.relevance, {
266
- onClick: () => {
267
- this.dropdownBackdropVisible = false;
268
- if (this.finalizedSortField !== SortField.relevance) {
269
- this.clearAlphaBarFilters();
270
- this.setSelectedSort(SortField.relevance);
271
- }
272
- },
270
+ ${this.getSortDisplayOption(SortField.relevance, {
271
+ onClick: () => {
272
+ this.dropdownBackdropVisible = false;
273
+ if (this.finalizedSortField !== SortField.relevance) {
274
+ this.clearAlphaBarFilters();
275
+ this.setSelectedSort(SortField.relevance);
276
+ }
277
+ },
273
278
  })}
274
- </li>`
279
+ </li>`
275
280
  : nothing}
276
281
  <li>${this.viewsDropdownTemplate}</li>
277
282
  <li>
278
- ${this.getSortDisplayOption(SortField.title, {
279
- onClick: () => {
280
- this.dropdownBackdropVisible = false;
281
- if (this.finalizedSortField !== SortField.title) {
282
- this.alphaSelectorVisible = 'title';
283
- this.selectedCreatorFilter = null;
284
- this.setSelectedSort(SortField.title);
285
- this.emitCreatorLetterChangedEvent();
286
- }
287
- },
283
+ ${this.getSortDisplayOption(SortField.title, {
284
+ onClick: () => {
285
+ this.dropdownBackdropVisible = false;
286
+ if (this.finalizedSortField !== SortField.title) {
287
+ this.alphaSelectorVisible = 'title';
288
+ this.selectedCreatorFilter = null;
289
+ this.setSelectedSort(SortField.title);
290
+ this.emitCreatorLetterChangedEvent();
291
+ }
292
+ },
288
293
  })}
289
294
  </li>
290
295
  <li>${this.dateDropdownTemplate}</li>
291
296
  <li>
292
- ${this.getSortDisplayOption(SortField.creator, {
293
- onClick: () => {
294
- this.dropdownBackdropVisible = false;
295
- if (this.finalizedSortField !== SortField.creator) {
296
- this.alphaSelectorVisible = 'creator';
297
- this.selectedTitleFilter = null;
298
- this.setSelectedSort(SortField.creator);
299
- this.emitTitleLetterChangedEvent();
300
- }
301
- },
297
+ ${this.getSortDisplayOption(SortField.creator, {
298
+ onClick: () => {
299
+ this.dropdownBackdropVisible = false;
300
+ if (this.finalizedSortField !== SortField.creator) {
301
+ this.alphaSelectorVisible = 'creator';
302
+ this.selectedTitleFilter = null;
303
+ this.setSelectedSort(SortField.creator);
304
+ this.emitTitleLetterChangedEvent();
305
+ }
306
+ },
302
307
  })}
303
308
  </li>
304
309
  </ul>
305
310
  </div>
306
- `;
307
- }
308
- /** The template to render all the sort options in mobile view */
309
- get mobileSortSelectorTemplate() {
310
- const displayedOptions = Object.values(SORT_OPTIONS)
311
- .filter(opt => opt.shownInSortBar)
312
- .filter(opt => this.showRelevance || opt.field !== SortField.relevance)
313
- .filter(opt => this.showDateFavorited || opt.field !== SortField.datefavorited);
311
+ `;
312
+ }
313
+ /** The template to render all the sort options in mobile view */
314
+ get mobileSortSelectorTemplate() {
315
+ const displayedOptions = Object.values(SORT_OPTIONS)
316
+ .filter(opt => opt.shownInSortBar)
317
+ .filter(opt => this.showRelevance || opt.field !== SortField.relevance)
318
+ .filter(opt => this.showDateFavorited || opt.field !== SortField.datefavorited);
314
319
  return html `
315
320
  <div
316
321
  id="mobile-sort-container"
317
322
  class=${this.mobileSelectorVisible ? 'visible' : 'hidden'}
318
323
  >
319
- ${this.getSortDropdown({
320
- displayName: html `${SORT_OPTIONS[this.finalizedSortField]
321
- .displayName}`,
322
- id: 'mobile-dropdown',
323
- selected: true,
324
- dropdownOptions: displayedOptions.map(opt => this.getDropdownOption(opt.field)),
325
- selectedOption: this.finalizedSortField,
326
- onOptionSelected: this.mobileSortChanged,
327
- onDropdownClick: () => {
328
- this.dropdownBackdropVisible = this.mobileDropdown.open;
329
- this.mobileDropdown.classList.toggle('open', this.mobileDropdown.open);
330
- },
324
+ ${this.getSortDropdown({
325
+ displayName: html `${SORT_OPTIONS[this.finalizedSortField]
326
+ .displayName}`,
327
+ id: 'mobile-dropdown',
328
+ selected: true,
329
+ dropdownOptions: displayedOptions.map(opt => this.getDropdownOption(opt.field)),
330
+ selectedOption: this.finalizedSortField,
331
+ onOptionSelected: this.mobileSortChanged,
332
+ onDropdownClick: () => {
333
+ this.dropdownBackdropVisible = this.mobileDropdown.open;
334
+ this.mobileDropdown.classList.toggle('open', this.mobileDropdown.open);
335
+ },
331
336
  })}
332
337
  </div>
333
- `;
334
- }
335
- /**
336
- * This generates each of the non-dropdown sort option links.
337
- *
338
- * It manages the display value and the selected state of the option.
339
- *
340
- * @param sortField
341
- * @param options {
342
- * onClick?: (e: Event) => void; If this is provided, it will also be called when the option is clicked.
343
- * displayName?: TemplateResult; The name to display for the option. Defaults to the sortField display name.
344
- * selected?: boolean; true if the option is selected. Defaults to the selectedSort === sortField.
345
- * }
346
- * @returns
347
- */
348
- getSortDisplayOption(sortField, options) {
349
- var _a, _b;
350
- const isSelected = (_a = options === null || options === void 0 ? void 0 : options.selected) !== null && _a !== void 0 ? _a : this.finalizedSortField === sortField;
351
- const displayName = (_b = options === null || options === void 0 ? void 0 : options.displayName) !== null && _b !== void 0 ? _b : SORT_OPTIONS[sortField].displayName;
338
+ `;
339
+ }
340
+ /**
341
+ * This generates each of the non-dropdown sort option links.
342
+ *
343
+ * It manages the display value and the selected state of the option.
344
+ *
345
+ * @param sortField
346
+ * @param options {
347
+ * onClick?: (e: Event) => void; If this is provided, it will also be called when the option is clicked.
348
+ * displayName?: TemplateResult; The name to display for the option. Defaults to the sortField display name.
349
+ * selected?: boolean; true if the option is selected. Defaults to the selectedSort === sortField.
350
+ * }
351
+ * @returns
352
+ */
353
+ getSortDisplayOption(sortField, options) {
354
+ var _a, _b;
355
+ const isSelected = (_a = options === null || options === void 0 ? void 0 : options.selected) !== null && _a !== void 0 ? _a : this.finalizedSortField === sortField;
356
+ const displayName = (_b = options === null || options === void 0 ? void 0 : options.displayName) !== null && _b !== void 0 ? _b : SORT_OPTIONS[sortField].displayName;
352
357
  return html `
353
358
  <button
354
359
  class=${isSelected ? 'selected' : nothing}
355
360
  data-title="${displayName}"
356
- @click=${(e) => {
357
- var _a;
358
- e.preventDefault();
359
- (_a = options === null || options === void 0 ? void 0 : options.onClick) === null || _a === void 0 ? void 0 : _a.call(options, e);
361
+ @click=${(e) => {
362
+ var _a;
363
+ e.preventDefault();
364
+ (_a = options === null || options === void 0 ? void 0 : options.onClick) === null || _a === void 0 ? void 0 : _a.call(options, e);
360
365
  }}
361
366
  >
362
367
  ${displayName}
363
368
  </button>
364
- `;
365
- }
366
- /**
367
- * Generates a dropdown component containing multiple grouped sort options.
368
- *
369
- * @param options.displayName The name to use for the dropdown's visible label
370
- * @param options.id The id to apply to the dropdown element
371
- * @param options.dropdownOptions An array of option objects used to populate the dropdown
372
- * @param options.selectedOption The id of the option that should be initially selected
373
- * @param options.selected A boolean indicating whether this dropdown should use its
374
- * selected appearance
375
- * @param options.onOptionSelected A handler for optionSelected events coming from the dropdown
376
- * @param options.onDropdownClick A handler for click events on the dropdown
377
- * @param options.onLabelInteraction A handler for click events and Enter/Space keydown events
378
- * on the dropdown's label
379
- */
380
- getSortDropdown(options) {
381
- var _a, _b, _c, _d, _e;
369
+ `;
370
+ }
371
+ /**
372
+ * Generates a dropdown component containing multiple grouped sort options.
373
+ *
374
+ * @param options.displayName The name to use for the dropdown's visible label
375
+ * @param options.id The id to apply to the dropdown element
376
+ * @param options.dropdownOptions An array of option objects used to populate the dropdown
377
+ * @param options.selectedOption The id of the option that should be initially selected
378
+ * @param options.selected A boolean indicating whether this dropdown should use its
379
+ * selected appearance
380
+ * @param options.onOptionSelected A handler for optionSelected events coming from the dropdown
381
+ * @param options.onDropdownClick A handler for click events on the dropdown
382
+ * @param options.onLabelInteraction A handler for click events and Enter/Space keydown events
383
+ * on the dropdown's label
384
+ */
385
+ getSortDropdown(options) {
386
+ var _a, _b, _c, _d, _e;
382
387
  return html `
383
388
  <ia-dropdown
384
389
  id=${(_a = options.id) !== null && _a !== void 0 ? _a : nothing}
@@ -397,128 +402,128 @@ let SortFilterBar = class SortFilterBar extends LitElement {
397
402
  slot="dropdown-label"
398
403
  data-title="${options.displayName.values}"
399
404
  @click=${(_e = options.onLabelInteraction) !== null && _e !== void 0 ? _e : nothing}
400
- @keydown=${options.onLabelInteraction
401
- ? (e) => {
402
- var _a;
403
- if (e.key === 'Enter' || e.key === ' ') {
404
- (_a = options.onLabelInteraction) === null || _a === void 0 ? void 0 : _a.call(options, e);
405
- }
406
- }
405
+ @keydown=${options.onLabelInteraction
406
+ ? (e) => {
407
+ var _a;
408
+ if (e.key === 'Enter' || e.key === ' ') {
409
+ (_a = options.onLabelInteraction) === null || _a === void 0 ? void 0 : _a.call(options, e);
410
+ }
411
+ }
407
412
  : nothing}
408
413
  >
409
414
  ${options.displayName}
410
415
  </span>
411
416
  </ia-dropdown>
412
- `;
413
- }
414
- /** Generates a single dropdown option object for the given sort field */
415
- getDropdownOption(sortField) {
416
- return {
417
- id: sortField,
418
- selectedHandler: () => {
419
- this.selectDropdownSortField(sortField);
420
- },
417
+ `;
418
+ }
419
+ /** Generates a single dropdown option object for the given sort field */
420
+ getDropdownOption(sortField) {
421
+ return {
422
+ id: sortField,
423
+ selectedHandler: () => {
424
+ this.selectDropdownSortField(sortField);
425
+ },
421
426
  label: html `
422
427
  <span class="dropdown-option-label">
423
428
  ${SORT_OPTIONS[sortField].displayName}
424
429
  </span>
425
- `,
426
- };
427
- }
428
- /** Handler for when any sort dropdown option is selected */
429
- dropdownOptionSelected(e) {
430
- this.dropdownBackdropVisible = false;
431
- this.clearAlphaBarFilters();
432
- const sortField = e.detail.option.id;
433
- this.setSelectedSort(sortField);
434
- if (this.viewOptionSelected) {
435
- this.lastSelectedViewSort = sortField;
436
- }
437
- else if (this.dateOptionSelected) {
438
- this.lastSelectedDateSort = sortField;
439
- }
440
- }
441
- /** The template to render for the views dropdown */
442
- get viewsDropdownTemplate() {
443
- return this.getSortDropdown({
444
- displayName: html `${this.viewSortDisplayName}`,
445
- id: 'views-dropdown',
446
- selected: this.viewOptionSelected,
447
- dropdownOptions: [
448
- this.getDropdownOption(SortField.weeklyview),
449
- this.getDropdownOption(SortField.alltimeview),
450
- ],
451
- selectedOption: this.viewOptionSelected ? this.finalizedSortField : '',
452
- onOptionSelected: this.dropdownOptionSelected,
453
- onDropdownClick: () => {
454
- this.dateDropdown.open = false;
455
- this.dropdownBackdropVisible = this.viewsDropdown.open;
456
- this.viewsDropdown.classList.toggle('open', this.viewsDropdown.open);
457
- },
458
- onLabelInteraction: (e) => {
459
- if (!this.viewsDropdown.open && !this.viewOptionSelected) {
460
- e.stopPropagation();
461
- this.clearAlphaBarFilters();
462
- this.setSelectedSort(this.lastSelectedViewSort);
463
- }
464
- },
465
- });
466
- }
467
- /** The template to render for the date dropdown */
468
- get dateDropdownTemplate() {
469
- return this.getSortDropdown({
470
- displayName: html `${this.dateSortDisplayName}`,
471
- id: 'date-dropdown',
472
- selected: this.dateOptionSelected,
473
- dropdownOptions: [
474
- ...(this.showDateFavorited
475
- ? [this.getDropdownOption(SortField.datefavorited)]
476
- : []),
477
- this.getDropdownOption(SortField.date),
478
- this.getDropdownOption(SortField.datearchived),
479
- this.getDropdownOption(SortField.datereviewed),
480
- this.getDropdownOption(SortField.dateadded),
481
- ],
482
- selectedOption: this.dateOptionSelected ? this.finalizedSortField : '',
483
- onOptionSelected: this.dropdownOptionSelected,
484
- onDropdownClick: () => {
485
- this.viewsDropdown.open = false;
486
- this.dropdownBackdropVisible = this.dateDropdown.open;
487
- this.dateDropdown.classList.toggle('open', this.dateDropdown.open);
488
- },
489
- onLabelInteraction: (e) => {
490
- if (!this.dateDropdown.open && !this.dateOptionSelected) {
491
- e.stopPropagation();
492
- this.clearAlphaBarFilters();
493
- this.setSelectedSort(this.lastSelectedDateSort);
494
- }
495
- },
496
- });
497
- }
498
- /** Handler for when a new mobile sort dropdown option is selected */
499
- mobileSortChanged(e) {
500
- this.dropdownBackdropVisible = false;
501
- const sortField = e.detail.option.id;
502
- this.setSelectedSort(sortField);
503
- this.alphaSelectorVisible = null;
504
- if (sortField !== 'title' && this.selectedTitleFilter) {
505
- this.selectedTitleFilter = null;
506
- this.emitTitleLetterChangedEvent();
507
- }
508
- if (sortField !== 'creator' && this.selectedCreatorFilter) {
509
- this.selectedCreatorFilter = null;
510
- this.emitCreatorLetterChangedEvent();
511
- }
512
- }
513
- /** Template for rendering the three display mode options */
514
- get displayOptionTemplate() {
430
+ `,
431
+ };
432
+ }
433
+ /** Handler for when any sort dropdown option is selected */
434
+ dropdownOptionSelected(e) {
435
+ this.dropdownBackdropVisible = false;
436
+ this.clearAlphaBarFilters();
437
+ const sortField = e.detail.option.id;
438
+ this.setSelectedSort(sortField);
439
+ if (this.viewOptionSelected) {
440
+ this.lastSelectedViewSort = sortField;
441
+ }
442
+ else if (this.dateOptionSelected) {
443
+ this.lastSelectedDateSort = sortField;
444
+ }
445
+ }
446
+ /** The template to render for the views dropdown */
447
+ get viewsDropdownTemplate() {
448
+ return this.getSortDropdown({
449
+ displayName: html `${this.viewSortDisplayName}`,
450
+ id: 'views-dropdown',
451
+ selected: this.viewOptionSelected,
452
+ dropdownOptions: [
453
+ this.getDropdownOption(SortField.weeklyview),
454
+ this.getDropdownOption(SortField.alltimeview),
455
+ ],
456
+ selectedOption: this.viewOptionSelected ? this.finalizedSortField : '',
457
+ onOptionSelected: this.dropdownOptionSelected,
458
+ onDropdownClick: () => {
459
+ this.dateDropdown.open = false;
460
+ this.dropdownBackdropVisible = this.viewsDropdown.open;
461
+ this.viewsDropdown.classList.toggle('open', this.viewsDropdown.open);
462
+ },
463
+ onLabelInteraction: (e) => {
464
+ if (!this.viewsDropdown.open && !this.viewOptionSelected) {
465
+ e.stopPropagation();
466
+ this.clearAlphaBarFilters();
467
+ this.setSelectedSort(this.lastSelectedViewSort);
468
+ }
469
+ },
470
+ });
471
+ }
472
+ /** The template to render for the date dropdown */
473
+ get dateDropdownTemplate() {
474
+ return this.getSortDropdown({
475
+ displayName: html `${this.dateSortDisplayName}`,
476
+ id: 'date-dropdown',
477
+ selected: this.dateOptionSelected,
478
+ dropdownOptions: [
479
+ ...(this.showDateFavorited
480
+ ? [this.getDropdownOption(SortField.datefavorited)]
481
+ : []),
482
+ this.getDropdownOption(SortField.date),
483
+ this.getDropdownOption(SortField.datearchived),
484
+ this.getDropdownOption(SortField.datereviewed),
485
+ this.getDropdownOption(SortField.dateadded),
486
+ ],
487
+ selectedOption: this.dateOptionSelected ? this.finalizedSortField : '',
488
+ onOptionSelected: this.dropdownOptionSelected,
489
+ onDropdownClick: () => {
490
+ this.viewsDropdown.open = false;
491
+ this.dropdownBackdropVisible = this.dateDropdown.open;
492
+ this.dateDropdown.classList.toggle('open', this.dateDropdown.open);
493
+ },
494
+ onLabelInteraction: (e) => {
495
+ if (!this.dateDropdown.open && !this.dateOptionSelected) {
496
+ e.stopPropagation();
497
+ this.clearAlphaBarFilters();
498
+ this.setSelectedSort(this.lastSelectedDateSort);
499
+ }
500
+ },
501
+ });
502
+ }
503
+ /** Handler for when a new mobile sort dropdown option is selected */
504
+ mobileSortChanged(e) {
505
+ this.dropdownBackdropVisible = false;
506
+ const sortField = e.detail.option.id;
507
+ this.setSelectedSort(sortField);
508
+ this.alphaSelectorVisible = null;
509
+ if (sortField !== 'title' && this.selectedTitleFilter) {
510
+ this.selectedTitleFilter = null;
511
+ this.emitTitleLetterChangedEvent();
512
+ }
513
+ if (sortField !== 'creator' && this.selectedCreatorFilter) {
514
+ this.selectedCreatorFilter = null;
515
+ this.emitCreatorLetterChangedEvent();
516
+ }
517
+ }
518
+ /** Template for rendering the three display mode options */
519
+ get displayOptionTemplate() {
515
520
  return html `
516
521
  <ul>
517
522
  <li>
518
523
  <button
519
524
  id="grid-button"
520
- @click=${() => {
521
- this.displayMode = 'grid';
525
+ @click=${() => {
526
+ this.displayMode = 'grid';
522
527
  }}
523
528
  class=${this.displayMode === 'grid' ? 'active' : ''}
524
529
  title="Tile view"
@@ -529,8 +534,8 @@ let SortFilterBar = class SortFilterBar extends LitElement {
529
534
  <li>
530
535
  <button
531
536
  id="list-detail-button"
532
- @click=${() => {
533
- this.displayMode = 'list-detail';
537
+ @click=${() => {
538
+ this.displayMode = 'list-detail';
534
539
  }}
535
540
  class=${this.displayMode === 'list-detail' ? 'active' : ''}
536
541
  title="List view"
@@ -541,8 +546,8 @@ let SortFilterBar = class SortFilterBar extends LitElement {
541
546
  <li>
542
547
  <button
543
548
  id="list-compact-button"
544
- @click=${() => {
545
- this.displayMode = 'list-compact';
549
+ @click=${() => {
550
+ this.displayMode = 'list-compact';
546
551
  }}
547
552
  class=${this.displayMode === 'list-compact' ? 'active' : ''}
548
553
  title="Compact list view"
@@ -551,213 +556,213 @@ let SortFilterBar = class SortFilterBar extends LitElement {
551
556
  </button>
552
557
  </li>
553
558
  </ul>
554
- `;
555
- }
556
- /**
557
- * Template for rendering the transparent backdrop to capture clicks outside the
558
- * dropdown menu while it is open.
559
- */
560
- get dropdownBackdrop() {
559
+ `;
560
+ }
561
+ /**
562
+ * Template for rendering the transparent backdrop to capture clicks outside the
563
+ * dropdown menu while it is open.
564
+ */
565
+ get dropdownBackdrop() {
561
566
  return html `
562
567
  <div
563
568
  id="sort-selector-backdrop"
564
569
  @keyup=${this.closeDropdowns}
565
570
  @click=${this.closeDropdowns}
566
571
  ></div>
567
- `;
568
- }
569
- /** Closes all of the sorting dropdown components' menus */
570
- closeDropdowns() {
571
- this.dropdownBackdropVisible = false;
572
- const allDropdowns = [
573
- this.viewsDropdown,
574
- this.dateDropdown,
575
- this.mobileDropdown,
576
- ];
577
- for (const dropdown of allDropdowns) {
578
- dropdown.open = false;
579
- dropdown.classList.remove('open');
580
- }
581
- }
582
- selectDropdownSortField(sortField) {
583
- // When a dropdown sort option is selected, we additionally need to clear the backdrop
584
- this.dropdownBackdropVisible = false;
585
- this.setSelectedSort(sortField);
586
- }
587
- clearAlphaBarFilters() {
588
- this.alphaSelectorVisible = null;
589
- this.selectedTitleFilter = null;
590
- this.selectedCreatorFilter = null;
591
- this.emitTitleLetterChangedEvent();
592
- this.emitCreatorLetterChangedEvent();
593
- }
594
- setSortDirection(sortDirection) {
595
- this.sortDirection = sortDirection;
596
- this.emitSortChangedEvent();
597
- }
598
- /** Toggles the current sort direction between 'asc' and 'desc' */
599
- toggleSortDirection() {
600
- this.setSortDirection(this.finalizedSortDirection === 'desc' ? 'asc' : 'desc');
601
- }
602
- handleSortDirectionClicked() {
603
- if (!this.sortDirection &&
604
- this.defaultSortField &&
605
- this.defaultSortDirection) {
606
- // When the sort direction is merely defaulted (not set by the user), clicking
607
- // the toggled button should "promote" the default sort to an explicitly-set one
608
- // and then toggle it as usual.
609
- this.selectedSort = this.defaultSortField;
610
- this.sortDirection = this.defaultSortDirection;
611
- }
612
- this.toggleSortDirection();
613
- }
614
- setSelectedSort(sort) {
615
- this.selectedSort = sort;
616
- // Apply this field's default sort direction
617
- const sortOption = SORT_OPTIONS[sort];
618
- this.sortDirection = sortOption.defaultSortDirection;
619
- this.emitSortChangedEvent();
620
- }
621
- /** The current sort field, or the default one if no explicit sort is set */
622
- get finalizedSortField() {
623
- return this.selectedSort === SortField.default
624
- ? this.defaultSortField
625
- : this.selectedSort;
626
- }
627
- /** The current sort direction, or the default one if no explicit direction is set */
628
- get finalizedSortDirection() {
629
- return this.sortDirection === null
630
- ? this.defaultSortDirection
631
- : this.sortDirection;
632
- }
633
- /** Whether the sort direction button should be enabled for the current sort */
634
- get canChangeSortDirection() {
635
- return SORT_OPTIONS[this.finalizedSortField].canSetDirection;
636
- }
637
- /**
638
- * There are four date sort options.
639
- *
640
- * This checks to see if the current sort is one of them.
641
- *
642
- * @readonly
643
- * @private
644
- * @type {boolean}
645
- * @memberof SortFilterBar
646
- */
647
- get dateOptionSelected() {
648
- const dateSortFields = [
649
- SortField.datefavorited,
650
- SortField.datearchived,
651
- SortField.date,
652
- SortField.datereviewed,
653
- SortField.dateadded,
654
- ];
655
- return dateSortFields.includes(this.finalizedSortField);
656
- }
657
- /**
658
- * There are two view sort options.
659
- *
660
- * This checks to see if the current sort is one of them.
661
- *
662
- * @readonly
663
- * @private
664
- * @type {boolean}
665
- * @memberof SortFilterBar
666
- */
667
- get viewOptionSelected() {
668
- const viewSortFields = [
669
- SortField.alltimeview,
670
- SortField.weeklyview,
671
- ];
672
- return viewSortFields.includes(this.finalizedSortField);
673
- }
674
- /**
675
- * The default field for the date sort dropdown.
676
- * This is Date Favorited when that option is available, or Date Published otherwise.
677
- */
678
- get defaultDateSortField() {
679
- return this.showDateFavorited ? SortField.datefavorited : SortField.date;
680
- }
681
- /**
682
- * The display name of the last selected date field
683
- *
684
- * @readonly
685
- * @private
686
- * @type {string}
687
- * @memberof SortFilterBar
688
- */
689
- get dateSortDisplayName() {
690
- return SORT_OPTIONS[this.lastSelectedDateSort].displayName;
691
- }
692
- /**
693
- * The display name of the last selected view field
694
- *
695
- * @readonly
696
- * @private
697
- * @type {string}
698
- * @memberof SortFilterBar
699
- */
700
- get viewSortDisplayName() {
701
- return SORT_OPTIONS[this.lastSelectedViewSort].displayName;
702
- }
703
- get titleSelectorBar() {
704
- var _a;
572
+ `;
573
+ }
574
+ /** Closes all of the sorting dropdown components' menus */
575
+ closeDropdowns() {
576
+ this.dropdownBackdropVisible = false;
577
+ const allDropdowns = [
578
+ this.viewsDropdown,
579
+ this.dateDropdown,
580
+ this.mobileDropdown,
581
+ ];
582
+ for (const dropdown of allDropdowns) {
583
+ dropdown.open = false;
584
+ dropdown.classList.remove('open');
585
+ }
586
+ }
587
+ selectDropdownSortField(sortField) {
588
+ // When a dropdown sort option is selected, we additionally need to clear the backdrop
589
+ this.dropdownBackdropVisible = false;
590
+ this.setSelectedSort(sortField);
591
+ }
592
+ clearAlphaBarFilters() {
593
+ this.alphaSelectorVisible = null;
594
+ this.selectedTitleFilter = null;
595
+ this.selectedCreatorFilter = null;
596
+ this.emitTitleLetterChangedEvent();
597
+ this.emitCreatorLetterChangedEvent();
598
+ }
599
+ setSortDirection(sortDirection) {
600
+ this.sortDirection = sortDirection;
601
+ this.emitSortChangedEvent();
602
+ }
603
+ /** Toggles the current sort direction between 'asc' and 'desc' */
604
+ toggleSortDirection() {
605
+ this.setSortDirection(this.finalizedSortDirection === 'desc' ? 'asc' : 'desc');
606
+ }
607
+ handleSortDirectionClicked() {
608
+ if (!this.sortDirection &&
609
+ this.defaultSortField &&
610
+ this.defaultSortDirection) {
611
+ // When the sort direction is merely defaulted (not set by the user), clicking
612
+ // the toggled button should "promote" the default sort to an explicitly-set one
613
+ // and then toggle it as usual.
614
+ this.selectedSort = this.defaultSortField;
615
+ this.sortDirection = this.defaultSortDirection;
616
+ }
617
+ this.toggleSortDirection();
618
+ }
619
+ setSelectedSort(sort) {
620
+ this.selectedSort = sort;
621
+ // Apply this field's default sort direction
622
+ const sortOption = SORT_OPTIONS[sort];
623
+ this.sortDirection = sortOption.defaultSortDirection;
624
+ this.emitSortChangedEvent();
625
+ }
626
+ /** The current sort field, or the default one if no explicit sort is set */
627
+ get finalizedSortField() {
628
+ return this.selectedSort === SortField.default
629
+ ? this.defaultSortField
630
+ : this.selectedSort;
631
+ }
632
+ /** The current sort direction, or the default one if no explicit direction is set */
633
+ get finalizedSortDirection() {
634
+ return this.sortDirection === null
635
+ ? this.defaultSortDirection
636
+ : this.sortDirection;
637
+ }
638
+ /** Whether the sort direction button should be enabled for the current sort */
639
+ get canChangeSortDirection() {
640
+ return SORT_OPTIONS[this.finalizedSortField].canSetDirection;
641
+ }
642
+ /**
643
+ * There are four date sort options.
644
+ *
645
+ * This checks to see if the current sort is one of them.
646
+ *
647
+ * @readonly
648
+ * @private
649
+ * @type {boolean}
650
+ * @memberof SortFilterBar
651
+ */
652
+ get dateOptionSelected() {
653
+ const dateSortFields = [
654
+ SortField.datefavorited,
655
+ SortField.datearchived,
656
+ SortField.date,
657
+ SortField.datereviewed,
658
+ SortField.dateadded,
659
+ ];
660
+ return dateSortFields.includes(this.finalizedSortField);
661
+ }
662
+ /**
663
+ * There are two view sort options.
664
+ *
665
+ * This checks to see if the current sort is one of them.
666
+ *
667
+ * @readonly
668
+ * @private
669
+ * @type {boolean}
670
+ * @memberof SortFilterBar
671
+ */
672
+ get viewOptionSelected() {
673
+ const viewSortFields = [
674
+ SortField.alltimeview,
675
+ SortField.weeklyview,
676
+ ];
677
+ return viewSortFields.includes(this.finalizedSortField);
678
+ }
679
+ /**
680
+ * The default field for the date sort dropdown.
681
+ * This is Date Favorited when that option is available, or Date Published otherwise.
682
+ */
683
+ get defaultDateSortField() {
684
+ return this.showDateFavorited ? SortField.datefavorited : SortField.date;
685
+ }
686
+ /**
687
+ * The display name of the last selected date field
688
+ *
689
+ * @readonly
690
+ * @private
691
+ * @type {string}
692
+ * @memberof SortFilterBar
693
+ */
694
+ get dateSortDisplayName() {
695
+ return SORT_OPTIONS[this.lastSelectedDateSort].displayName;
696
+ }
697
+ /**
698
+ * The display name of the last selected view field
699
+ *
700
+ * @readonly
701
+ * @private
702
+ * @type {string}
703
+ * @memberof SortFilterBar
704
+ */
705
+ get viewSortDisplayName() {
706
+ return SORT_OPTIONS[this.lastSelectedViewSort].displayName;
707
+ }
708
+ get titleSelectorBar() {
709
+ var _a;
705
710
  return html ` <alpha-bar
706
711
  .selectedLetter=${this.selectedTitleFilter}
707
712
  .letterCounts=${(_a = this.prefixFilterCountMap) === null || _a === void 0 ? void 0 : _a.title}
708
713
  ariaLandmarkLabel="Filter by title letter"
709
714
  @letterChanged=${this.titleLetterChanged}
710
- ></alpha-bar>`;
711
- }
712
- get creatorSelectorBar() {
713
- var _a;
715
+ ></alpha-bar>`;
716
+ }
717
+ get creatorSelectorBar() {
718
+ var _a;
714
719
  return html ` <alpha-bar
715
720
  .selectedLetter=${this.selectedCreatorFilter}
716
721
  .letterCounts=${(_a = this.prefixFilterCountMap) === null || _a === void 0 ? void 0 : _a.creator}
717
722
  ariaLandmarkLabel="Filter by creator letter"
718
723
  @letterChanged=${this.creatorLetterChanged}
719
- ></alpha-bar>`;
720
- }
721
- titleLetterChanged(e) {
722
- var _a;
723
- this.selectedTitleFilter = (_a = e.detail.selectedLetter) !== null && _a !== void 0 ? _a : null;
724
- this.emitTitleLetterChangedEvent();
725
- }
726
- creatorLetterChanged(e) {
727
- var _a;
728
- this.selectedCreatorFilter = (_a = e.detail.selectedLetter) !== null && _a !== void 0 ? _a : null;
729
- this.emitCreatorLetterChangedEvent();
730
- }
731
- emitTitleLetterChangedEvent() {
732
- const event = new CustomEvent('titleLetterChanged', {
733
- detail: { selectedLetter: this.selectedTitleFilter },
734
- });
735
- this.dispatchEvent(event);
736
- }
737
- emitCreatorLetterChangedEvent() {
738
- const event = new CustomEvent('creatorLetterChanged', {
739
- detail: { selectedLetter: this.selectedCreatorFilter },
740
- });
741
- this.dispatchEvent(event);
742
- }
743
- displayModeChanged() {
744
- const event = new CustomEvent('displayModeChanged', {
745
- detail: { displayMode: this.displayMode },
746
- });
747
- this.dispatchEvent(event);
748
- }
749
- emitSortChangedEvent() {
750
- const event = new CustomEvent('sortChanged', {
751
- detail: {
752
- selectedSort: this.selectedSort,
753
- sortDirection: this.sortDirection,
754
- },
755
- });
756
- this.dispatchEvent(event);
757
- }
758
- static get styles() {
759
- return [
760
- srOnlyStyle,
724
+ ></alpha-bar>`;
725
+ }
726
+ titleLetterChanged(e) {
727
+ var _a;
728
+ this.selectedTitleFilter = (_a = e.detail.selectedLetter) !== null && _a !== void 0 ? _a : null;
729
+ this.emitTitleLetterChangedEvent();
730
+ }
731
+ creatorLetterChanged(e) {
732
+ var _a;
733
+ this.selectedCreatorFilter = (_a = e.detail.selectedLetter) !== null && _a !== void 0 ? _a : null;
734
+ this.emitCreatorLetterChangedEvent();
735
+ }
736
+ emitTitleLetterChangedEvent() {
737
+ const event = new CustomEvent('titleLetterChanged', {
738
+ detail: { selectedLetter: this.selectedTitleFilter },
739
+ });
740
+ this.dispatchEvent(event);
741
+ }
742
+ emitCreatorLetterChangedEvent() {
743
+ const event = new CustomEvent('creatorLetterChanged', {
744
+ detail: { selectedLetter: this.selectedCreatorFilter },
745
+ });
746
+ this.dispatchEvent(event);
747
+ }
748
+ displayModeChanged() {
749
+ const event = new CustomEvent('displayModeChanged', {
750
+ detail: { displayMode: this.displayMode },
751
+ });
752
+ this.dispatchEvent(event);
753
+ }
754
+ emitSortChangedEvent() {
755
+ const event = new CustomEvent('sortChanged', {
756
+ detail: {
757
+ selectedSort: this.selectedSort,
758
+ sortDirection: this.sortDirection,
759
+ },
760
+ });
761
+ this.dispatchEvent(event);
762
+ }
763
+ static get styles() {
764
+ return [
765
+ srOnlyStyle,
761
766
  css `
762
767
  #container {
763
768
  position: relative;
@@ -988,84 +993,84 @@ let SortFilterBar = class SortFilterBar extends LitElement {
988
993
  white-space: nowrap;
989
994
  user-select: none;
990
995
  }
991
- `,
992
- ];
993
- }
994
- };
995
- __decorate([
996
- property({ type: String })
997
- ], SortFilterBar.prototype, "displayMode", void 0);
998
- __decorate([
999
- property({ type: String })
1000
- ], SortFilterBar.prototype, "defaultSortDirection", void 0);
1001
- __decorate([
1002
- property({ type: String })
1003
- ], SortFilterBar.prototype, "defaultSortField", void 0);
1004
- __decorate([
1005
- property({ type: String })
1006
- ], SortFilterBar.prototype, "sortDirection", void 0);
1007
- __decorate([
1008
- property({ type: String })
1009
- ], SortFilterBar.prototype, "selectedSort", void 0);
1010
- __decorate([
1011
- property({ type: String })
1012
- ], SortFilterBar.prototype, "selectedTitleFilter", void 0);
1013
- __decorate([
1014
- property({ type: String })
1015
- ], SortFilterBar.prototype, "selectedCreatorFilter", void 0);
1016
- __decorate([
1017
- property({ type: Boolean })
1018
- ], SortFilterBar.prototype, "showRelevance", void 0);
1019
- __decorate([
1020
- property({ type: Boolean })
1021
- ], SortFilterBar.prototype, "showDateFavorited", void 0);
1022
- __decorate([
1023
- property({ type: Boolean, reflect: true })
1024
- ], SortFilterBar.prototype, "enableSortOptionsSlot", void 0);
1025
- __decorate([
1026
- property({ type: Boolean, reflect: true })
1027
- ], SortFilterBar.prototype, "suppressDisplayModes", void 0);
1028
- __decorate([
1029
- property({ type: Object })
1030
- ], SortFilterBar.prototype, "prefixFilterCountMap", void 0);
1031
- __decorate([
1032
- property({ type: Object })
1033
- ], SortFilterBar.prototype, "resizeObserver", void 0);
1034
- __decorate([
1035
- state()
1036
- ], SortFilterBar.prototype, "lastSelectedViewSort", void 0);
1037
- __decorate([
1038
- state()
1039
- ], SortFilterBar.prototype, "lastSelectedDateSort", void 0);
1040
- __decorate([
1041
- state()
1042
- ], SortFilterBar.prototype, "alphaSelectorVisible", void 0);
1043
- __decorate([
1044
- state()
1045
- ], SortFilterBar.prototype, "dropdownBackdropVisible", void 0);
1046
- __decorate([
1047
- state()
1048
- ], SortFilterBar.prototype, "desktopSortContainerWidth", void 0);
1049
- __decorate([
1050
- state()
1051
- ], SortFilterBar.prototype, "selectorBarContainerWidth", void 0);
1052
- __decorate([
1053
- query('#desktop-sort-container')
1054
- ], SortFilterBar.prototype, "desktopSortContainer", void 0);
1055
- __decorate([
1056
- query('#sort-selector-container')
1057
- ], SortFilterBar.prototype, "sortSelectorContainer", void 0);
1058
- __decorate([
1059
- query('#views-dropdown')
1060
- ], SortFilterBar.prototype, "viewsDropdown", void 0);
1061
- __decorate([
1062
- query('#date-dropdown')
1063
- ], SortFilterBar.prototype, "dateDropdown", void 0);
1064
- __decorate([
1065
- query('#mobile-dropdown')
1066
- ], SortFilterBar.prototype, "mobileDropdown", void 0);
1067
- SortFilterBar = __decorate([
1068
- customElement('sort-filter-bar')
1069
- ], SortFilterBar);
1070
- export { SortFilterBar };
996
+ `,
997
+ ];
998
+ }
999
+ };
1000
+ __decorate([
1001
+ property({ type: String })
1002
+ ], SortFilterBar.prototype, "displayMode", void 0);
1003
+ __decorate([
1004
+ property({ type: String })
1005
+ ], SortFilterBar.prototype, "defaultSortDirection", void 0);
1006
+ __decorate([
1007
+ property({ type: String })
1008
+ ], SortFilterBar.prototype, "defaultSortField", void 0);
1009
+ __decorate([
1010
+ property({ type: String })
1011
+ ], SortFilterBar.prototype, "sortDirection", void 0);
1012
+ __decorate([
1013
+ property({ type: String })
1014
+ ], SortFilterBar.prototype, "selectedSort", void 0);
1015
+ __decorate([
1016
+ property({ type: String })
1017
+ ], SortFilterBar.prototype, "selectedTitleFilter", void 0);
1018
+ __decorate([
1019
+ property({ type: String })
1020
+ ], SortFilterBar.prototype, "selectedCreatorFilter", void 0);
1021
+ __decorate([
1022
+ property({ type: Boolean })
1023
+ ], SortFilterBar.prototype, "showRelevance", void 0);
1024
+ __decorate([
1025
+ property({ type: Boolean })
1026
+ ], SortFilterBar.prototype, "showDateFavorited", void 0);
1027
+ __decorate([
1028
+ property({ type: Boolean, reflect: true })
1029
+ ], SortFilterBar.prototype, "enableSortOptionsSlot", void 0);
1030
+ __decorate([
1031
+ property({ type: Boolean, reflect: true })
1032
+ ], SortFilterBar.prototype, "suppressDisplayModes", void 0);
1033
+ __decorate([
1034
+ property({ type: Object })
1035
+ ], SortFilterBar.prototype, "prefixFilterCountMap", void 0);
1036
+ __decorate([
1037
+ property({ type: Object })
1038
+ ], SortFilterBar.prototype, "resizeObserver", void 0);
1039
+ __decorate([
1040
+ state()
1041
+ ], SortFilterBar.prototype, "lastSelectedViewSort", void 0);
1042
+ __decorate([
1043
+ state()
1044
+ ], SortFilterBar.prototype, "lastSelectedDateSort", void 0);
1045
+ __decorate([
1046
+ state()
1047
+ ], SortFilterBar.prototype, "alphaSelectorVisible", void 0);
1048
+ __decorate([
1049
+ state()
1050
+ ], SortFilterBar.prototype, "dropdownBackdropVisible", void 0);
1051
+ __decorate([
1052
+ state()
1053
+ ], SortFilterBar.prototype, "desktopSortContainerWidth", void 0);
1054
+ __decorate([
1055
+ state()
1056
+ ], SortFilterBar.prototype, "selectorBarContainerWidth", void 0);
1057
+ __decorate([
1058
+ query('#desktop-sort-container')
1059
+ ], SortFilterBar.prototype, "desktopSortContainer", void 0);
1060
+ __decorate([
1061
+ query('#sort-selector-container')
1062
+ ], SortFilterBar.prototype, "sortSelectorContainer", void 0);
1063
+ __decorate([
1064
+ query('#views-dropdown')
1065
+ ], SortFilterBar.prototype, "viewsDropdown", void 0);
1066
+ __decorate([
1067
+ query('#date-dropdown')
1068
+ ], SortFilterBar.prototype, "dateDropdown", void 0);
1069
+ __decorate([
1070
+ query('#mobile-dropdown')
1071
+ ], SortFilterBar.prototype, "mobileDropdown", void 0);
1072
+ SortFilterBar = __decorate([
1073
+ customElement('sort-filter-bar')
1074
+ ], SortFilterBar);
1075
+ export { SortFilterBar };
1071
1076
  //# sourceMappingURL=sort-filter-bar.js.map