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