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

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