@internetarchive/collection-browser 3.3.2 → 3.3.4-alpha-webdev7761.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/.github/workflows/ci.yml +27 -27
- package/.github/workflows/gh-pages-main.yml +39 -39
- package/.github/workflows/npm-publish.yml +39 -39
- package/.github/workflows/pr-preview.yml +38 -38
- package/.husky/pre-commit +4 -4
- package/.prettierignore +1 -1
- package/LICENSE +661 -661
- package/README.md +83 -83
- package/dist/index.d.ts +16 -0
- package/dist/index.js.map +1 -0
- package/dist/src/app-root.d.ts +105 -0
- package/dist/src/app-root.js +1076 -0
- package/dist/src/app-root.js.map +1 -0
- package/dist/src/assets/img/icons/arrow-left.d.ts +2 -0
- package/dist/src/assets/img/icons/arrow-left.js +10 -0
- package/dist/src/assets/img/icons/arrow-left.js.map +1 -0
- package/dist/src/assets/img/icons/arrow-right.d.ts +2 -0
- package/dist/src/assets/img/icons/arrow-right.js +10 -0
- package/dist/src/assets/img/icons/arrow-right.js.map +1 -0
- package/dist/src/assets/img/icons/chevron.d.ts +2 -0
- package/dist/src/assets/img/icons/chevron.js +4 -0
- package/dist/src/assets/img/icons/chevron.js.map +1 -0
- package/dist/src/assets/img/icons/close-circle-dark.d.ts +2 -0
- package/dist/src/assets/img/icons/close-circle-dark.js +5 -0
- package/dist/src/assets/img/icons/close-circle-dark.js.map +1 -0
- package/dist/src/assets/img/icons/contract.d.ts +2 -0
- package/dist/src/assets/img/icons/contract.js +9 -0
- package/dist/src/assets/img/icons/contract.js.map +1 -0
- package/dist/src/assets/img/icons/empty-query.d.ts +2 -0
- package/dist/src/assets/img/icons/empty-query.js +5 -0
- package/dist/src/assets/img/icons/empty-query.js.map +1 -0
- package/dist/src/assets/img/icons/expand.d.ts +2 -0
- package/dist/src/assets/img/icons/expand.js +9 -0
- package/dist/src/assets/img/icons/expand.js.map +1 -0
- package/dist/src/assets/img/icons/eye-closed.d.ts +2 -0
- package/dist/src/assets/img/icons/eye-closed.js +5 -0
- package/dist/src/assets/img/icons/eye-closed.js.map +1 -0
- package/dist/src/assets/img/icons/eye.d.ts +2 -0
- package/dist/src/assets/img/icons/eye.js +5 -0
- package/dist/src/assets/img/icons/eye.js.map +1 -0
- package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -0
- package/dist/src/assets/img/icons/favorite-filled.js +10 -0
- package/dist/src/assets/img/icons/favorite-filled.js.map +1 -0
- package/dist/src/assets/img/icons/favorite-unfilled.d.ts +1 -0
- package/dist/src/assets/img/icons/favorite-unfilled.js +9 -0
- package/dist/src/assets/img/icons/favorite-unfilled.js.map +1 -0
- package/dist/src/assets/img/icons/filter.d.ts +2 -0
- package/dist/src/assets/img/icons/filter.js +10 -0
- package/dist/src/assets/img/icons/filter.js.map +1 -0
- package/dist/src/assets/img/icons/login-required.d.ts +1 -0
- package/dist/src/assets/img/icons/login-required.js +18 -0
- package/dist/src/assets/img/icons/login-required.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/account.js +14 -0
- package/dist/src/assets/img/icons/mediatype/account.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/audio.js +14 -0
- package/dist/src/assets/img/icons/mediatype/audio.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/collection.js +12 -0
- package/dist/src/assets/img/icons/mediatype/collection.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/data.js +15 -0
- package/dist/src/assets/img/icons/mediatype/data.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/etree.js +14 -0
- package/dist/src/assets/img/icons/mediatype/etree.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/film.js +14 -0
- package/dist/src/assets/img/icons/mediatype/film.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/images.js +13 -0
- package/dist/src/assets/img/icons/mediatype/images.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/radio.js +15 -0
- package/dist/src/assets/img/icons/mediatype/radio.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/search.js +14 -0
- package/dist/src/assets/img/icons/mediatype/search.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/software.js +13 -0
- package/dist/src/assets/img/icons/mediatype/software.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/texts.js +13 -0
- package/dist/src/assets/img/icons/mediatype/texts.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/tv-commercial.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/tv-commercial.js +12 -0
- package/dist/src/assets/img/icons/mediatype/tv-commercial.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/tv-fact-check.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/tv-fact-check.js +12 -0
- package/dist/src/assets/img/icons/mediatype/tv-fact-check.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/tv-quote.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/tv-quote.js +12 -0
- package/dist/src/assets/img/icons/mediatype/tv-quote.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/tv.js +14 -0
- package/dist/src/assets/img/icons/mediatype/tv.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/video.js +14 -0
- package/dist/src/assets/img/icons/mediatype/video.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/web.js +13 -0
- package/dist/src/assets/img/icons/mediatype/web.js.map +1 -0
- package/dist/src/assets/img/icons/null-result.d.ts +2 -0
- package/dist/src/assets/img/icons/null-result.js +5 -0
- package/dist/src/assets/img/icons/null-result.js.map +1 -0
- package/dist/src/assets/img/icons/quote.d.ts +1 -0
- package/dist/src/assets/img/icons/quote.js +7 -0
- package/dist/src/assets/img/icons/quote.js.map +1 -0
- package/dist/src/assets/img/icons/restricted.d.ts +1 -0
- package/dist/src/assets/img/icons/restricted.js +13 -0
- package/dist/src/assets/img/icons/restricted.js.map +1 -0
- package/dist/src/assets/img/icons/reviews.d.ts +1 -0
- package/dist/src/assets/img/icons/reviews.js +11 -0
- package/dist/src/assets/img/icons/reviews.js.map +1 -0
- package/dist/src/assets/img/icons/upload.d.ts +1 -0
- package/dist/src/assets/img/icons/upload.js +12 -0
- package/dist/src/assets/img/icons/upload.js.map +1 -0
- package/dist/src/assets/img/icons/views.d.ts +1 -0
- package/dist/src/assets/img/icons/views.js +11 -0
- package/dist/src/assets/img/icons/views.js.map +1 -0
- package/dist/src/circular-activity-indicator.d.ts +5 -0
- package/dist/src/circular-activity-indicator.js +66 -0
- package/dist/src/circular-activity-indicator.js.map +1 -0
- package/dist/src/collection-browser.d.ts +692 -0
- package/dist/src/collection-browser.js +2669 -0
- package/dist/src/collection-browser.js.map +1 -0
- package/dist/src/collection-facets/facet-row.d.ts +30 -0
- package/dist/src/collection-facets/facet-row.js +266 -0
- package/dist/src/collection-facets/facet-row.js.map +1 -0
- package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -0
- package/dist/src/collection-facets/facet-tombstone-row.js +43 -0
- package/dist/src/collection-facets/facet-tombstone-row.js.map +1 -0
- package/dist/src/collection-facets/facets-template.d.ts +13 -0
- package/dist/src/collection-facets/facets-template.js +68 -0
- package/dist/src/collection-facets/facets-template.js.map +1 -0
- package/dist/src/collection-facets/models.d.ts +9 -0
- package/dist/src/collection-facets/models.js +10 -0
- package/dist/src/collection-facets/models.js.map +1 -0
- package/dist/src/collection-facets/more-facets-content.d.ts +109 -0
- package/dist/src/collection-facets/more-facets-content.js +547 -0
- package/dist/src/collection-facets/more-facets-content.js.map +1 -0
- package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -0
- package/dist/src/collection-facets/more-facets-pagination.js +264 -0
- package/dist/src/collection-facets/more-facets-pagination.js.map +1 -0
- package/dist/src/collection-facets/smart-facets/dedupe.d.ts +10 -0
- package/dist/src/collection-facets/smart-facets/dedupe.js +35 -0
- package/dist/src/collection-facets/smart-facets/dedupe.js.map +1 -0
- package/dist/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.d.ts +5 -0
- package/dist/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.js +24 -0
- package/dist/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.js.map +1 -0
- package/dist/src/collection-facets/smart-facets/heuristics/index.d.ts +3 -0
- package/dist/src/collection-facets/smart-facets/heuristics/index.js +4 -0
- package/dist/src/collection-facets/smart-facets/heuristics/index.js.map +1 -0
- package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.d.ts +4 -0
- package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.js +14 -0
- package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.js.map +1 -0
- package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.d.ts +6 -0
- package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.js +68 -0
- package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.js.map +1 -0
- package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.d.ts +9 -0
- package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.js +69 -0
- package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.js.map +1 -0
- package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.d.ts +21 -0
- package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js +76 -0
- package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js.map +1 -0
- package/dist/src/collection-facets/smart-facets/models.d.ts +30 -0
- package/dist/src/collection-facets/smart-facets/models.js +2 -0
- package/dist/src/collection-facets/smart-facets/models.js.map +1 -0
- package/dist/src/collection-facets/smart-facets/smart-facet-bar.d.ts +54 -0
- package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +383 -0
- package/dist/src/collection-facets/smart-facets/smart-facet-bar.js.map +1 -0
- package/dist/src/collection-facets/smart-facets/smart-facet-button.d.ts +11 -0
- package/dist/src/collection-facets/smart-facets/smart-facet-button.js +133 -0
- package/dist/src/collection-facets/smart-facets/smart-facet-button.js.map +1 -0
- package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.d.ts +28 -0
- package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js +172 -0
- package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js.map +1 -0
- package/dist/src/collection-facets/smart-facets/smart-facet-equals.d.ts +2 -0
- package/dist/src/collection-facets/smart-facets/smart-facet-equals.js +13 -0
- package/dist/src/collection-facets/smart-facets/smart-facet-equals.js.map +1 -0
- package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.d.ts +5 -0
- package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js +18 -0
- package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js.map +1 -0
- package/dist/src/collection-facets/toggle-switch.d.ts +41 -0
- package/dist/src/collection-facets/toggle-switch.js +174 -0
- package/dist/src/collection-facets/toggle-switch.js.map +1 -0
- package/dist/src/collection-facets.d.ts +113 -0
- package/dist/src/collection-facets.js +884 -0
- package/dist/src/collection-facets.js.map +1 -0
- package/dist/src/data-source/collection-browser-data-source-interface.d.ts +270 -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 +418 -0
- package/dist/src/data-source/collection-browser-data-source.js +1121 -0
- package/dist/src/data-source/collection-browser-data-source.js.map +1 -0
- package/dist/src/data-source/collection-browser-query-state.d.ts +48 -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 +43 -0
- package/dist/src/data-source/models.js +9 -0
- package/dist/src/data-source/models.js.map +1 -0
- package/dist/src/empty-placeholder.d.ts +23 -0
- package/dist/src/empty-placeholder.js +165 -0
- package/dist/src/empty-placeholder.js.map +1 -0
- package/dist/src/expanded-date-picker.d.ts +50 -0
- package/dist/src/expanded-date-picker.js +182 -0
- package/dist/src/expanded-date-picker.js.map +1 -0
- package/dist/src/language-code-handler/language-code-handler.d.ts +37 -0
- package/dist/src/language-code-handler/language-code-handler.js +27 -0
- package/dist/src/language-code-handler/language-code-handler.js.map +1 -0
- package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -0
- package/dist/src/language-code-handler/language-code-mapping.js +563 -0
- package/dist/src/language-code-handler/language-code-mapping.js.map +1 -0
- package/dist/src/manage/manage-bar.d.ts +58 -0
- package/dist/src/manage/manage-bar.js +237 -0
- package/dist/src/manage/manage-bar.js.map +1 -0
- package/dist/src/manage/remove-items-modal-content.d.ts +9 -0
- package/dist/src/manage/remove-items-modal-content.js +104 -0
- package/dist/src/manage/remove-items-modal-content.js.map +1 -0
- package/dist/src/mediatype/mediatype-config.d.ts +11 -0
- package/dist/src/mediatype/mediatype-config.js +116 -0
- package/dist/src/mediatype/mediatype-config.js.map +1 -0
- package/dist/src/models.d.ts +298 -0
- package/dist/src/models.js +507 -0
- package/dist/src/models.js.map +1 -0
- package/dist/src/restoration-state-handler.d.ts +74 -0
- package/dist/src/restoration-state-handler.js +397 -0
- package/dist/src/restoration-state-handler.js.map +1 -0
- package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -0
- package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +60 -0
- package/dist/src/sort-filter-bar/alpha-bar-tooltip.js.map +1 -0
- package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -0
- package/dist/src/sort-filter-bar/alpha-bar.js +241 -0
- package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -0
- package/dist/src/sort-filter-bar/img/compact.d.ts +1 -0
- package/dist/src/sort-filter-bar/img/compact.js +5 -0
- package/dist/src/sort-filter-bar/img/compact.js.map +1 -0
- package/dist/src/sort-filter-bar/img/list.d.ts +1 -0
- package/dist/src/sort-filter-bar/img/list.js +5 -0
- package/dist/src/sort-filter-bar/img/list.js.map +1 -0
- package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -0
- package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +15 -0
- package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js.map +1 -0
- package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -0
- package/dist/src/sort-filter-bar/img/sort-toggle-down.js +17 -0
- package/dist/src/sort-filter-bar/img/sort-toggle-down.js.map +1 -0
- package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -0
- package/dist/src/sort-filter-bar/img/sort-toggle-up.js +17 -0
- package/dist/src/sort-filter-bar/img/sort-toggle-up.js.map +1 -0
- package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -0
- package/dist/src/sort-filter-bar/img/sort-triangle.js +5 -0
- package/dist/src/sort-filter-bar/img/sort-triangle.js.map +1 -0
- package/dist/src/sort-filter-bar/img/tile.d.ts +1 -0
- package/dist/src/sort-filter-bar/img/tile.js +5 -0
- package/dist/src/sort-filter-bar/img/tile.js.map +1 -0
- package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +278 -0
- package/dist/src/sort-filter-bar/sort-filter-bar.js +1161 -0
- package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -0
- package/dist/src/styles/ia-button.d.ts +2 -0
- package/dist/src/styles/ia-button.js +134 -0
- package/dist/src/styles/ia-button.js.map +1 -0
- package/dist/src/styles/item-image-styles.d.ts +8 -0
- package/dist/src/styles/item-image-styles.js +123 -0
- package/dist/src/styles/item-image-styles.js.map +1 -0
- package/dist/src/styles/sr-only.d.ts +1 -0
- package/dist/src/styles/sr-only.js +18 -0
- package/dist/src/styles/sr-only.js.map +1 -0
- package/dist/src/tiles/base-tile-component.d.ts +27 -0
- package/dist/src/tiles/base-tile-component.js +82 -0
- package/dist/src/tiles/base-tile-component.js.map +1 -0
- package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -0
- package/dist/src/tiles/collection-browser-loading-tile.js +29 -0
- package/dist/src/tiles/collection-browser-loading-tile.js.map +1 -0
- package/dist/src/tiles/grid/account-tile.d.ts +18 -0
- package/dist/src/tiles/grid/account-tile.js +111 -0
- package/dist/src/tiles/grid/account-tile.js.map +1 -0
- package/dist/src/tiles/grid/collection-tile.d.ts +15 -0
- package/dist/src/tiles/grid/collection-tile.js +160 -0
- package/dist/src/tiles/grid/collection-tile.js.map +1 -0
- package/dist/src/tiles/grid/item-tile.d.ts +41 -0
- package/dist/src/tiles/grid/item-tile.js +321 -0
- package/dist/src/tiles/grid/item-tile.js.map +1 -0
- package/dist/src/tiles/grid/search-tile.d.ts +10 -0
- package/dist/src/tiles/grid/search-tile.js +95 -0
- package/dist/src/tiles/grid/search-tile.js.map +1 -0
- package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -0
- package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +128 -0
- package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js.map +1 -0
- package/dist/src/tiles/grid/tile-stats.d.ts +58 -0
- package/dist/src/tiles/grid/tile-stats.js +204 -0
- package/dist/src/tiles/grid/tile-stats.js.map +1 -0
- package/dist/src/tiles/hover/hover-pane-controller.d.ts +228 -0
- package/dist/src/tiles/hover/hover-pane-controller.js +446 -0
- package/dist/src/tiles/hover/hover-pane-controller.js.map +1 -0
- package/dist/src/tiles/hover/tile-hover-pane.d.ts +20 -0
- package/dist/src/tiles/hover/tile-hover-pane.js +185 -0
- package/dist/src/tiles/hover/tile-hover-pane.js.map +1 -0
- package/dist/src/tiles/image-block.d.ts +19 -0
- package/dist/src/tiles/image-block.js +175 -0
- package/dist/src/tiles/image-block.js.map +1 -0
- package/dist/src/tiles/item-image.d.ts +40 -0
- package/dist/src/tiles/item-image.js +191 -0
- package/dist/src/tiles/item-image.js.map +1 -0
- package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -0
- package/dist/src/tiles/list/tile-list-compact-header.js +85 -0
- package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -0
- package/dist/src/tiles/list/tile-list-compact.d.ts +19 -0
- package/dist/src/tiles/list/tile-list-compact.js +223 -0
- package/dist/src/tiles/list/tile-list-compact.js.map +1 -0
- package/dist/src/tiles/list/tile-list.d.ts +54 -0
- package/dist/src/tiles/list/tile-list.js +621 -0
- package/dist/src/tiles/list/tile-list.js.map +1 -0
- package/dist/src/tiles/models.d.ts +1 -0
- package/dist/src/tiles/models.js +2 -0
- package/dist/src/tiles/models.js.map +1 -0
- package/dist/src/tiles/overlay/icon-overlay.d.ts +8 -0
- package/dist/src/tiles/overlay/icon-overlay.js +55 -0
- package/dist/src/tiles/overlay/icon-overlay.js.map +1 -0
- package/dist/src/tiles/overlay/text-overlay.d.ts +9 -0
- package/dist/src/tiles/overlay/text-overlay.js +74 -0
- package/dist/src/tiles/overlay/text-overlay.js.map +1 -0
- package/dist/src/tiles/review-block.d.ts +12 -0
- package/dist/src/tiles/review-block.js +134 -0
- package/dist/src/tiles/review-block.js.map +1 -0
- package/dist/src/tiles/text-snippet-block.d.ts +27 -0
- package/dist/src/tiles/text-snippet-block.js +132 -0
- package/dist/src/tiles/text-snippet-block.js.map +1 -0
- package/dist/src/tiles/tile-dispatcher.d.ts +71 -0
- package/dist/src/tiles/tile-dispatcher.js +472 -0
- package/dist/src/tiles/tile-dispatcher.js.map +1 -0
- package/dist/src/tiles/tile-display-value-provider.d.ts +47 -0
- package/dist/src/tiles/tile-display-value-provider.js +95 -0
- package/dist/src/tiles/tile-display-value-provider.js.map +1 -0
- package/dist/src/tiles/tile-mediatype-icon.d.ts +27 -0
- package/dist/src/tiles/tile-mediatype-icon.js +130 -0
- package/dist/src/tiles/tile-mediatype-icon.js.map +1 -0
- package/dist/src/utils/analytics-events.d.ts +28 -0
- package/dist/src/utils/analytics-events.js +31 -0
- package/dist/src/utils/analytics-events.js.map +1 -0
- package/dist/src/utils/array-equals.d.ts +4 -0
- package/dist/src/utils/array-equals.js +11 -0
- package/dist/src/utils/array-equals.js.map +1 -0
- 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/facet-utils.d.ts +83 -0
- package/dist/src/utils/facet-utils.js +152 -0
- package/dist/src/utils/facet-utils.js.map +1 -0
- package/dist/src/utils/format-count.d.ts +7 -0
- package/dist/src/utils/format-count.js +76 -0
- package/dist/src/utils/format-count.js.map +1 -0
- package/dist/src/utils/format-date.d.ts +16 -0
- package/dist/src/utils/format-date.js +33 -0
- package/dist/src/utils/format-date.js.map +1 -0
- package/dist/src/utils/format-unit-size.d.ts +2 -0
- package/dist/src/utils/format-unit-size.js +34 -0
- package/dist/src/utils/format-unit-size.js.map +1 -0
- package/dist/src/utils/local-date-from-utc.d.ts +9 -0
- package/dist/src/utils/local-date-from-utc.js +16 -0
- package/dist/src/utils/local-date-from-utc.js.map +1 -0
- package/dist/src/utils/log.d.ts +7 -0
- package/dist/src/utils/log.js +14 -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 -0
- package/dist/src/utils/sha1.js +9 -0
- package/dist/src/utils/sha1.js.map +1 -0
- package/dist/test/collection-browser.test.d.ts +1 -0
- package/dist/test/collection-browser.test.js +1721 -0
- package/dist/test/collection-browser.test.js.map +1 -0
- package/dist/test/collection-facets/facet-row.test.d.ts +1 -0
- package/dist/test/collection-facets/facet-row.test.js +274 -0
- package/dist/test/collection-facets/facet-row.test.js.map +1 -0
- package/dist/test/collection-facets/facets-template.test.d.ts +1 -0
- package/dist/test/collection-facets/facets-template.test.js +101 -0
- package/dist/test/collection-facets/facets-template.test.js.map +1 -0
- package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -0
- package/dist/test/collection-facets/more-facets-content.test.js +169 -0
- package/dist/test/collection-facets/more-facets-content.test.js.map +1 -0
- package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -0
- package/dist/test/collection-facets/more-facets-pagination.test.js +132 -0
- package/dist/test/collection-facets/more-facets-pagination.test.js.map +1 -0
- package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -0
- package/dist/test/collection-facets/toggle-switch.test.js +96 -0
- package/dist/test/collection-facets/toggle-switch.test.js.map +1 -0
- package/dist/test/collection-facets.test.d.ts +2 -0
- package/dist/test/collection-facets.test.js +745 -0
- package/dist/test/collection-facets.test.js.map +1 -0
- 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 +102 -0
- package/dist/test/data-source/collection-browser-data-source.test.js.map +1 -0
- package/dist/test/empty-placeholder.test.d.ts +1 -0
- package/dist/test/empty-placeholder.test.js +63 -0
- package/dist/test/empty-placeholder.test.js.map +1 -0
- package/dist/test/expanded-date-picker.test.d.ts +1 -0
- package/dist/test/expanded-date-picker.test.js +130 -0
- package/dist/test/expanded-date-picker.test.js.map +1 -0
- package/dist/test/icon-overlay.test.d.ts +1 -0
- package/dist/test/icon-overlay.test.js +30 -0
- package/dist/test/icon-overlay.test.js.map +1 -0
- package/dist/test/image-block.test.d.ts +1 -0
- package/dist/test/image-block.test.js +218 -0
- package/dist/test/image-block.test.js.map +1 -0
- package/dist/test/item-image.test.d.ts +1 -0
- package/dist/test/item-image.test.js +196 -0
- package/dist/test/item-image.test.js.map +1 -0
- package/dist/test/manage/manage-bar.test.d.ts +2 -0
- package/dist/test/manage/manage-bar.test.js +106 -0
- package/dist/test/manage/manage-bar.test.js.map +1 -0
- package/dist/test/manage/remove-items-modal-content.test.d.ts +1 -0
- package/dist/test/manage/remove-items-modal-content.test.js +65 -0
- package/dist/test/manage/remove-items-modal-content.test.js.map +1 -0
- package/dist/test/mediatype-config.test.d.ts +1 -0
- package/dist/test/mediatype-config.test.js +11 -0
- package/dist/test/mediatype-config.test.js.map +1 -0
- package/dist/test/mocks/mock-analytics-handler.d.ts +10 -0
- package/dist/test/mocks/mock-analytics-handler.js +16 -0
- package/dist/test/mocks/mock-analytics-handler.js.map +1 -0
- package/dist/test/mocks/mock-search-responses.d.ts +31 -0
- package/dist/test/mocks/mock-search-responses.js +1241 -0
- package/dist/test/mocks/mock-search-responses.js.map +1 -0
- package/dist/test/mocks/mock-search-service.d.ts +16 -0
- package/dist/test/mocks/mock-search-service.js +65 -0
- package/dist/test/mocks/mock-search-service.js.map +1 -0
- package/dist/test/restoration-state-handler.test.d.ts +1 -0
- package/dist/test/restoration-state-handler.test.js +343 -0
- package/dist/test/restoration-state-handler.test.js.map +1 -0
- package/dist/test/review-block.test.d.ts +1 -0
- package/dist/test/review-block.test.js +48 -0
- package/dist/test/review-block.test.js.map +1 -0
- package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -0
- package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +13 -0
- package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js.map +1 -0
- package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -0
- package/dist/test/sort-filter-bar/alpha-bar.test.js +74 -0
- package/dist/test/sort-filter-bar/alpha-bar.test.js.map +1 -0
- package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -0
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js +609 -0
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -0
- package/dist/test/text-overlay.test.d.ts +1 -0
- package/dist/test/text-overlay.test.js +42 -0
- package/dist/test/text-overlay.test.js.map +1 -0
- package/dist/test/text-snippet-block.test.d.ts +1 -0
- package/dist/test/text-snippet-block.test.js +63 -0
- package/dist/test/text-snippet-block.test.js.map +1 -0
- package/dist/test/tile-stats.test.d.ts +1 -0
- package/dist/test/tile-stats.test.js +128 -0
- package/dist/test/tile-stats.test.js.map +1 -0
- package/dist/test/tiles/grid/account-tile.test.d.ts +1 -0
- package/dist/test/tiles/grid/account-tile.test.js +96 -0
- package/dist/test/tiles/grid/account-tile.test.js.map +1 -0
- package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -0
- package/dist/test/tiles/grid/collection-tile.test.js +96 -0
- package/dist/test/tiles/grid/collection-tile.test.js.map +1 -0
- package/dist/test/tiles/grid/item-tile.test.d.ts +1 -0
- package/dist/test/tiles/grid/item-tile.test.js +427 -0
- package/dist/test/tiles/grid/item-tile.test.js.map +1 -0
- package/dist/test/tiles/grid/search-tile.test.d.ts +1 -0
- package/dist/test/tiles/grid/search-tile.test.js +66 -0
- package/dist/test/tiles/grid/search-tile.test.js.map +1 -0
- package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -0
- package/dist/test/tiles/hover/hover-pane-controller.test.js +329 -0
- package/dist/test/tiles/hover/hover-pane-controller.test.js.map +1 -0
- package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -0
- package/dist/test/tiles/hover/tile-hover-pane.test.js +57 -0
- package/dist/test/tiles/hover/tile-hover-pane.test.js.map +1 -0
- package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -0
- package/dist/test/tiles/list/tile-list-compact.test.js +251 -0
- package/dist/test/tiles/list/tile-list-compact.test.js.map +1 -0
- package/dist/test/tiles/list/tile-list.test.d.ts +1 -0
- package/dist/test/tiles/list/tile-list.test.js +469 -0
- package/dist/test/tiles/list/tile-list.test.js.map +1 -0
- package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -0
- package/dist/test/tiles/tile-dispatcher.test.js +231 -0
- package/dist/test/tiles/tile-dispatcher.test.js.map +1 -0
- package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -0
- package/dist/test/tiles/tile-display-value-provider.test.js +142 -0
- package/dist/test/tiles/tile-display-value-provider.test.js.map +1 -0
- package/dist/test/tiles/tile-mediatype-icon.test.d.ts +1 -0
- package/dist/test/tiles/tile-mediatype-icon.test.js +145 -0
- package/dist/test/tiles/tile-mediatype-icon.test.js.map +1 -0
- package/dist/test/utils/array-equals.test.d.ts +1 -0
- package/dist/test/utils/array-equals.test.js +27 -0
- package/dist/test/utils/array-equals.test.js.map +1 -0
- package/dist/test/utils/format-count.test.d.ts +1 -0
- package/dist/test/utils/format-count.test.js +24 -0
- package/dist/test/utils/format-count.test.js.map +1 -0
- package/dist/test/utils/format-date.test.d.ts +1 -0
- package/dist/test/utils/format-date.test.js +61 -0
- package/dist/test/utils/format-date.test.js.map +1 -0
- package/dist/test/utils/format-unit-size.test.d.ts +1 -0
- package/dist/test/utils/format-unit-size.test.js +18 -0
- package/dist/test/utils/format-unit-size.test.js.map +1 -0
- package/dist/test/utils/local-date-from-utc.test.d.ts +1 -0
- package/dist/test/utils/local-date-from-utc.test.js +27 -0
- package/dist/test/utils/local-date-from-utc.test.js.map +1 -0
- package/eslint.config.mjs +53 -53
- package/index.html +24 -24
- package/local.archive.org.cert +86 -86
- package/local.archive.org.key +27 -27
- package/package.json +118 -117
- package/renovate.json +6 -6
- package/src/collection-browser.ts +2954 -2829
- package/src/collection-facets/facet-row.ts +299 -296
- package/src/collection-facets/models.ts +10 -10
- package/src/collection-facets/more-facets-content.ts +639 -639
- package/src/collection-facets.ts +1005 -995
- package/src/data-source/collection-browser-data-source-interface.ts +345 -333
- package/src/data-source/collection-browser-data-source.ts +1441 -1401
- package/src/data-source/collection-browser-query-state.ts +59 -65
- package/src/data-source/models.ts +56 -43
- package/src/manage/manage-bar.ts +247 -247
- package/src/models.ts +866 -870
- package/src/restoration-state-handler.ts +542 -544
- package/src/tiles/base-tile-component.ts +65 -65
- package/src/tiles/grid/account-tile.ts +113 -113
- package/src/tiles/grid/collection-tile.ts +163 -163
- package/src/tiles/grid/item-tile.ts +340 -340
- package/src/tiles/grid/search-tile.ts +90 -90
- package/src/tiles/grid/styles/tile-grid-shared-styles.ts +130 -130
- package/src/tiles/hover/hover-pane-controller.ts +613 -517
- package/src/tiles/hover/tile-hover-pane.ts +184 -180
- package/src/tiles/list/tile-list-compact.ts +239 -239
- package/src/tiles/list/tile-list.ts +700 -700
- package/src/tiles/tile-dispatcher.ts +517 -490
- package/src/utils/format-date.ts +62 -62
- package/test/collection-browser.test.ts +2413 -2403
- package/test/collection-facets/facet-row.test.ts +375 -375
- package/test/collection-facets.test.ts +928 -928
- package/test/restoration-state-handler.test.ts +480 -510
- package/test/tiles/grid/item-tile.test.ts +520 -520
- package/test/tiles/hover/hover-pane-controller.test.ts +418 -353
- package/test/tiles/list/tile-list-compact.test.ts +282 -282
- package/test/tiles/list/tile-list.test.ts +552 -552
- package/test/tiles/tile-dispatcher.test.ts +283 -187
- package/test/utils/format-date.test.ts +89 -89
- package/tsconfig.json +20 -20
- package/web-dev-server.config.mjs +30 -30
- package/web-test-runner.config.mjs +41 -41
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection-facets.test.js","sourceRoot":"","sources":["../../test/collection-facets.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\r\nimport sinon from 'sinon';\r\nimport { html } from 'lit';\r\nimport { Aggregation } from '@internetarchive/search-service';\r\nimport {\r\n ModalManager,\r\n ModalManagerInterface,\r\n} from '@internetarchive/modal-manager';\r\nimport type { CollectionFacets } from '../src/collection-facets';\r\nimport '@internetarchive/modal-manager';\r\nimport '../src/collection-facets';\r\nimport {\r\n FacetOption,\r\n // SelectedFacets, Used in lending tests (disabled)\r\n getDefaultSelectedFacets,\r\n} from '../src/models';\r\nimport { MockAnalyticsHandler } from './mocks/mock-analytics-handler';\r\nimport type { FacetRow } from '../src/collection-facets/facet-row';\r\n// import type { FacetsTemplate } from '../src/collection-facets/facets-template'; Used in lending tests (disabled)\r\n\r\ndescribe('Collection Facets', () => {\r\n it('has loader', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets ?facetsLoading=${true}></collection-facets>`,\r\n );\r\n\r\n expect(\r\n el.shadowRoot?.querySelector('#container')?.classList.contains('loading'),\r\n ).to.be.true;\r\n\r\n el.facetsLoading = false;\r\n await el.updateComplete;\r\n\r\n expect(\r\n el.shadowRoot?.querySelector('#container')?.classList.contains('loading'),\r\n ).to.be.false;\r\n });\r\n\r\n it('renders a date picker loading placeholder when date picker enabled', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n el.histogramAggregationLoading = true;\r\n el.showHistogramDatePicker = true;\r\n el.histogramAggregation = new Aggregation({\r\n buckets: [1, 2, 3],\r\n first_bucket_key: 0,\r\n last_bucket_key: 2,\r\n });\r\n await el.updateComplete;\r\n\r\n const histogramLoader = el.shadowRoot?.querySelector(\r\n '.histogram-loading-indicator',\r\n );\r\n expect(histogramLoader).to.exist;\r\n });\r\n\r\n it('does not render a date picker loading placeholder when date picker disabled', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n el.histogramAggregationLoading = true;\r\n el.showHistogramDatePicker = false;\r\n el.histogramAggregation = new Aggregation({\r\n buckets: [1, 2, 3],\r\n first_bucket_key: 0,\r\n last_bucket_key: 2,\r\n });\r\n await el.updateComplete;\r\n\r\n const histogramLoader = el.shadowRoot?.querySelector(\r\n '.histogram-loading-indicator',\r\n );\r\n expect(histogramLoader).to.be.null;\r\n });\r\n\r\n it('renders the date picker when enabled with data present', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n el.histogramAggregationLoading = false;\r\n el.showHistogramDatePicker = true;\r\n el.histogramAggregation = new Aggregation({\r\n buckets: [1, 2, 3],\r\n first_bucket_key: 0,\r\n last_bucket_key: 2,\r\n });\r\n await el.updateComplete;\r\n\r\n const histogram = el.shadowRoot?.querySelector('histogram-date-range');\r\n expect(histogram).to.exist;\r\n });\r\n\r\n it('does not render the date picker when disabled', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n el.histogramAggregationLoading = false;\r\n el.showHistogramDatePicker = false;\r\n el.histogramAggregation = new Aggregation({\r\n buckets: [1, 2, 3],\r\n first_bucket_key: 0,\r\n last_bucket_key: 2,\r\n });\r\n await el.updateComplete;\r\n\r\n const histogram = el.shadowRoot?.querySelector('histogram-date-range');\r\n expect(histogram).to.be.null;\r\n });\r\n\r\n it('renders button to expand the date picker when allowed', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n el.histogramAggregationLoading = false;\r\n el.showHistogramDatePicker = true;\r\n el.allowExpandingDatePicker = true;\r\n el.histogramAggregation = new Aggregation({\r\n buckets: [1, 2, 3],\r\n first_bucket_key: 0,\r\n last_bucket_key: 2,\r\n });\r\n await el.updateComplete;\r\n\r\n const expandBtn = el.shadowRoot?.querySelector('.expand-date-picker-btn');\r\n expect(expandBtn).to.exist;\r\n });\r\n\r\n it('does not render button to expand the date picker when disallowed', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n el.histogramAggregationLoading = false;\r\n el.showHistogramDatePicker = true;\r\n el.allowExpandingDatePicker = false;\r\n el.histogramAggregation = new Aggregation({\r\n buckets: [1, 2, 3],\r\n first_bucket_key: 0,\r\n last_bucket_key: 2,\r\n });\r\n await el.updateComplete;\r\n\r\n const expandBtn = el.shadowRoot?.querySelector('.expand-date-picker-btn');\r\n expect(expandBtn).to.be.null;\r\n });\r\n\r\n it('opens modal when date picker expand button clicked', async () => {\r\n const modalManager = await fixture<ModalManager>(\r\n html`<modal-manager></modal-manager>`,\r\n );\r\n\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets\r\n .modalManager=${modalManager}\r\n ></collection-facets>`,\r\n );\r\n\r\n el.histogramAggregationLoading = false;\r\n el.showHistogramDatePicker = true;\r\n el.allowExpandingDatePicker = true;\r\n el.histogramAggregation = new Aggregation({\r\n buckets: [1, 2, 3],\r\n first_bucket_key: 0,\r\n last_bucket_key: 2,\r\n });\r\n await el.updateComplete;\r\n\r\n const expandBtn = el.shadowRoot?.querySelector(\r\n '.expand-date-picker-btn',\r\n ) as HTMLButtonElement;\r\n expect(expandBtn).to.exist;\r\n\r\n const showModalSpy = sinon.spy(\r\n el.modalManager as ModalManagerInterface,\r\n 'showModal',\r\n );\r\n\r\n // Click the expand button to open the modal\r\n expandBtn?.click();\r\n await el.updateComplete;\r\n\r\n expect(showModalSpy.callCount).to.equal(1);\r\n expect(el.modalManager?.classList.contains('expanded-date-picker')).to.be\r\n .true;\r\n });\r\n\r\n it('renders aggregations as facets', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n subject: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'foo',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n const facetGroups = el.shadowRoot?.querySelectorAll('.facet-group');\r\n expect(facetGroups?.length).to.equal(1);\r\n\r\n const titleFacetGroup = facetGroups?.[0];\r\n const facetGroupHeader = titleFacetGroup?.querySelector('h3');\r\n // Every facet group header has an invisible \" filters\" suffix for screen-readers\r\n expect(\r\n facetGroupHeader?.querySelector('span.sr-only')?.textContent?.trim(),\r\n ).to.equal('filters');\r\n // Ignoring the screen-reader suffix, we should be left with only the readable, capitalized title\r\n expect(\r\n facetGroupHeader?.textContent?.trim().replace(/\\s*filters$/, ''),\r\n ).to.equal('Subject');\r\n\r\n const titleFacetRow = titleFacetGroup\r\n ?.querySelector('facets-template')\r\n ?.shadowRoot?.querySelector('facet-row') as FacetRow;\r\n await titleFacetRow.updateComplete;\r\n });\r\n\r\n it('renders multiple aggregation types', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n subject: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'foo',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n mediatype: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'bar',\r\n doc_count: 10,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const facetGroups = el.shadowRoot?.querySelectorAll('.facet-group');\r\n expect(facetGroups?.length).to.equal(2);\r\n });\r\n\r\n it('does not render suppressed collection facets', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n collection: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'deemphasize',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'community',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'foo',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const collectionFacets = el.shadowRoot\r\n ?.querySelector('facets-template')\r\n ?.shadowRoot?.querySelectorAll('facet-row') as ArrayLike<FacetRow>;\r\n expect(collectionFacets?.length).to.equal(1);\r\n\r\n // The first (and only) collection link should be for 'foo'\r\n expect(collectionFacets[0].bucket?.key).to.equal('foo');\r\n });\r\n\r\n // Lending tests disabled because lending facet disabled\r\n // it('renders lending facets with human-readable names', async () => {\r\n // const el = await fixture<CollectionFacets>(\r\n // html`<collection-facets></collection-facets>`\r\n // );\r\n\r\n // const aggs: Record<string, Aggregation> = {\r\n // lending: new Aggregation({\r\n // buckets: [\r\n // {\r\n // key: 'is_lendable',\r\n // doc_count: 3,\r\n // },\r\n // {\r\n // key: 'available_to_borrow',\r\n // doc_count: 2,\r\n // },\r\n // {\r\n // key: 'is_readable',\r\n // doc_count: 1,\r\n // },\r\n // ],\r\n // }),\r\n // };\r\n\r\n // el.aggregations = aggs;\r\n // await el.updateComplete;\r\n\r\n // const facetsTemplate = el.shadowRoot?.querySelector(\r\n // 'facets-template'\r\n // ) as FacetsTemplate;\r\n // await facetsTemplate?.updateComplete;\r\n\r\n // const lendingFacets = facetsTemplate?.shadowRoot?.querySelectorAll(\r\n // 'facet-row'\r\n // ) as ArrayLike<FacetRow>;\r\n // expect(lendingFacets?.length).to.equal(3);\r\n\r\n // expect(lendingFacets[0].shadowRoot?.textContent?.trim()).to.match(\r\n // /^Lending Library\\s*3$/\r\n // );\r\n // expect(lendingFacets[1].shadowRoot?.textContent?.trim()).to.match(\r\n // /^Borrow 14 Days\\s*2$/\r\n // );\r\n // expect(lendingFacets[2].shadowRoot?.textContent?.trim()).to.match(\r\n // /^Always Available\\s*1$/\r\n // );\r\n // });\r\n\r\n // it('renders selected/negative lending facets with human-readable names', async () => {\r\n // const el = await fixture<CollectionFacets>(\r\n // html`<collection-facets></collection-facets>`\r\n // );\r\n\r\n // const selectedFacets: SelectedFacets = {\r\n // subject: {},\r\n // lending: {\r\n // is_lendable: {\r\n // key: 'is_lendable',\r\n // count: 5,\r\n // state: 'selected',\r\n // },\r\n // available_to_borrow: {\r\n // key: 'available_to_borrow',\r\n // count: 4,\r\n // state: 'selected',\r\n // },\r\n // is_readable: {\r\n // key: 'is_readable',\r\n // count: 3,\r\n // state: 'hidden',\r\n // },\r\n // },\r\n // mediatype: {},\r\n // language: {},\r\n // creator: {},\r\n // collection: {},\r\n // year: {},\r\n // };\r\n\r\n // el.selectedFacets = selectedFacets;\r\n // await el.updateComplete;\r\n\r\n // const facetsTemplate = el.shadowRoot?.querySelector(\r\n // 'facets-template'\r\n // ) as FacetsTemplate;\r\n // await facetsTemplate?.updateComplete;\r\n\r\n // const lendingFacets = facetsTemplate?.shadowRoot?.querySelectorAll(\r\n // 'facet-row'\r\n // ) as ArrayLike<FacetRow>;\r\n // expect(lendingFacets?.length).to.equal(3);\r\n\r\n // expect(lendingFacets[0].shadowRoot?.textContent?.trim()).to.match(\r\n // /^Lending Library\\s*5$/\r\n // );\r\n // expect(lendingFacets[1].shadowRoot?.textContent?.trim()).to.match(\r\n // /^Borrow 14 Days\\s*4$/\r\n // );\r\n // expect(lendingFacets[2].shadowRoot?.textContent?.trim()).to.match(\r\n // /^Always Available\\s*3$/\r\n // );\r\n // });\r\n\r\n // it('only renders lending facets for is_lendable, available_to_borrow, and is_readable', async () => {\r\n // const el = await fixture<CollectionFacets>(\r\n // html`<collection-facets></collection-facets>`\r\n // );\r\n\r\n // const aggs: Record<string, Aggregation> = {\r\n // lending: new Aggregation({\r\n // buckets: [\r\n // {\r\n // key: 'is_lendable',\r\n // doc_count: 5,\r\n // },\r\n // {\r\n // key: 'is_borrowable',\r\n // doc_count: 4,\r\n // },\r\n // {\r\n // key: 'available_to_borrow',\r\n // doc_count: 5,\r\n // },\r\n // {\r\n // key: 'is_browsable',\r\n // doc_count: 4,\r\n // },\r\n // {\r\n // key: 'available_to_browse',\r\n // doc_count: 5,\r\n // },\r\n // {\r\n // key: 'is_readable',\r\n // doc_count: 4,\r\n // },\r\n // {\r\n // key: 'available_to_waitlist',\r\n // doc_count: 5,\r\n // },\r\n // ],\r\n // }),\r\n // };\r\n\r\n // el.aggregations = aggs;\r\n // await el.updateComplete;\r\n\r\n // const facetsTemplate = el.shadowRoot?.querySelector(\r\n // 'facets-template'\r\n // ) as FacetsTemplate;\r\n // await facetsTemplate?.updateComplete;\r\n // await new Promise(res => {\r\n // setTimeout(res, 100);\r\n // });\r\n\r\n // const lendingFacets = facetsTemplate?.shadowRoot?.querySelectorAll(\r\n // 'facet-row'\r\n // ) as ArrayLike<FacetRow>;\r\n // expect(lendingFacets?.length).to.equal(3);\r\n\r\n // expect(lendingFacets[0].shadowRoot?.textContent?.trim()).to.match(\r\n // /^Lending Library\\s*5$/\r\n // );\r\n // expect(lendingFacets[1].shadowRoot?.textContent?.trim()).to.match(\r\n // /^Borrow 14 Days\\s*5$/\r\n // );\r\n // expect(lendingFacets[2].shadowRoot?.textContent?.trim()).to.match(\r\n // /^Always Available\\s*4$/\r\n // );\r\n // });\r\n\r\n // it('does not render a More... link for lending facets', async () => {\r\n // const el = await fixture<CollectionFacets>(\r\n // html`<collection-facets></collection-facets>`\r\n // );\r\n\r\n // const aggs: Record<string, Aggregation> = {\r\n // lending: new Aggregation({\r\n // buckets: [\r\n // {\r\n // key: 'is_lendable',\r\n // doc_count: 5,\r\n // },\r\n // {\r\n // key: 'is_borrowable',\r\n // doc_count: 4,\r\n // },\r\n // {\r\n // key: 'available_to_borrow',\r\n // doc_count: 5,\r\n // },\r\n // {\r\n // key: 'is_browsable',\r\n // doc_count: 4,\r\n // },\r\n // {\r\n // key: 'available_to_browse',\r\n // doc_count: 5,\r\n // },\r\n // {\r\n // key: 'is_readable',\r\n // doc_count: 4,\r\n // },\r\n // {\r\n // key: 'available_to_waitlist',\r\n // doc_count: 5,\r\n // },\r\n // ],\r\n // }),\r\n // };\r\n\r\n // el.aggregations = aggs;\r\n // await el.updateComplete;\r\n\r\n // const moreLink = el.shadowRoot?.querySelector('.more-link');\r\n // expect(moreLink).not.to.exist;\r\n // });\r\n\r\n it('always renders the mediatype:collection facet when present', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n mediatype: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'texts',\r\n doc_count: 10000,\r\n },\r\n {\r\n key: 'image',\r\n doc_count: 9000,\r\n },\r\n {\r\n key: 'audio',\r\n doc_count: 8000,\r\n },\r\n {\r\n key: 'movies',\r\n doc_count: 7000,\r\n },\r\n {\r\n key: 'software',\r\n doc_count: 6000,\r\n },\r\n {\r\n key: 'data',\r\n doc_count: 5000,\r\n },\r\n {\r\n key: 'etree',\r\n doc_count: 4000,\r\n },\r\n {\r\n key: 'collection',\r\n doc_count: 1,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const facetsTemplate = el.shadowRoot?.querySelector('facets-template');\r\n const facetRows = facetsTemplate?.shadowRoot?.querySelectorAll(\r\n 'facet-row',\r\n ) as ArrayLike<FacetRow>;\r\n expect(facetRows?.length).to.equal(6);\r\n expect(facetRows?.[5]?.bucket?.key).to.equal('collection');\r\n });\r\n\r\n it('renders the mediatype:collection facet even when >=6 other mediatypes are selected', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n mediatype: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'texts',\r\n doc_count: 10000,\r\n },\r\n {\r\n key: 'image',\r\n doc_count: 9000,\r\n },\r\n {\r\n key: 'audio',\r\n doc_count: 8000,\r\n },\r\n {\r\n key: 'movies',\r\n doc_count: 7000,\r\n },\r\n {\r\n key: 'software',\r\n doc_count: 6000,\r\n },\r\n {\r\n key: 'data',\r\n doc_count: 5000,\r\n },\r\n {\r\n key: 'etree',\r\n doc_count: 4000,\r\n },\r\n {\r\n key: 'collection',\r\n doc_count: 1,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n const selectedFacets = getDefaultSelectedFacets();\r\n selectedFacets.mediatype = {\r\n texts: { key: 'texts', count: 10000, state: 'selected' },\r\n image: { key: 'image', count: 9000, state: 'selected' },\r\n audio: { key: 'audio', count: 8000, state: 'selected' },\r\n movies: { key: 'movies', count: 7000, state: 'selected' },\r\n software: { key: 'software', count: 6000, state: 'selected' },\r\n data: { key: 'data', count: 5000, state: 'selected' },\r\n etree: { key: 'etree', count: 4000, state: 'selected' },\r\n };\r\n\r\n el.aggregations = aggs;\r\n el.selectedFacets = selectedFacets;\r\n await el.updateComplete;\r\n\r\n const facetsTemplate = el.shadowRoot?.querySelector('facets-template');\r\n const facetRows = facetsTemplate?.shadowRoot?.querySelectorAll(\r\n 'facet-row',\r\n ) as ArrayLike<FacetRow>;\r\n expect(facetRows?.length).to.equal(8);\r\n expect(facetRows?.[7]?.bucket?.key).to.equal('collection');\r\n });\r\n\r\n it('uses specified facet display order', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets\r\n .facetDisplayOrder=${['language', 'creator'] as FacetOption[]}\r\n ></collection-facets>`,\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n mediatype: new Aggregation({\r\n buckets: [{ key: 'texts', doc_count: 5 }],\r\n }),\r\n collection: new Aggregation({\r\n buckets: [{ key: 'foo', doc_count: 10 }],\r\n }),\r\n creator: new Aggregation({\r\n buckets: [{ key: 'bar', doc_count: 15 }],\r\n }),\r\n language: new Aggregation({\r\n buckets: [{ key: 'baz', doc_count: 20 }],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const facetHeaders = el.shadowRoot?.querySelectorAll('.facet-group-header');\r\n\r\n // The only two facet groups should be Language and Creator (in that order)\r\n expect(facetHeaders?.length).to.equal(2);\r\n expect(facetHeaders?.[0].textContent).to.contain('Language');\r\n expect(facetHeaders?.[1].textContent).to.contain('Creator');\r\n });\r\n\r\n describe('More Facets', () => {\r\n it('Does not render < allowedFacetCount', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n subject: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'foo',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const moreLink = el.shadowRoot?.querySelector('.more-link');\r\n expect(moreLink).to.be.null;\r\n });\r\n\r\n it('Render More Facets', async () => {\r\n const modalManager = await fixture<ModalManager>(\r\n html`<modal-manager></modal-manager>`,\r\n );\r\n\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets\r\n .modalManager=${modalManager}\r\n ></collection-facets>`,\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n subject: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'foo',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'fi',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'fum',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'flee',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'wheee',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'whooo',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'boop',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n let eventCaught = false;\r\n let eventFacet = '';\r\n el.addEventListener('showMoreFacets', e => {\r\n eventFacet = (e as CustomEvent).detail;\r\n eventCaught = true;\r\n });\r\n\r\n const moreLink = el.shadowRoot?.querySelector(\r\n '.more-link',\r\n ) as HTMLButtonElement;\r\n expect(moreLink).to.exist; // has link\r\n\r\n const showModalSpy = sinon.spy(\r\n el.modalManager as ModalManagerInterface,\r\n 'showModal',\r\n );\r\n // let's pop up modal\r\n moreLink?.click();\r\n await el.updateComplete;\r\n\r\n expect(showModalSpy.callCount).to.equal(1);\r\n expect(el.modalManager?.classList.contains('more-search-facets')).to.be\r\n .true;\r\n expect(eventCaught).to.be.true;\r\n expect(eventFacet).to.equal('subject' as FacetOption);\r\n });\r\n });\r\n\r\n it('fire analytics on more link', async () => {\r\n const mockAnalyticsHandler = new MockAnalyticsHandler();\r\n\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets\r\n .analyticsHandler=${mockAnalyticsHandler}\r\n ></collection-facets>`,\r\n );\r\n const aggs: Record<string, Aggregation> = {\r\n subject: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'foo',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'fi',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'fum',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'flee',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'wheee',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'whooo',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'boop',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const moreLink = el.shadowRoot?.querySelector(\r\n '.more-link',\r\n ) as HTMLButtonElement;\r\n\r\n expect(moreLink).to.exist; // has link\r\n\r\n moreLink?.click();\r\n await el.updateComplete;\r\n\r\n expect(mockAnalyticsHandler.callCategory).to.equal('collection-browser');\r\n expect(mockAnalyticsHandler.callAction).to.equal('showMoreFacetsModal');\r\n expect(mockAnalyticsHandler.callLabel).to.equal('subject');\r\n });\r\n\r\n it('includes Part Of section for collections', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets\r\n .baseNavigationUrl=${''}\r\n .withinCollection=${'foo'}\r\n .parentCollections=${['bar', 'baz']}\r\n .collectionTitles=${new Map([\r\n ['foo', 'foo-name'],\r\n ['bar', 'bar-name'],\r\n ['baz', 'baz-name'],\r\n ])}\r\n ></collection-facets>`,\r\n );\r\n\r\n const partOfSection = el.shadowRoot?.querySelector('.partof-collections');\r\n expect(partOfSection).to.exist;\r\n\r\n const partOfLinks = partOfSection?.querySelectorAll('a[href]');\r\n expect(partOfLinks?.length).to.equal(2);\r\n\r\n expect(partOfLinks?.[0]?.textContent?.trim()).to.equal('bar-name');\r\n expect(partOfLinks?.[0]?.getAttribute('href')).to.equal('/details/bar');\r\n expect(partOfLinks?.[1]?.textContent?.trim()).to.equal('baz-name');\r\n expect(partOfLinks?.[1]?.getAttribute('href')).to.equal('/details/baz');\r\n });\r\n\r\n it('does not include Part Of section without parent collections', async () => {\r\n // No parentCollections prop\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets .withinCollection=${'foo'}></collection-facets>`,\r\n );\r\n\r\n const partOfSection = el.shadowRoot?.querySelector('.partof-collections');\r\n expect(partOfSection).not.to.exist;\r\n });\r\n\r\n it('fires analytics on expanding date picker', async () => {\r\n const mockAnalyticsHandler = new MockAnalyticsHandler();\r\n\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets\r\n .analyticsHandler=${mockAnalyticsHandler}\r\n ></collection-facets>`,\r\n );\r\n\r\n el.histogramAggregationLoading = false;\r\n el.showHistogramDatePicker = true;\r\n el.allowExpandingDatePicker = true;\r\n el.histogramAggregation = new Aggregation({\r\n buckets: [1, 2, 3],\r\n first_bucket_key: 0,\r\n last_bucket_key: 2,\r\n });\r\n await el.updateComplete;\r\n\r\n const expandBtn = el.shadowRoot?.querySelector(\r\n '.expand-date-picker-btn',\r\n ) as HTMLButtonElement;\r\n expect(expandBtn).to.exist;\r\n\r\n // Click the expand button to open the modal\r\n expandBtn?.click();\r\n await el.updateComplete;\r\n\r\n expect(mockAnalyticsHandler.callCategory).to.equal('collection-browser');\r\n expect(mockAnalyticsHandler.callAction).to.equal('histogramExpanded');\r\n expect(mockAnalyticsHandler.callLabel).to.equal(window.location.href);\r\n });\r\n\r\n it('fires analytics on clicking Part Of collection link', async () => {\r\n const mockAnalyticsHandler = new MockAnalyticsHandler();\r\n\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets\r\n .baseNavigationUrl=${''}\r\n .withinCollection=${'foo'}\r\n .parentCollections=${['bar']}\r\n .analyticsHandler=${mockAnalyticsHandler}\r\n ></collection-facets>`,\r\n );\r\n\r\n const partOfLinks = el.shadowRoot?.querySelectorAll(\r\n '.partof-collections a[href]',\r\n );\r\n expect(partOfLinks?.length).to.equal(1);\r\n\r\n // Click the expand button to open the modal\r\n const link = partOfLinks?.[0] as HTMLAnchorElement;\r\n link?.addEventListener('click', e => e.preventDefault());\r\n link?.click();\r\n await el.updateComplete;\r\n\r\n expect(mockAnalyticsHandler.callCategory).to.equal('collection-browser');\r\n expect(mockAnalyticsHandler.callAction).to.equal('partOfCollectionClicked');\r\n expect(mockAnalyticsHandler.callLabel).to.equal('bar');\r\n });\r\n});\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '../../src/collection-browser';
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { expect, fixture } from '@open-wc/testing';
|
|
2
|
+
import { html } from 'lit';
|
|
3
|
+
import sinon from 'sinon';
|
|
4
|
+
import { ItemHit, SearchType } from '@internetarchive/search-service';
|
|
5
|
+
import { CollectionBrowserDataSource } from '../../src/data-source/collection-browser-data-source';
|
|
6
|
+
import { TileModel } from '../../src/models';
|
|
7
|
+
import '../../src/collection-browser';
|
|
8
|
+
import { MockSearchService } from '../mocks/mock-search-service';
|
|
9
|
+
const dataPage = [
|
|
10
|
+
new TileModel(new ItemHit({
|
|
11
|
+
fields: {
|
|
12
|
+
identifier: 'foo',
|
|
13
|
+
},
|
|
14
|
+
})),
|
|
15
|
+
new TileModel(new ItemHit({
|
|
16
|
+
fields: {
|
|
17
|
+
identifier: 'bar',
|
|
18
|
+
},
|
|
19
|
+
})),
|
|
20
|
+
];
|
|
21
|
+
describe('Collection Browser Data Source', () => {
|
|
22
|
+
let host;
|
|
23
|
+
beforeEach(async () => {
|
|
24
|
+
host = await fixture(html `
|
|
25
|
+
<collection-browser></collection-browser>
|
|
26
|
+
`);
|
|
27
|
+
});
|
|
28
|
+
it('can add and retrieve data pages', () => {
|
|
29
|
+
const dataSource = new CollectionBrowserDataSource(host);
|
|
30
|
+
dataSource.addPage(1, dataPage);
|
|
31
|
+
expect(Object.keys(dataSource.getAllPages()).length).to.equal(1);
|
|
32
|
+
expect(dataSource.getPage(1).length).to.equal(2);
|
|
33
|
+
expect(dataSource.getPage(1)[0].identifier).to.equal('foo');
|
|
34
|
+
expect(dataSource.getPage(1)[1].identifier).to.equal('bar');
|
|
35
|
+
});
|
|
36
|
+
it('can add data split across multiple pages', () => {
|
|
37
|
+
const dataSource = new CollectionBrowserDataSource(host, 3);
|
|
38
|
+
const doubledDataPage = [...dataPage, ...dataPage];
|
|
39
|
+
dataSource.addMultiplePages(1, doubledDataPage);
|
|
40
|
+
expect(Object.keys(dataSource.getAllPages()).length).to.equal(2);
|
|
41
|
+
expect(dataSource.getPage(1).length).to.equal(3);
|
|
42
|
+
expect(dataSource.getPage(2).length).to.equal(1);
|
|
43
|
+
expect(dataSource.getPage(1)[0].identifier).to.equal('foo');
|
|
44
|
+
expect(dataSource.getPage(1)[1].identifier).to.equal('bar');
|
|
45
|
+
expect(dataSource.getPage(1)[2].identifier).to.equal('foo');
|
|
46
|
+
expect(dataSource.getPage(2)[0].identifier).to.equal('bar');
|
|
47
|
+
});
|
|
48
|
+
it('resets data when changing page size', () => {
|
|
49
|
+
const dataSource = new CollectionBrowserDataSource(host);
|
|
50
|
+
dataSource.addPage(1, dataPage);
|
|
51
|
+
dataSource.setPageSize(100);
|
|
52
|
+
expect(Object.keys(dataSource.getAllPages()).length).to.equal(0);
|
|
53
|
+
expect(dataSource.getPageSize()).to.equal(100);
|
|
54
|
+
});
|
|
55
|
+
it('can be installed on the host', async () => {
|
|
56
|
+
const dataSource = new CollectionBrowserDataSource(host);
|
|
57
|
+
dataSource.addPage(1, dataPage);
|
|
58
|
+
host.installDataSourceAndQueryState(dataSource, {
|
|
59
|
+
searchType: SearchType.METADATA,
|
|
60
|
+
sortDirection: null,
|
|
61
|
+
selectedTitleFilter: null,
|
|
62
|
+
selectedCreatorFilter: null,
|
|
63
|
+
baseQuery: 'foobar',
|
|
64
|
+
});
|
|
65
|
+
await host.updateComplete;
|
|
66
|
+
expect(host.dataSource).to.equal(dataSource);
|
|
67
|
+
expect(host.baseQuery).to.equal('foobar');
|
|
68
|
+
host.removeController(dataSource);
|
|
69
|
+
});
|
|
70
|
+
it('can suppress further fetches', async () => {
|
|
71
|
+
host.searchService = new MockSearchService();
|
|
72
|
+
const pageFetchSpy = sinon.spy();
|
|
73
|
+
const dataSource = new CollectionBrowserDataSource(host);
|
|
74
|
+
dataSource.fetchPage = pageFetchSpy;
|
|
75
|
+
dataSource.addPage(1, dataPage);
|
|
76
|
+
dataSource.setFetchesSuppressed(true);
|
|
77
|
+
dataSource.handleQueryChange();
|
|
78
|
+
expect(pageFetchSpy.callCount).to.equal(0);
|
|
79
|
+
});
|
|
80
|
+
it('can set its initial page batch size', async () => {
|
|
81
|
+
host.searchService = new MockSearchService();
|
|
82
|
+
const pageFetchSpy = sinon.spy();
|
|
83
|
+
const dataSource = new CollectionBrowserDataSource(host);
|
|
84
|
+
dataSource.setNumInitialPages(10);
|
|
85
|
+
dataSource.fetchPage = pageFetchSpy;
|
|
86
|
+
dataSource.handleQueryChange();
|
|
87
|
+
// Uses specified number of initial pages
|
|
88
|
+
expect(pageFetchSpy.args[0][1]).to.equal(10);
|
|
89
|
+
});
|
|
90
|
+
it('refreshes prefix filter counts', () => {
|
|
91
|
+
const dataSource = new CollectionBrowserDataSource(host);
|
|
92
|
+
dataSource.addPage(1, dataPage);
|
|
93
|
+
dataSource.prefixFilterCountMap = {
|
|
94
|
+
title: {
|
|
95
|
+
X: 10,
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
dataSource.refreshLetterCounts();
|
|
99
|
+
expect(dataSource.prefixFilterCountMap).to.deep.equal({});
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
//# sourceMappingURL=collection-browser-data-source.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection-browser-data-source.test.js","sourceRoot":"","sources":["../../../test/data-source/collection-browser-data-source.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,MAAM,QAAQ,GAAgB;IAC5B,IAAI,SAAS,CACX,IAAI,OAAO,CAAC;QACV,MAAM,EAAE;YACN,UAAU,EAAE,KAAK;SAClB;KACF,CAAC,CACH;IACD,IAAI,SAAS,CACX,IAAI,OAAO,CAAC;QACV,MAAM,EAAE;YACN,UAAU,EAAE,KAAK;SAClB;KACF,CAAC,CACH;CACF,CAAC;AAEF,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,IAAI,IAAuB,CAAC;IAE5B,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,IAAI,GAAG,MAAM,OAAO,CAAoB,IAAI,CAAA;;KAE3C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,UAAU,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC;QACzD,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAEhC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,UAAU,GAAG,IAAI,2BAA2B,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5D,MAAM,eAAe,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC;QACnD,UAAU,CAAC,gBAAgB,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;QAEhD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,UAAU,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC;QACzD,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAEhC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,UAAU,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC;QACzD,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAEhC,IAAI,CAAC,8BAA8B,CAAC,UAAU,EAAE;YAC9C,UAAU,EAAE,UAAU,CAAC,QAAQ;YAC/B,aAAa,EAAE,IAAI;YACnB,mBAAmB,EAAE,IAAI;YACzB,qBAAqB,EAAE,IAAI;YAC3B,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,cAAc,CAAC;QAE1B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE1C,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAE7C,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC;QACzD,UAAU,CAAC,SAAS,GAAG,YAAY,CAAC;QAEpC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAChC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACtC,UAAU,CAAC,iBAAiB,EAAE,CAAC;QAE/B,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,IAAI,CAAC,aAAa,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAE7C,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC;QACzD,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAClC,UAAU,CAAC,SAAS,GAAG,YAAY,CAAC;QAEpC,UAAU,CAAC,iBAAiB,EAAE,CAAC;QAE/B,yCAAyC;QACzC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,UAAU,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC;QACzD,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAEhC,UAAU,CAAC,oBAAoB,GAAG;YAChC,KAAK,EAAE;gBACL,CAAC,EAAE,EAAE;aACN;SACF,CAAC;QAEF,UAAU,CAAC,mBAAmB,EAAE,CAAC;QACjC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport sinon from 'sinon';\nimport { ItemHit, SearchType } from '@internetarchive/search-service';\nimport { CollectionBrowserDataSource } from '../../src/data-source/collection-browser-data-source';\nimport { TileModel } from '../../src/models';\nimport type { CollectionBrowser } from '../../src/collection-browser';\nimport '../../src/collection-browser';\nimport { MockSearchService } from '../mocks/mock-search-service';\n\nconst dataPage: TileModel[] = [\n new TileModel(\n new ItemHit({\n fields: {\n identifier: 'foo',\n },\n }),\n ),\n new TileModel(\n new ItemHit({\n fields: {\n identifier: 'bar',\n },\n }),\n ),\n];\n\ndescribe('Collection Browser Data Source', () => {\n let host: CollectionBrowser;\n\n beforeEach(async () => {\n host = await fixture<CollectionBrowser>(html`\n <collection-browser></collection-browser>\n `);\n });\n\n it('can add and retrieve data pages', () => {\n const dataSource = new CollectionBrowserDataSource(host);\n dataSource.addPage(1, dataPage);\n\n expect(Object.keys(dataSource.getAllPages()).length).to.equal(1);\n expect(dataSource.getPage(1).length).to.equal(2);\n expect(dataSource.getPage(1)[0].identifier).to.equal('foo');\n expect(dataSource.getPage(1)[1].identifier).to.equal('bar');\n });\n\n it('can add data split across multiple pages', () => {\n const dataSource = new CollectionBrowserDataSource(host, 3);\n const doubledDataPage = [...dataPage, ...dataPage];\n dataSource.addMultiplePages(1, doubledDataPage);\n\n expect(Object.keys(dataSource.getAllPages()).length).to.equal(2);\n expect(dataSource.getPage(1).length).to.equal(3);\n expect(dataSource.getPage(2).length).to.equal(1);\n expect(dataSource.getPage(1)[0].identifier).to.equal('foo');\n expect(dataSource.getPage(1)[1].identifier).to.equal('bar');\n expect(dataSource.getPage(1)[2].identifier).to.equal('foo');\n expect(dataSource.getPage(2)[0].identifier).to.equal('bar');\n });\n\n it('resets data when changing page size', () => {\n const dataSource = new CollectionBrowserDataSource(host);\n dataSource.addPage(1, dataPage);\n\n dataSource.setPageSize(100);\n expect(Object.keys(dataSource.getAllPages()).length).to.equal(0);\n expect(dataSource.getPageSize()).to.equal(100);\n });\n\n it('can be installed on the host', async () => {\n const dataSource = new CollectionBrowserDataSource(host);\n dataSource.addPage(1, dataPage);\n\n host.installDataSourceAndQueryState(dataSource, {\n searchType: SearchType.METADATA,\n sortDirection: null,\n selectedTitleFilter: null,\n selectedCreatorFilter: null,\n baseQuery: 'foobar',\n });\n\n await host.updateComplete;\n\n expect(host.dataSource).to.equal(dataSource);\n expect(host.baseQuery).to.equal('foobar');\n\n host.removeController(dataSource);\n });\n\n it('can suppress further fetches', async () => {\n host.searchService = new MockSearchService();\n\n const pageFetchSpy = sinon.spy();\n const dataSource = new CollectionBrowserDataSource(host);\n dataSource.fetchPage = pageFetchSpy;\n\n dataSource.addPage(1, dataPage);\n dataSource.setFetchesSuppressed(true);\n dataSource.handleQueryChange();\n\n expect(pageFetchSpy.callCount).to.equal(0);\n });\n\n it('can set its initial page batch size', async () => {\n host.searchService = new MockSearchService();\n\n const pageFetchSpy = sinon.spy();\n const dataSource = new CollectionBrowserDataSource(host);\n dataSource.setNumInitialPages(10);\n dataSource.fetchPage = pageFetchSpy;\n\n dataSource.handleQueryChange();\n\n // Uses specified number of initial pages\n expect(pageFetchSpy.args[0][1]).to.equal(10);\n });\n\n it('refreshes prefix filter counts', () => {\n const dataSource = new CollectionBrowserDataSource(host);\n dataSource.addPage(1, dataPage);\n\n dataSource.prefixFilterCountMap = {\n title: {\n X: 10,\n },\n };\n\n dataSource.refreshLetterCounts();\n expect(dataSource.prefixFilterCountMap).to.deep.equal({});\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '../src/empty-placeholder';
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { expect, fixture } from '@open-wc/testing';
|
|
2
|
+
import { html } from 'lit';
|
|
3
|
+
import '../src/empty-placeholder';
|
|
4
|
+
describe('Empty Placeholder', () => {
|
|
5
|
+
it('should render with empty-query placeholder', async () => {
|
|
6
|
+
var _a;
|
|
7
|
+
const el = await fixture(html `<empty-placeholder></empty-placeholder>`);
|
|
8
|
+
el.placeholderType = 'empty-query';
|
|
9
|
+
await el.updateComplete;
|
|
10
|
+
const placeholderElem = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.placeholder');
|
|
11
|
+
expect(placeholderElem).to.exist;
|
|
12
|
+
expect(placeholderElem).to.have.class('empty-query');
|
|
13
|
+
});
|
|
14
|
+
it('should render with empty-collection placeholder', async () => {
|
|
15
|
+
var _a;
|
|
16
|
+
const el = await fixture(html `<empty-placeholder></empty-placeholder>`);
|
|
17
|
+
el.placeholderType = 'empty-collection';
|
|
18
|
+
await el.updateComplete;
|
|
19
|
+
const placeholderElem = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.placeholder');
|
|
20
|
+
expect(placeholderElem).to.exist;
|
|
21
|
+
expect(placeholderElem).to.have.class('empty-collection');
|
|
22
|
+
});
|
|
23
|
+
it('should render with no-results placeholder', async () => {
|
|
24
|
+
var _a;
|
|
25
|
+
const el = await fixture(html `<empty-placeholder></empty-placeholder>`);
|
|
26
|
+
el.placeholderType = 'no-results';
|
|
27
|
+
await el.updateComplete;
|
|
28
|
+
const placeholderElem = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.placeholder');
|
|
29
|
+
expect(placeholderElem).to.exist;
|
|
30
|
+
expect(placeholderElem).to.have.class('no-results');
|
|
31
|
+
});
|
|
32
|
+
it('should render with query-error placeholder', async () => {
|
|
33
|
+
var _a;
|
|
34
|
+
const el = await fixture(html `<empty-placeholder></empty-placeholder>`);
|
|
35
|
+
el.placeholderType = 'query-error';
|
|
36
|
+
await el.updateComplete;
|
|
37
|
+
const placeholderElem = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.placeholder');
|
|
38
|
+
expect(placeholderElem).to.exist;
|
|
39
|
+
expect(placeholderElem).to.have.class('query-error');
|
|
40
|
+
});
|
|
41
|
+
it('should render with collection-error placeholder', async () => {
|
|
42
|
+
var _a;
|
|
43
|
+
const el = await fixture(html `<empty-placeholder></empty-placeholder>`);
|
|
44
|
+
el.placeholderType = 'collection-error';
|
|
45
|
+
await el.updateComplete;
|
|
46
|
+
const placeholderElem = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.placeholder');
|
|
47
|
+
expect(placeholderElem).to.exist;
|
|
48
|
+
expect(placeholderElem).to.have.class('collection-error');
|
|
49
|
+
});
|
|
50
|
+
it('should not render any empty placeholder', async () => {
|
|
51
|
+
var _a, _b, _c, _d, _e, _f;
|
|
52
|
+
const el = await fixture(html `<empty-placeholder></empty-placeholder>`);
|
|
53
|
+
el.placeholderType = null;
|
|
54
|
+
await el.updateComplete;
|
|
55
|
+
expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.placeholder')).to.not.exist;
|
|
56
|
+
expect((_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.empty-query')).to.not.exist;
|
|
57
|
+
expect((_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.empty-collection')).to.not.exist;
|
|
58
|
+
expect((_d = el.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('.no-results')).to.not.exist;
|
|
59
|
+
expect((_e = el.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector('.query-error')).to.not.exist;
|
|
60
|
+
expect((_f = el.shadowRoot) === null || _f === void 0 ? void 0 : _f.querySelector('.collection-error')).to.not.exist;
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
//# sourceMappingURL=empty-placeholder.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"empty-placeholder.test.js","sourceRoot":"","sources":["../../test/empty-placeholder.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport '../src/empty-placeholder';\n\nimport type { EmptyPlaceholder } from '../src/empty-placeholder';\n\ndescribe('Empty Placeholder', () => {\n it('should render with empty-query placeholder', async () => {\n const el = await fixture<EmptyPlaceholder>(\n html`<empty-placeholder></empty-placeholder>`,\n );\n\n el.placeholderType = 'empty-query';\n await el.updateComplete;\n\n const placeholderElem = el.shadowRoot?.querySelector('.placeholder');\n expect(placeholderElem).to.exist;\n expect(placeholderElem).to.have.class('empty-query');\n });\n\n it('should render with empty-collection placeholder', async () => {\n const el = await fixture<EmptyPlaceholder>(\n html`<empty-placeholder></empty-placeholder>`,\n );\n\n el.placeholderType = 'empty-collection';\n await el.updateComplete;\n\n const placeholderElem = el.shadowRoot?.querySelector('.placeholder');\n expect(placeholderElem).to.exist;\n expect(placeholderElem).to.have.class('empty-collection');\n });\n\n it('should render with no-results placeholder', async () => {\n const el = await fixture<EmptyPlaceholder>(\n html`<empty-placeholder></empty-placeholder>`,\n );\n\n el.placeholderType = 'no-results';\n await el.updateComplete;\n\n const placeholderElem = el.shadowRoot?.querySelector('.placeholder');\n expect(placeholderElem).to.exist;\n expect(placeholderElem).to.have.class('no-results');\n });\n\n it('should render with query-error placeholder', async () => {\n const el = await fixture<EmptyPlaceholder>(\n html`<empty-placeholder></empty-placeholder>`,\n );\n\n el.placeholderType = 'query-error';\n await el.updateComplete;\n\n const placeholderElem = el.shadowRoot?.querySelector('.placeholder');\n expect(placeholderElem).to.exist;\n expect(placeholderElem).to.have.class('query-error');\n });\n\n it('should render with collection-error placeholder', async () => {\n const el = await fixture<EmptyPlaceholder>(\n html`<empty-placeholder></empty-placeholder>`,\n );\n\n el.placeholderType = 'collection-error';\n await el.updateComplete;\n\n const placeholderElem = el.shadowRoot?.querySelector('.placeholder');\n expect(placeholderElem).to.exist;\n expect(placeholderElem).to.have.class('collection-error');\n });\n\n it('should not render any empty placeholder', async () => {\n const el = await fixture<EmptyPlaceholder>(\n html`<empty-placeholder></empty-placeholder>`,\n );\n\n el.placeholderType = null;\n await el.updateComplete;\n\n expect(el.shadowRoot?.querySelector('.placeholder')).to.not.exist;\n expect(el.shadowRoot?.querySelector('.empty-query')).to.not.exist;\n expect(el.shadowRoot?.querySelector('.empty-collection')).to.not.exist;\n expect(el.shadowRoot?.querySelector('.no-results')).to.not.exist;\n expect(el.shadowRoot?.querySelector('.query-error')).to.not.exist;\n expect(el.shadowRoot?.querySelector('.collection-error')).to.not.exist;\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '../src/expanded-date-picker';
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { ModalManagerMode, } from '@internetarchive/modal-manager';
|
|
2
|
+
import { expect, fixture } from '@open-wc/testing';
|
|
3
|
+
import { html } from 'lit';
|
|
4
|
+
import sinon from 'sinon';
|
|
5
|
+
import '../src/expanded-date-picker';
|
|
6
|
+
import { MockAnalyticsHandler } from './mocks/mock-analytics-handler';
|
|
7
|
+
import { analyticsActions, analyticsCategories, } from '../src/utils/analytics-events';
|
|
8
|
+
describe('Expanded Date Picker', () => {
|
|
9
|
+
it('should render with a date picker and Apply button', async () => {
|
|
10
|
+
var _a, _b;
|
|
11
|
+
const el = await fixture(html `<expanded-date-picker></expanded-date-picker>`);
|
|
12
|
+
expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#date-picker')).to.exist;
|
|
13
|
+
expect((_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#apply-btn')).to.exist;
|
|
14
|
+
});
|
|
15
|
+
it('should update its min/max selected date when date picker changes', async () => {
|
|
16
|
+
var _a;
|
|
17
|
+
const el = await fixture(html `<expanded-date-picker
|
|
18
|
+
.buckets=${[1, 2, 3, 4, 5]}
|
|
19
|
+
.minDate=${'1'}
|
|
20
|
+
.maxDate=${'5'}
|
|
21
|
+
.minSelectedDate=${'1'}
|
|
22
|
+
.maxSelectedDate=${'5'}
|
|
23
|
+
></expanded-date-picker>`);
|
|
24
|
+
const datePicker = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#date-picker');
|
|
25
|
+
expect(datePicker).to.exist;
|
|
26
|
+
datePicker.minSelectedDate = '2';
|
|
27
|
+
datePicker.maxSelectedDate = '4';
|
|
28
|
+
datePicker.dispatchEvent(new CustomEvent('histogramDateRangeUpdated', {
|
|
29
|
+
detail: {
|
|
30
|
+
minDate: datePicker.minSelectedDate,
|
|
31
|
+
maxDate: datePicker.maxSelectedDate,
|
|
32
|
+
},
|
|
33
|
+
}));
|
|
34
|
+
await el.updateComplete;
|
|
35
|
+
expect(el.minSelectedDate).to.equal('2');
|
|
36
|
+
expect(el.maxSelectedDate).to.equal('4');
|
|
37
|
+
});
|
|
38
|
+
it('should emit an event when a date range is applied', async () => {
|
|
39
|
+
var _a;
|
|
40
|
+
const applySpy = sinon.spy();
|
|
41
|
+
const el = await fixture(html `<expanded-date-picker
|
|
42
|
+
.buckets=${[1, 2, 3, 4, 5]}
|
|
43
|
+
.minDate=${'1'}
|
|
44
|
+
.maxDate=${'5'}
|
|
45
|
+
.minSelectedDate=${'1'}
|
|
46
|
+
.maxSelectedDate=${'5'}
|
|
47
|
+
@histogramDateRangeApplied=${applySpy}
|
|
48
|
+
></expanded-date-picker>`);
|
|
49
|
+
const applyBtn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#apply-btn');
|
|
50
|
+
expect(applyBtn).to.exist;
|
|
51
|
+
applyBtn.click();
|
|
52
|
+
await el.updateComplete;
|
|
53
|
+
expect(applySpy.callCount).to.equal(1);
|
|
54
|
+
expect(applySpy.calledWithMatch({ detail: { minDate: '1', maxDate: '5' } }));
|
|
55
|
+
});
|
|
56
|
+
it('should close its modal and emit close event when date range applied', async () => {
|
|
57
|
+
var _a;
|
|
58
|
+
const modalManager = await fixture(html `<modal-manager></modal-manager>`);
|
|
59
|
+
modalManager.mode = ModalManagerMode.Open;
|
|
60
|
+
const modalClosed = sinon.spy();
|
|
61
|
+
const el = await fixture(html `<expanded-date-picker
|
|
62
|
+
.buckets=${[1, 2, 3, 4, 5]}
|
|
63
|
+
.minDate=${'1'}
|
|
64
|
+
.maxDate=${'5'}
|
|
65
|
+
.minSelectedDate=${'1'}
|
|
66
|
+
.maxSelectedDate=${'5'}
|
|
67
|
+
.modalManager=${modalManager}
|
|
68
|
+
@modalClosed=${modalClosed}
|
|
69
|
+
></expanded-date-picker>`);
|
|
70
|
+
const applyBtn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#apply-btn');
|
|
71
|
+
expect(applyBtn).to.exist;
|
|
72
|
+
applyBtn.click();
|
|
73
|
+
await el.updateComplete;
|
|
74
|
+
expect(modalManager.getMode()).to.equal(ModalManagerMode.Closed);
|
|
75
|
+
expect(modalClosed.callCount).to.equal(1);
|
|
76
|
+
});
|
|
77
|
+
it('closes the modal when Esc key is pressed', async () => {
|
|
78
|
+
var _a;
|
|
79
|
+
const modalManager = await fixture(html `<modal-manager></modal-manager>`);
|
|
80
|
+
const el = await fixture(html `<expanded-date-picker
|
|
81
|
+
.buckets=${[1, 2, 3, 4, 5]}
|
|
82
|
+
.minDate=${'1'}
|
|
83
|
+
.maxDate=${'5'}
|
|
84
|
+
.minSelectedDate=${'1'}
|
|
85
|
+
.maxSelectedDate=${'5'}
|
|
86
|
+
.modalManager=${modalManager}
|
|
87
|
+
></expanded-date-picker>`);
|
|
88
|
+
const closeModalSpy = sinon.spy(el.modalManager, 'closeModal');
|
|
89
|
+
// Dispatch an Esc keydown event
|
|
90
|
+
document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape' }));
|
|
91
|
+
await el.updateComplete;
|
|
92
|
+
expect(closeModalSpy.callCount).to.equal(1);
|
|
93
|
+
expect((_a = el.modalManager) === null || _a === void 0 ? void 0 : _a.classList.contains('expanded-date-picker')).to.be
|
|
94
|
+
.false;
|
|
95
|
+
});
|
|
96
|
+
it('sends analytics when date range is applied', async () => {
|
|
97
|
+
var _a, _b;
|
|
98
|
+
const analyticsHandler = new MockAnalyticsHandler();
|
|
99
|
+
const el = await fixture(html `<expanded-date-picker
|
|
100
|
+
.buckets=${[1, 2, 3, 4, 5]}
|
|
101
|
+
.minDate=${'1'}
|
|
102
|
+
.maxDate=${'5'}
|
|
103
|
+
.analyticsHandler=${analyticsHandler}
|
|
104
|
+
></expanded-date-picker>`);
|
|
105
|
+
const applyBtn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#apply-btn');
|
|
106
|
+
expect(applyBtn).to.exist;
|
|
107
|
+
applyBtn.click();
|
|
108
|
+
await el.updateComplete;
|
|
109
|
+
expect(analyticsHandler.callCategory).to.equal(analyticsCategories.default);
|
|
110
|
+
expect(analyticsHandler.callAction).to.equal(analyticsActions.histogramChangedFromModal);
|
|
111
|
+
expect(analyticsHandler.callLabel).to.equal(window.location.href);
|
|
112
|
+
const datePicker = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#date-picker');
|
|
113
|
+
expect(datePicker).to.exist;
|
|
114
|
+
datePicker.minSelectedDate = '2';
|
|
115
|
+
datePicker.maxSelectedDate = '5';
|
|
116
|
+
datePicker.dispatchEvent(new CustomEvent('histogramDateRangeUpdated', {
|
|
117
|
+
detail: {
|
|
118
|
+
minDate: datePicker.minSelectedDate,
|
|
119
|
+
maxDate: datePicker.maxSelectedDate,
|
|
120
|
+
},
|
|
121
|
+
}));
|
|
122
|
+
await el.updateComplete;
|
|
123
|
+
applyBtn.click();
|
|
124
|
+
await el.updateComplete;
|
|
125
|
+
expect(analyticsHandler.callCategory).to.equal(analyticsCategories.default);
|
|
126
|
+
expect(analyticsHandler.callAction).to.equal(analyticsActions.histogramChangedFromModal);
|
|
127
|
+
expect(analyticsHandler.callLabel).to.equal(window.location.href);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
//# sourceMappingURL=expanded-date-picker.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expanded-date-picker.test.js","sourceRoot":"","sources":["../../test/expanded-date-picker.test.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,gBAAgB,GACjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,6BAA6B,CAAC;AAGrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EACL,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AAEvC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;;QACjE,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,IAAI,CAAA,+CAA+C,CACpD,CAAC;QAEF,MAAM,CAAC,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC9D,MAAM,CAAC,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;;QAChF,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,IAAI,CAAA;mBACS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;mBACf,GAAG;mBACH,GAAG;2BACK,GAAG;2BACH,GAAG;+BACC,CAC1B,CAAC;QAEF,MAAM,UAAU,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAC7C,cAAc,CACO,CAAC;QACxB,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAE5B,UAAU,CAAC,eAAe,GAAG,GAAG,CAAC;QACjC,UAAU,CAAC,eAAe,GAAG,GAAG,CAAC;QACjC,UAAU,CAAC,aAAa,CACtB,IAAI,WAAW,CAAC,2BAA2B,EAAE;YAC3C,MAAM,EAAE;gBACN,OAAO,EAAE,UAAU,CAAC,eAAe;gBACnC,OAAO,EAAE,UAAU,CAAC,eAAe;aACpC;SACF,CAAC,CACH,CAAC;QACF,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;;QACjE,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,IAAI,CAAA;mBACS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;mBACf,GAAG;mBACH,GAAG;2BACK,GAAG;2BACH,GAAG;qCACO,QAAQ;+BACd,CAC1B,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAC3C,YAAY,CACQ,CAAC;QACvB,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAE1B,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CACJ,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CACrE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;;QACnF,MAAM,YAAY,GAAG,MAAM,OAAO,CAChC,IAAI,CAAA,iCAAiC,CACtC,CAAC;QACF,YAAY,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC;QAE1C,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QAEhC,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,IAAI,CAAA;mBACS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;mBACf,GAAG;mBACH,GAAG;2BACK,GAAG;2BACH,GAAG;wBACN,YAAY;uBACb,WAAW;+BACH,CAC1B,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAC3C,YAAY,CACQ,CAAC;QACvB,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAE1B,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;;QACxD,MAAM,YAAY,GAAG,MAAM,OAAO,CAChC,IAAI,CAAA,iCAAiC,CACtC,CAAC;QAEF,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,IAAI,CAAA;mBACS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;mBACf,GAAG;mBACH,GAAG;2BACK,GAAG;2BACH,GAAG;wBACN,YAAY;+BACL,CAC1B,CAAC;QAEF,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAC7B,EAAE,CAAC,YAAqC,EACxC,YAAY,CACb,CAAC;QAEF,gCAAgC;QAChC,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACxE,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAA,EAAE,CAAC,YAAY,0CAAE,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;aACtE,KAAK,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;;QAC1D,MAAM,gBAAgB,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACpD,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,IAAI,CAAA;mBACS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;mBACf,GAAG;mBACH,GAAG;4BACM,gBAAgB;+BACb,CAC1B,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAC3C,YAAY,CACQ,CAAC;QACvB,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAE1B,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC5E,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAC1C,gBAAgB,CAAC,yBAAyB,CAC3C,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAElE,MAAM,UAAU,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAC7C,cAAc,CACO,CAAC;QACxB,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAE5B,UAAU,CAAC,eAAe,GAAG,GAAG,CAAC;QACjC,UAAU,CAAC,eAAe,GAAG,GAAG,CAAC;QACjC,UAAU,CAAC,aAAa,CACtB,IAAI,WAAW,CAAC,2BAA2B,EAAE;YAC3C,MAAM,EAAE;gBACN,OAAO,EAAE,UAAU,CAAC,eAAe;gBACnC,OAAO,EAAE,UAAU,CAAC,eAAe;aACpC;SACF,CAAC,CACH,CAAC;QACF,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC5E,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAC1C,gBAAgB,CAAC,yBAAyB,CAC3C,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import type { HistogramDateRange } from '@internetarchive/histogram-date-range';\nimport {\n ModalManager,\n ModalManagerInterface,\n ModalManagerMode,\n} from '@internetarchive/modal-manager';\nimport { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport sinon from 'sinon';\nimport '../src/expanded-date-picker';\n\nimport type { ExpandedDatePicker } from '../src/expanded-date-picker';\nimport { MockAnalyticsHandler } from './mocks/mock-analytics-handler';\nimport {\n analyticsActions,\n analyticsCategories,\n} from '../src/utils/analytics-events';\n\ndescribe('Expanded Date Picker', () => {\n it('should render with a date picker and Apply button', async () => {\n const el = await fixture<ExpandedDatePicker>(\n html`<expanded-date-picker></expanded-date-picker>`,\n );\n\n expect(el.shadowRoot?.querySelector('#date-picker')).to.exist;\n expect(el.shadowRoot?.querySelector('#apply-btn')).to.exist;\n });\n\n it('should update its min/max selected date when date picker changes', async () => {\n const el = await fixture<ExpandedDatePicker>(\n html`<expanded-date-picker\n .buckets=${[1, 2, 3, 4, 5]}\n .minDate=${'1'}\n .maxDate=${'5'}\n .minSelectedDate=${'1'}\n .maxSelectedDate=${'5'}\n ></expanded-date-picker>`,\n );\n\n const datePicker = el.shadowRoot?.querySelector(\n '#date-picker',\n ) as HistogramDateRange;\n expect(datePicker).to.exist;\n\n datePicker.minSelectedDate = '2';\n datePicker.maxSelectedDate = '4';\n datePicker.dispatchEvent(\n new CustomEvent('histogramDateRangeUpdated', {\n detail: {\n minDate: datePicker.minSelectedDate,\n maxDate: datePicker.maxSelectedDate,\n },\n }),\n );\n await el.updateComplete;\n\n expect(el.minSelectedDate).to.equal('2');\n expect(el.maxSelectedDate).to.equal('4');\n });\n\n it('should emit an event when a date range is applied', async () => {\n const applySpy = sinon.spy();\n const el = await fixture<ExpandedDatePicker>(\n html`<expanded-date-picker\n .buckets=${[1, 2, 3, 4, 5]}\n .minDate=${'1'}\n .maxDate=${'5'}\n .minSelectedDate=${'1'}\n .maxSelectedDate=${'5'}\n @histogramDateRangeApplied=${applySpy}\n ></expanded-date-picker>`,\n );\n\n const applyBtn = el.shadowRoot?.querySelector(\n '#apply-btn',\n ) as HTMLButtonElement;\n expect(applyBtn).to.exist;\n\n applyBtn.click();\n await el.updateComplete;\n\n expect(applySpy.callCount).to.equal(1);\n expect(\n applySpy.calledWithMatch({ detail: { minDate: '1', maxDate: '5' } }),\n );\n });\n\n it('should close its modal and emit close event when date range applied', async () => {\n const modalManager = await fixture<ModalManager>(\n html`<modal-manager></modal-manager>`,\n );\n modalManager.mode = ModalManagerMode.Open;\n\n const modalClosed = sinon.spy();\n\n const el = await fixture<ExpandedDatePicker>(\n html`<expanded-date-picker\n .buckets=${[1, 2, 3, 4, 5]}\n .minDate=${'1'}\n .maxDate=${'5'}\n .minSelectedDate=${'1'}\n .maxSelectedDate=${'5'}\n .modalManager=${modalManager}\n @modalClosed=${modalClosed}\n ></expanded-date-picker>`,\n );\n\n const applyBtn = el.shadowRoot?.querySelector(\n '#apply-btn',\n ) as HTMLButtonElement;\n expect(applyBtn).to.exist;\n\n applyBtn.click();\n await el.updateComplete;\n\n expect(modalManager.getMode()).to.equal(ModalManagerMode.Closed);\n expect(modalClosed.callCount).to.equal(1);\n });\n\n it('closes the modal when Esc key is pressed', async () => {\n const modalManager = await fixture<ModalManager>(\n html`<modal-manager></modal-manager>`,\n );\n\n const el = await fixture<ExpandedDatePicker>(\n html`<expanded-date-picker\n .buckets=${[1, 2, 3, 4, 5]}\n .minDate=${'1'}\n .maxDate=${'5'}\n .minSelectedDate=${'1'}\n .maxSelectedDate=${'5'}\n .modalManager=${modalManager}\n ></expanded-date-picker>`,\n );\n\n const closeModalSpy = sinon.spy(\n el.modalManager as ModalManagerInterface,\n 'closeModal',\n );\n\n // Dispatch an Esc keydown event\n document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape' }));\n await el.updateComplete;\n\n expect(closeModalSpy.callCount).to.equal(1);\n expect(el.modalManager?.classList.contains('expanded-date-picker')).to.be\n .false;\n });\n\n it('sends analytics when date range is applied', async () => {\n const analyticsHandler = new MockAnalyticsHandler();\n const el = await fixture<ExpandedDatePicker>(\n html`<expanded-date-picker\n .buckets=${[1, 2, 3, 4, 5]}\n .minDate=${'1'}\n .maxDate=${'5'}\n .analyticsHandler=${analyticsHandler}\n ></expanded-date-picker>`,\n );\n\n const applyBtn = el.shadowRoot?.querySelector(\n '#apply-btn',\n ) as HTMLButtonElement;\n expect(applyBtn).to.exist;\n\n applyBtn.click();\n await el.updateComplete;\n\n expect(analyticsHandler.callCategory).to.equal(analyticsCategories.default);\n expect(analyticsHandler.callAction).to.equal(\n analyticsActions.histogramChangedFromModal,\n );\n expect(analyticsHandler.callLabel).to.equal(window.location.href);\n\n const datePicker = el.shadowRoot?.querySelector(\n '#date-picker',\n ) as HistogramDateRange;\n expect(datePicker).to.exist;\n\n datePicker.minSelectedDate = '2';\n datePicker.maxSelectedDate = '5';\n datePicker.dispatchEvent(\n new CustomEvent('histogramDateRangeUpdated', {\n detail: {\n minDate: datePicker.minSelectedDate,\n maxDate: datePicker.maxSelectedDate,\n },\n }),\n );\n await el.updateComplete;\n\n applyBtn.click();\n await el.updateComplete;\n\n expect(analyticsHandler.callCategory).to.equal(analyticsCategories.default);\n expect(analyticsHandler.callAction).to.equal(\n analyticsActions.histogramChangedFromModal,\n );\n expect(analyticsHandler.callLabel).to.equal(window.location.href);\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '../src/tiles/overlay/icon-overlay';
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { expect, fixture } from '@open-wc/testing';
|
|
2
|
+
import { html } from 'lit';
|
|
3
|
+
import '../src/tiles/overlay/icon-overlay';
|
|
4
|
+
describe('Icon Overlay component', () => {
|
|
5
|
+
it('should render basic component', async () => {
|
|
6
|
+
var _a;
|
|
7
|
+
const el = await fixture(html `
|
|
8
|
+
<icon-overlay></icon-overlay>
|
|
9
|
+
`);
|
|
10
|
+
const overlayDiv = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.icon-overlay');
|
|
11
|
+
expect(overlayDiv).to.exist;
|
|
12
|
+
});
|
|
13
|
+
it('should render component with login-required type', async () => {
|
|
14
|
+
var _a, _b, _c;
|
|
15
|
+
const el = await fixture(html `
|
|
16
|
+
<icon-overlay .type=${'login-required'}></icon-overlay>
|
|
17
|
+
`);
|
|
18
|
+
const svgTitle = (_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('svg')) === null || _b === void 0 ? void 0 : _b.querySelector('title')) === null || _c === void 0 ? void 0 : _c.textContent;
|
|
19
|
+
expect(svgTitle).to.equal('Log in to view this item');
|
|
20
|
+
});
|
|
21
|
+
it('should render component with content-warning type', async () => {
|
|
22
|
+
var _a, _b, _c;
|
|
23
|
+
const el = await fixture(html `
|
|
24
|
+
<icon-overlay .type=${'content-warning'}></icon-overlay>
|
|
25
|
+
`);
|
|
26
|
+
const svgTitle = (_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('svg')) === null || _b === void 0 ? void 0 : _b.querySelector('title')) === null || _c === void 0 ? void 0 : _c.textContent;
|
|
27
|
+
expect(svgTitle).to.equal('Content may be inappropriate');
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=icon-overlay.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon-overlay.test.js","sourceRoot":"","sources":["../../test/icon-overlay.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAG3B,OAAO,mCAAmC,CAAC;AAE3C,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;;QAC7C,MAAM,EAAE,GAAG,MAAM,OAAO,CAAc,IAAI,CAAA;;KAEzC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QACjE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;;QAChE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAc,IAAI,CAAA;4BAClB,gBAAgB;KACvC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAA,MAAA,MAAA,EAAE,CAAC,UAAU,0CAC1B,aAAa,CAAC,KAAK,CAAC,0CACpB,aAAa,CAAC,OAAO,CAAC,0CAAE,WAAW,CAAC;QACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;;QACjE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAc,IAAI,CAAA;4BAClB,iBAAiB;KACxC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAA,MAAA,MAAA,EAAE,CAAC,UAAU,0CAC1B,aAAa,CAAC,KAAK,CAAC,0CACpB,aAAa,CAAC,OAAO,CAAC,0CAAE,WAAW,CAAC;QACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport type { IconOverlay } from '../src/tiles/overlay/icon-overlay';\n\nimport '../src/tiles/overlay/icon-overlay';\n\ndescribe('Icon Overlay component', () => {\n it('should render basic component', async () => {\n const el = await fixture<IconOverlay>(html`\n <icon-overlay></icon-overlay>\n `);\n\n const overlayDiv = el.shadowRoot?.querySelector('.icon-overlay');\n expect(overlayDiv).to.exist;\n });\n\n it('should render component with login-required type', async () => {\n const el = await fixture<IconOverlay>(html`\n <icon-overlay .type=${'login-required'}></icon-overlay>\n `);\n\n const svgTitle = el.shadowRoot\n ?.querySelector('svg')\n ?.querySelector('title')?.textContent;\n expect(svgTitle).to.equal('Log in to view this item');\n });\n\n it('should render component with content-warning type', async () => {\n const el = await fixture<IconOverlay>(html`\n <icon-overlay .type=${'content-warning'}></icon-overlay>\n `);\n\n const svgTitle = el.shadowRoot\n ?.querySelector('svg')\n ?.querySelector('title')?.textContent;\n expect(svgTitle).to.equal('Content may be inappropriate');\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '../src/tiles/image-block';
|