@internetarchive/collection-browser 2.1.3-alpha.1 → 2.1.3

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