@internetarchive/collection-browser 3.4.1-alpha-webdev7761.2 → 3.4.1-alpha-webdev7761.4
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/dist/src/app-root.js +19 -28
- package/dist/src/app-root.js.map +1 -1
- package/dist/src/collection-browser.d.ts +14 -10
- package/dist/src/collection-browser.js +870 -886
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/collection-facets/facet-row.js +3 -4
- package/dist/src/collection-facets/facet-row.js.map +1 -1
- package/dist/src/collection-facets/models.js.map +1 -1
- package/dist/src/collection-facets/more-facets-content.js +145 -156
- package/dist/src/collection-facets/more-facets-content.js.map +1 -1
- package/dist/src/collection-facets/more-facets-pagination.js +6 -10
- package/dist/src/collection-facets/more-facets-pagination.js.map +1 -1
- package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js +16 -21
- package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js.map +1 -1
- package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +7 -10
- package/dist/src/collection-facets/smart-facets/smart-facet-bar.js.map +1 -1
- package/dist/src/collection-facets/smart-facets/smart-facet-button.js +3 -2
- package/dist/src/collection-facets/smart-facets/smart-facet-button.js.map +1 -1
- package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js +9 -11
- package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js.map +1 -1
- package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js +7 -7
- package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js.map +1 -1
- package/dist/src/collection-facets/toggle-switch.js +4 -6
- package/dist/src/collection-facets/toggle-switch.js.map +1 -1
- package/dist/src/collection-facets.js +34 -50
- package/dist/src/collection-facets.js.map +1 -1
- package/dist/src/combo-box/caret-closed.js +5 -11
- package/dist/src/combo-box/caret-closed.js.map +1 -1
- package/dist/src/combo-box/caret-open.js +5 -11
- package/dist/src/combo-box/caret-open.js.map +1 -1
- package/dist/src/combo-box/clear.d.ts +2 -0
- package/dist/src/combo-box/clear.js +11 -0
- package/dist/src/combo-box/clear.js.map +1 -0
- package/dist/src/combo-box/ia-combo-box.d.ts +40 -9
- package/dist/src/combo-box/ia-combo-box.js +363 -272
- package/dist/src/combo-box/ia-combo-box.js.map +1 -1
- package/dist/src/combo-box/models.d.ts +14 -0
- package/dist/src/combo-box/models.js +32 -1
- package/dist/src/combo-box/models.js.map +1 -1
- package/dist/src/data-source/collection-browser-data-source.js +35 -47
- package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
- package/dist/src/empty-placeholder.js +19 -18
- package/dist/src/empty-placeholder.js.map +1 -1
- package/dist/src/expanded-date-picker.js +6 -10
- package/dist/src/expanded-date-picker.js.map +1 -1
- package/dist/src/language-code-handler/language-code-handler.js +2 -2
- package/dist/src/language-code-handler/language-code-handler.js.map +1 -1
- package/dist/src/manage/manage-bar.js +86 -92
- package/dist/src/manage/manage-bar.js.map +1 -1
- package/dist/src/manage/remove-items-modal-content.js +2 -2
- package/dist/src/manage/remove-items-modal-content.js.map +1 -1
- package/dist/src/models.js +36 -40
- package/dist/src/models.js.map +1 -1
- package/dist/src/restoration-state-handler.js +9 -10
- package/dist/src/restoration-state-handler.js.map +1 -1
- package/dist/src/sort-filter-bar/alpha-bar.js +9 -14
- package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -1
- package/dist/src/sort-filter-bar/sort-filter-bar.js +14 -24
- package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
- package/dist/src/tiles/base-tile-component.js +1 -2
- package/dist/src/tiles/base-tile-component.js.map +1 -1
- package/dist/src/tiles/grid/account-tile.js +36 -38
- package/dist/src/tiles/grid/account-tile.js.map +1 -1
- package/dist/src/tiles/grid/collection-tile.js +79 -82
- package/dist/src/tiles/grid/collection-tile.js.map +1 -1
- package/dist/src/tiles/grid/item-tile.js +154 -164
- package/dist/src/tiles/grid/item-tile.js.map +1 -1
- package/dist/src/tiles/grid/search-tile.js +42 -43
- package/dist/src/tiles/grid/search-tile.js.map +1 -1
- package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +119 -119
- package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js.map +1 -1
- package/dist/src/tiles/grid/tile-stats.js +2 -3
- package/dist/src/tiles/grid/tile-stats.js.map +1 -1
- package/dist/src/tiles/hover/hover-pane-controller.js +42 -49
- package/dist/src/tiles/hover/hover-pane-controller.js.map +1 -1
- package/dist/src/tiles/hover/tile-hover-pane.js +113 -114
- package/dist/src/tiles/hover/tile-hover-pane.js.map +1 -1
- package/dist/src/tiles/image-block.js +5 -8
- package/dist/src/tiles/image-block.js.map +1 -1
- package/dist/src/tiles/item-image.js +12 -19
- package/dist/src/tiles/item-image.js.map +1 -1
- package/dist/src/tiles/list/tile-list-compact.js +114 -122
- package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
- package/dist/src/tiles/list/tile-list.js +326 -347
- package/dist/src/tiles/list/tile-list.js.map +1 -1
- package/dist/src/tiles/overlay/icon-overlay.js +1 -2
- package/dist/src/tiles/overlay/icon-overlay.js.map +1 -1
- package/dist/src/tiles/overlay/text-overlay.js +2 -4
- package/dist/src/tiles/overlay/text-overlay.js.map +1 -1
- package/dist/src/tiles/text-snippet-block.js +2 -4
- package/dist/src/tiles/text-snippet-block.js.map +1 -1
- package/dist/src/tiles/tile-dispatcher.js +233 -241
- package/dist/src/tiles/tile-dispatcher.js.map +1 -1
- package/dist/src/tiles/tile-display-value-provider.js +5 -9
- package/dist/src/tiles/tile-display-value-provider.js.map +1 -1
- package/dist/src/tiles/tile-mediatype-icon.js +12 -19
- package/dist/src/tiles/tile-mediatype-icon.js.map +1 -1
- package/dist/src/utils/collapse-repeated-quotes.js +1 -1
- package/dist/src/utils/collapse-repeated-quotes.js.map +1 -1
- package/dist/src/utils/facet-utils.js +3 -5
- package/dist/src/utils/facet-utils.js.map +1 -1
- package/dist/src/utils/format-count.js +10 -10
- package/dist/src/utils/format-count.js.map +1 -1
- package/dist/src/utils/format-date.js.map +1 -1
- package/dist/src/utils/resolve-mediatype.js +2 -3
- package/dist/src/utils/resolve-mediatype.js.map +1 -1
- package/dist/test/collection-browser.test.js +131 -185
- package/dist/test/collection-browser.test.js.map +1 -1
- package/dist/test/collection-facets/facet-row.test.js +60 -75
- package/dist/test/collection-facets/facet-row.test.js.map +1 -1
- package/dist/test/collection-facets/facets-template.test.js +17 -23
- package/dist/test/collection-facets/facets-template.test.js.map +1 -1
- package/dist/test/collection-facets/more-facets-content.test.js +22 -32
- package/dist/test/collection-facets/more-facets-content.test.js.map +1 -1
- package/dist/test/collection-facets/more-facets-pagination.test.js +16 -22
- package/dist/test/collection-facets/more-facets-pagination.test.js.map +1 -1
- package/dist/test/collection-facets/toggle-switch.test.js +22 -19
- package/dist/test/collection-facets/toggle-switch.test.js.map +1 -1
- package/dist/test/collection-facets.test.js +80 -97
- package/dist/test/collection-facets.test.js.map +1 -1
- package/dist/test/empty-placeholder.test.js +11 -17
- package/dist/test/empty-placeholder.test.js.map +1 -1
- package/dist/test/expanded-date-picker.test.js +8 -14
- package/dist/test/expanded-date-picker.test.js.map +1 -1
- package/dist/test/icon-overlay.test.js +7 -6
- package/dist/test/icon-overlay.test.js.map +1 -1
- package/dist/test/image-block.test.js +16 -26
- package/dist/test/image-block.test.js.map +1 -1
- package/dist/test/item-image.test.js +23 -32
- package/dist/test/item-image.test.js.map +1 -1
- package/dist/test/manage/manage-bar.test.js +21 -33
- package/dist/test/manage/manage-bar.test.js.map +1 -1
- package/dist/test/manage/remove-items-modal-content.test.js +10 -15
- package/dist/test/manage/remove-items-modal-content.test.js.map +1 -1
- package/dist/test/mocks/mock-search-service.js +2 -3
- package/dist/test/mocks/mock-search-service.js.map +1 -1
- package/dist/test/restoration-state-handler.test.js +13 -21
- package/dist/test/restoration-state-handler.test.js.map +1 -1
- package/dist/test/review-block.test.js +16 -18
- package/dist/test/review-block.test.js.map +1 -1
- package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +2 -3
- package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js.map +1 -1
- package/dist/test/sort-filter-bar/alpha-bar.test.js +18 -24
- package/dist/test/sort-filter-bar/alpha-bar.test.js.map +1 -1
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js +178 -180
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -1
- package/dist/test/text-overlay.test.js +16 -15
- package/dist/test/text-overlay.test.js.map +1 -1
- package/dist/test/text-snippet-block.test.js +14 -19
- package/dist/test/text-snippet-block.test.js.map +1 -1
- package/dist/test/tile-stats.test.js +73 -34
- package/dist/test/tile-stats.test.js.map +1 -1
- package/dist/test/tiles/grid/account-tile.test.js +25 -25
- package/dist/test/tiles/grid/account-tile.test.js.map +1 -1
- package/dist/test/tiles/grid/collection-tile.test.js +13 -19
- package/dist/test/tiles/grid/collection-tile.test.js.map +1 -1
- package/dist/test/tiles/grid/item-tile.test.js +141 -168
- package/dist/test/tiles/grid/item-tile.test.js.map +1 -1
- package/dist/test/tiles/grid/search-tile.test.js +9 -13
- package/dist/test/tiles/grid/search-tile.test.js.map +1 -1
- package/dist/test/tiles/hover/hover-pane-controller.test.js +50 -62
- package/dist/test/tiles/hover/hover-pane-controller.test.js.map +1 -1
- package/dist/test/tiles/hover/tile-hover-pane.test.js +12 -16
- package/dist/test/tiles/hover/tile-hover-pane.test.js.map +1 -1
- package/dist/test/tiles/list/tile-list-compact.test.js +104 -118
- package/dist/test/tiles/list/tile-list-compact.test.js.map +1 -1
- package/dist/test/tiles/list/tile-list.test.js +202 -231
- package/dist/test/tiles/list/tile-list.test.js.map +1 -1
- package/dist/test/tiles/tile-dispatcher.test.js +97 -110
- package/dist/test/tiles/tile-dispatcher.test.js.map +1 -1
- package/dist/test/tiles/tile-mediatype-icon.test.js +12 -24
- package/dist/test/tiles/tile-mediatype-icon.test.js.map +1 -1
- package/dist/test/utils/format-date.test.js.map +1 -1
- package/index.html +1 -1
- package/package.json +5 -3
- package/src/collection-browser.ts +3060 -3030
- package/src/collection-facets/models.ts +10 -10
- package/src/collection-facets/more-facets-content.ts +639 -639
- package/src/collection-facets.ts +1 -1
- package/src/combo-box/caret-closed.ts +5 -11
- package/src/combo-box/caret-open.ts +5 -11
- package/src/combo-box/clear.ts +11 -0
- package/src/combo-box/ia-combo-box.ts +1288 -1180
- package/src/combo-box/models.ts +31 -1
- package/src/manage/manage-bar.ts +247 -247
- package/src/restoration-state-handler.ts +5 -1
- 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 -613
- package/src/tiles/hover/tile-hover-pane.ts +184 -184
- 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 -517
- package/src/utils/format-date.ts +62 -62
- package/test/collection-facets/facet-row.test.ts +375 -375
- package/test/collection-facets.test.ts +928 -928
- package/test/tiles/grid/item-tile.test.ts +520 -520
- package/test/tiles/hover/hover-pane-controller.test.ts +418 -418
- 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 -283
- package/test/utils/format-date.test.ts +89 -89
- package/tsconfig.json +8 -3
- package/vite.config.ts +29 -22
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hover-pane-controller.test.js","sourceRoot":"","sources":["../../../../test/tiles/hover/hover-pane-controller.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAkB,MAAM,KAAK,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EACL,mBAAmB,GAKpB,MAAM,gDAAgD,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,UAAU;IAApC;;QAG+B,sBAAiB,GAAY,KAAK,CAAC;IA+ClE,CAAC;IAzCC,MAAM;;QACJ,OAAO,IAAI,CAAA,IAAI,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,EAAE,GAAG,CAAC;IACnD,CAAC;IAES,YAAY;QACpB,IAAI,CAAC,UAAU,GAAG,IAAI,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC1E,CAAC;IAED,YAAY,KAAU,CAAC;IAEvB,YAAY,KAAU,CAAC;IAEvB,YAAY;QACV,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7D,CAAC;IAED,iBAAiB;QACf,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;QACpC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;QAC1B,SAAS,CAAC,oBAAoB,GAAG,CAAC,CAAC;QACnC,SAAS,CAAC,WAAW,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACvC,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC;QAC7B,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC;QAC3B,SAAS,CAAC,cAAc,GAAG,KAAK,CAAC;QACjC,SAAS,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACpC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,SAAS,CAAC,UAAU,GAAG,KAAK,CAAC;QAC7B,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC;QACxB,SAAS,CAAC,aAAa,GAAG,KAAK,CAAC;QAChC,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC;QAC7B,SAAS,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACpC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;QACxB,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC;QAExB,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,KAAK;YACf,gBAAgB,EAAE,KAAK;YACvB,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;CACF,CAAA;AAjD6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;sDAAgD;AAE9C;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;sDAAoC;AAEtC;IAAzB,KAAK,CAAC,iBAAiB,CAAC;8CAA2B;AALhD,WAAW;IADhB,aAAa,CAAC,cAAc,CAAC;GACxB,WAAW,CAkDhB;AAED,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,aAAuC,CAAC;IAC5C,IAAI,eAA2C,CAAC;IAEhD,MAAM,CAAC,GAAG,EAAE;QACV,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC;QAClC,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC;QACtC,MAAM,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAmB,CAAC;QAChE,MAAM,CAAC,YAAY,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,GAAG,EAAE;QACT,MAAM,CAAC,UAAU,GAAG,aAAa,CAAC;QAClC,MAAM,CAAC,YAAY,GAAG,eAAe,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;;QACvD,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,IAAI,CAAA,+BAA+B,CACpC,CAAC;QACF,MAAM,CAAC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oFAAoF,EAAE,KAAK,IAAI,EAAE;;QAClG,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,IAAI,CAAA;6BACmB,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;uBACpC,CAClB,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;QAChD,oDAAoD;QACpD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC1B,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB;QAEpF,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QACjD,2CAA2C;QAC3C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC1B,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;;QAC7F,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,IAAI,CAAA;6BACmB,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;uBACpC,CAClB,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QACjD,oDAAoD;QACpD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC1B,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB;IACtF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;;QAChF,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,IAAI,CAAA;6BACmB,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;uBACpC,CAClB,CAAC;QAEF,+DAA+D;QAC/D,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;QAChD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC1B,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,sEAAsE;QACtE,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QACjD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC1B,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,yEAAyE;QACzE,iCAAiC;QACjC,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;QAChD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC1B,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;;QACxE,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,IAAI,CAAA;6BACmB,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;uBACpC,CAClB,CAAC;QAEF,IAAI,CAAC,aAAa,CAChB,IAAI,UAAU,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAC5D,CAAC;QACF,oDAAoD;QACpD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC1B,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,cAAc,CAAC;QAE1B,MAAM,CAAC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAA,MAAA,IAAI,CAAC,YAAY,EAAE,0CAAE,qBAAqB,EAAE,0CAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CACxE,MAAM,CAAC,UAAU,CAClB,CAAC;QACF,MAAM,CAAC,MAAA,MAAA,IAAI,CAAC,YAAY,EAAE,0CAAE,qBAAqB,EAAE,0CAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CACzE,MAAM,CAAC,WAAW,CACnB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;;QAC/E,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,IAAI,CAAA;6BACmB,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;6BAC9B,IAAI;uBACV,CAClB,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;QAChD,oDAAoD;QACpD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC1B,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE7D,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QACjD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC1B,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;QAChD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC1B,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QACjD,2CAA2C;QAC3C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC1B,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,MAAM,kBAAkB,GAAG,CAAC,IAAiB,EAAE,EAAE,CAC/C,IAAI,UAAU,CAAC,YAAY,EAAE;YAC3B,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;SACtD,CAAC,CAAC;QAEL,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;;YAC5D,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,IAAI,CAAA;+BACmB;gBACnB,SAAS,EAAE,CAAC;gBACZ,cAAc,EAAE,CAAC;gBACjB,eAAe,EAAE,IAAI;aACtB;yBACc,CAClB,CAAC;YAEF,qEAAqE;YACrE,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC1B,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB;QACtF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;;YACpD,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,IAAI,CAAA;+BACmB;gBACnB,SAAS,EAAE,CAAC;gBACZ,cAAc,EAAE,GAAG;gBACnB,eAAe,EAAE,IAAI;aACtB;yBACc,CAClB,CAAC;YAEF,yBAAyB;YACzB,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC1B,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;YAEH,kDAAkD;YAClD,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;YAChD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC1B,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;;YAC1D,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,IAAI,CAAA;+BACmB;gBACnB,SAAS,EAAE,CAAC;gBACZ,cAAc,EAAE,GAAG;gBACnB,eAAe,EAAE,IAAI;aACtB;yBACc,CAClB,CAAC;YAEF,yBAAyB;YACzB,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC1B,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;YAEH,kDAAkD;YAClD,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;YAC/C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC1B,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;;YAC5F,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,IAAI,CAAA;+BACmB;gBACnB,SAAS,EAAE,CAAC;gBACZ,cAAc,EAAE,GAAG;gBACnB,eAAe,EAAE,IAAI;aACtB;yBACc,CAClB,CAAC;YAEF,yBAAyB;YACzB,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC1B,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;YAEH,yDAAyD;YACzD,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;YAClD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC1B,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;;YAChF,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,IAAI,CAAA;+BACmB;gBACnB,SAAS,EAAE,CAAC;gBACZ,SAAS,EAAE,CAAC;gBACZ,cAAc,EAAE,CAAC;gBACjB,eAAe,EAAE,IAAI;gBACrB,gBAAgB,EAAE,IAAI,EAAE,gCAAgC;aACzD;yBACc,CAClB,CAAC;YAEF,yBAAyB;YACzB,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC1B,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAE7D,MAAM,IAAI,CAAC,cAAc,CAAC;YAE1B,qBAAqB;YACrB,MAAA,MAAA,IAAI,CAAC,UAAU,0CACX,aAAa,CAAC,iBAAiB,CAAC,0CAChC,aAAa,CAAC,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;YAChD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC1B,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,IAAI,CAAA;+BACmB,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;yBACpC,CAClB,CAAC;YAEF,MAAM,wBAAwB,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;YAE1E,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5C,oDAAoD;YACpD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC1B,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;;YAC/C,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,IAAI,CAAA;+BACmB,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;yBACpC,CAClB,CAAC;YAEF,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5C,oDAAoD;YACpD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC1B,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB;QACtF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;;YAC9C,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,IAAI,CAAA;+BACmB,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;yBACpC,CAClB,CAAC;YAEF,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5C,oDAAoD;YACpD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC1B,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB;YAEpF,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3C,2CAA2C;YAC3C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC1B,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\r\nimport { html, LitElement, nothing, TemplateResult } from 'lit';\r\nimport { customElement, property, query } from 'lit/decorators.js';\r\nimport {\r\n HoverPaneController,\r\n HoverPaneControllerInterface,\r\n HoverPaneControllerOptions,\r\n HoverPaneProperties,\r\n HoverPaneProviderInterface,\r\n} from '../../../src/tiles/hover/hover-pane-controller';\r\nimport type { TileHoverPane } from '../../../src/tiles/hover/tile-hover-pane';\r\nimport { TileModel } from '../../../src/models';\r\nimport sinon from 'sinon';\r\n\r\n@customElement('host-element')\r\nclass HostElement extends LitElement implements HoverPaneProviderInterface {\r\n @property({ type: Object }) controllerOptions?: HoverPaneControllerOptions;\r\n\r\n @property({ type: Boolean }) suppressHoverPane: boolean = false;\r\n\r\n @query('tile-hover-pane') hoverPane?: TileHoverPane;\r\n\r\n controller?: HoverPaneControllerInterface;\r\n\r\n render(): TemplateResult {\r\n return html` ${this.controller?.getTemplate()} `;\r\n }\r\n\r\n protected firstUpdated(): void {\r\n this.controller = new HoverPaneController(this, this.controllerOptions);\r\n }\r\n\r\n acquireFocus(): void {}\r\n\r\n releaseFocus(): void {}\r\n\r\n getHoverPane(): HTMLElement | undefined {\r\n return this.suppressHoverPane ? undefined : this.hoverPane;\r\n }\r\n\r\n getHoverPaneProps(): HoverPaneProperties {\r\n const tileModel = new TileModel({});\r\n tileModel.checked = false;\r\n tileModel.collectionFilesCount = 1;\r\n tileModel.collections = ['foo', 'bar'];\r\n tileModel.collectionSize = 1;\r\n tileModel.commentCount = 1;\r\n tileModel.contentWarning = false;\r\n tileModel.creators = ['foo', 'bar'];\r\n tileModel.favCount = 1;\r\n tileModel.identifier = 'foo';\r\n tileModel.itemCount = 1;\r\n tileModel.loginRequired = false;\r\n tileModel.mediatype = 'data';\r\n tileModel.subjects = ['foo', 'bar'];\r\n tileModel.title = 'foo';\r\n tileModel.viewCount = 1;\r\n\r\n return {\r\n model: tileModel,\r\n loggedIn: false,\r\n suppressBlurring: false,\r\n sortParam: null,\r\n };\r\n }\r\n}\r\n\r\ndescribe('Hover Pane Controller', () => {\r\n let oldMatchMedia: typeof window.matchMedia;\r\n let oldOnTouchStart: typeof window.ontouchstart;\r\n\r\n before(() => {\r\n oldMatchMedia = window.matchMedia;\r\n oldOnTouchStart = window.ontouchstart;\r\n window.matchMedia = () => ({ matches: true }) as MediaQueryList;\r\n window.ontouchstart = () => {};\r\n });\r\n\r\n after(() => {\r\n window.matchMedia = oldMatchMedia;\r\n window.ontouchstart = oldOnTouchStart;\r\n });\r\n\r\n it('should initially provide empty template', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element></host-element>`,\r\n );\r\n expect(host.controller?.getTemplate()).to.equal(nothing);\r\n });\r\n\r\n it('should produce a hover pane template after mousemove, and hide it after mouseleave', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\r\n ></host-element>`,\r\n );\r\n\r\n host.dispatchEvent(new MouseEvent('mousemove'));\r\n // Need to wait a tick for the event handlers to run\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).not.to.equal(nothing); // Is a TemplateResult\r\n\r\n host.dispatchEvent(new MouseEvent('mouseleave'));\r\n // Need to wait for the fade out transition\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 150);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).to.equal(nothing);\r\n });\r\n\r\n it('should produce a hover pane template after mouseenter, even without mousemove', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\r\n ></host-element>`,\r\n );\r\n\r\n host.dispatchEvent(new MouseEvent('mouseenter'));\r\n // Need to wait a tick for the event handlers to run\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).not.to.equal(nothing); // Is a TemplateResult\r\n });\r\n\r\n it('should immediately fade back in if mouse enters while fading out', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\r\n ></host-element>`,\r\n );\r\n\r\n // Enter the host element and wait for the show handlers to run\r\n host.dispatchEvent(new MouseEvent('mousemove'));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n // Leave the host element so it begins fading out, but not all the way\r\n host.dispatchEvent(new MouseEvent('mouseleave'));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 20);\r\n });\r\n\r\n // Re-enter the host element and wait long enough that it would disappear\r\n // if the hide were not cancelled\r\n host.dispatchEvent(new MouseEvent('mousemove'));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 150);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).not.to.equal(nothing);\r\n });\r\n\r\n it('should flip hover pane if it would overflow the viewport', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\r\n ></host-element>`,\r\n );\r\n\r\n host.dispatchEvent(\r\n new MouseEvent('mousemove', { clientX: 800, clientY: 600 }),\r\n );\r\n // Need to wait a tick for the event handlers to run\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n await host.updateComplete;\r\n\r\n expect(host.controller?.getTemplate()).not.to.equal(nothing);\r\n expect(host.getHoverPane()?.getBoundingClientRect()?.right).to.be.lessThan(\r\n window.innerWidth,\r\n );\r\n expect(host.getHoverPane()?.getBoundingClientRect()?.bottom).to.be.lessThan(\r\n window.innerHeight,\r\n );\r\n });\r\n\r\n it('should gracefully handle undefined hover pane from host element', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\r\n ?suppressHoverPane=${true}\r\n ></host-element>`,\r\n );\r\n\r\n host.dispatchEvent(new MouseEvent('mousemove'));\r\n // Need to wait a tick for the event handlers to run\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).not.to.equal(nothing);\r\n\r\n host.dispatchEvent(new MouseEvent('mouseleave'));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 20);\r\n });\r\n\r\n host.dispatchEvent(new MouseEvent('mousemove'));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n host.dispatchEvent(new MouseEvent('mouseleave'));\r\n // Need to wait for the fade out transition\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 150);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).to.equal(nothing);\r\n });\r\n\r\n describe('Touch & long-press', () => {\r\n const getTouchStartEvent = (host: EventTarget) =>\r\n new TouchEvent('touchstart', {\r\n touches: [new Touch({ identifier: 0, target: host })],\r\n });\r\n\r\n it('should produce a hover pane after long press', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{\r\n showDelay: 0,\r\n longPressDelay: 0,\r\n enableLongPress: true,\r\n }}\r\n ></host-element>`,\r\n );\r\n\r\n // Touch the host element and wait for the long press handlers to run\r\n host.dispatchEvent(getTouchStartEvent(host));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).not.to.equal(nothing); // Is a TemplateResult\r\n });\r\n\r\n it('should cancel a long press by moving', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{\r\n showDelay: 0,\r\n longPressDelay: 100,\r\n enableLongPress: true,\r\n }}\r\n ></host-element>`,\r\n );\r\n\r\n // Touch the host element\r\n host.dispatchEvent(getTouchStartEvent(host));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n // Move the touch point, cancelling the long press\r\n host.dispatchEvent(new TouchEvent('touchmove'));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 150);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).to.equal(nothing);\r\n });\r\n\r\n it('should cancel a long press by ending touch', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{\r\n showDelay: 0,\r\n longPressDelay: 100,\r\n enableLongPress: true,\r\n }}\r\n ></host-element>`,\r\n );\r\n\r\n // Touch the host element\r\n host.dispatchEvent(getTouchStartEvent(host));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n // Lift the touch point, cancelling the long press\r\n host.dispatchEvent(new TouchEvent('touchend'));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 150);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).to.equal(nothing);\r\n });\r\n\r\n it('should cancel a long press by cancelling touch (e.g., too many touch points)', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{\r\n showDelay: 0,\r\n longPressDelay: 100,\r\n enableLongPress: true,\r\n }}\r\n ></host-element>`,\r\n );\r\n\r\n // Touch the host element\r\n host.dispatchEvent(getTouchStartEvent(host));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n // Cancel the touch point, also cancelling the long press\r\n host.dispatchEvent(new TouchEvent('touchcancel'));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 150);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).to.equal(nothing);\r\n });\r\n\r\n it('should close the hover pane on mobile when touching the backdrop', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{\r\n showDelay: 0,\r\n hideDelay: 0,\r\n longPressDelay: 0,\r\n enableLongPress: true,\r\n mobileBreakpoint: 9999, // Ensure we get the mobile view\r\n }}\r\n ></host-element>`,\r\n );\r\n\r\n // Touch the host element\r\n host.dispatchEvent(getTouchStartEvent(host));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).not.to.equal(nothing);\r\n\r\n await host.updateComplete;\r\n\r\n // Touch the backdrop\r\n host.shadowRoot\r\n ?.querySelector('#touch-backdrop')\r\n ?.dispatchEvent(new TouchEvent('touchstart'));\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 150);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).to.equal(nothing);\r\n });\r\n });\r\n\r\n describe('keyboard accessibility', () => {\r\n it('should call host getBoundingClientRect if anchor is host', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\r\n ></host-element>`,\r\n );\r\n\r\n const getBoundingClientRectSpy = sinon.spy(host, 'getBoundingClientRect');\r\n\r\n host.dispatchEvent(new FocusEvent('focus'));\r\n // Need to wait a tick for the event handlers to run\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n expect(getBoundingClientRectSpy.called).to.be.true;\r\n });\r\n\r\n it('should show hover pane on focus', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\r\n ></host-element>`,\r\n );\r\n\r\n host.dispatchEvent(new FocusEvent('focus'));\r\n // Need to wait a tick for the event handlers to run\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).not.to.equal(nothing); // Is a TemplateResult\r\n });\r\n\r\n it('should hide hover pane on blur', async () => {\r\n const host = await fixture<HostElement>(\r\n html`<host-element\r\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\r\n ></host-element>`,\r\n );\r\n\r\n host.dispatchEvent(new FocusEvent('focus'));\r\n // Need to wait a tick for the event handlers to run\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).not.to.equal(nothing); // Is a TemplateResult\r\n\r\n host.dispatchEvent(new FocusEvent('blur'));\r\n // Need to wait for the fade out transition\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 150);\r\n });\r\n\r\n expect(host.controller?.getTemplate()).to.equal(nothing);\r\n });\r\n });\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"hover-pane-controller.test.js","sourceRoot":"","sources":["../../../../test/tiles/hover/hover-pane-controller.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport { html, LitElement, nothing, TemplateResult } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport {\n HoverPaneController,\n HoverPaneControllerInterface,\n HoverPaneControllerOptions,\n HoverPaneProperties,\n HoverPaneProviderInterface,\n} from '../../../src/tiles/hover/hover-pane-controller';\nimport type { TileHoverPane } from '../../../src/tiles/hover/tile-hover-pane';\nimport { TileModel } from '../../../src/models';\nimport sinon from 'sinon';\n\n@customElement('host-element')\nclass HostElement extends LitElement implements HoverPaneProviderInterface {\n @property({ type: Object }) controllerOptions?: HoverPaneControllerOptions;\n\n @property({ type: Boolean }) suppressHoverPane: boolean = false;\n\n @query('tile-hover-pane') hoverPane?: TileHoverPane;\n\n controller?: HoverPaneControllerInterface;\n\n render(): TemplateResult {\n return html` ${this.controller?.getTemplate()} `;\n }\n\n protected firstUpdated(): void {\n this.controller = new HoverPaneController(this, this.controllerOptions);\n }\n\n acquireFocus(): void {}\n\n releaseFocus(): void {}\n\n getHoverPane(): HTMLElement | undefined {\n return this.suppressHoverPane ? undefined : this.hoverPane;\n }\n\n getHoverPaneProps(): HoverPaneProperties {\n const tileModel = new TileModel({});\n tileModel.checked = false;\n tileModel.collectionFilesCount = 1;\n tileModel.collections = ['foo', 'bar'];\n tileModel.collectionSize = 1;\n tileModel.commentCount = 1;\n tileModel.contentWarning = false;\n tileModel.creators = ['foo', 'bar'];\n tileModel.favCount = 1;\n tileModel.identifier = 'foo';\n tileModel.itemCount = 1;\n tileModel.loginRequired = false;\n tileModel.mediatype = 'data';\n tileModel.subjects = ['foo', 'bar'];\n tileModel.title = 'foo';\n tileModel.viewCount = 1;\n\n return {\n model: tileModel,\n loggedIn: false,\n suppressBlurring: false,\n sortParam: null,\n };\n }\n}\n\ndescribe('Hover Pane Controller', () => {\n let oldMatchMedia: typeof window.matchMedia;\n let oldOnTouchStart: typeof window.ontouchstart;\n\n before(() => {\n oldMatchMedia = window.matchMedia;\n oldOnTouchStart = window.ontouchstart;\n window.matchMedia = () => ({ matches: true }) as MediaQueryList;\n window.ontouchstart = () => {};\n });\n\n after(() => {\n window.matchMedia = oldMatchMedia;\n window.ontouchstart = oldOnTouchStart;\n });\n\n it('should initially provide empty template', async () => {\n const host = await fixture<HostElement>(\n html`<host-element></host-element>`,\n );\n expect(host.controller?.getTemplate()).to.equal(nothing);\n });\n\n it('should produce a hover pane template after mousemove, and hide it after mouseleave', async () => {\n const host = await fixture<HostElement>(\n html`<host-element\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\n ></host-element>`,\n );\n\n host.dispatchEvent(new MouseEvent('mousemove'));\n // Need to wait a tick for the event handlers to run\n await new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n\n expect(host.controller?.getTemplate()).not.to.equal(nothing); // Is a TemplateResult\n\n host.dispatchEvent(new MouseEvent('mouseleave'));\n // Need to wait for the fade out transition\n await new Promise(resolve => {\n setTimeout(resolve, 150);\n });\n\n expect(host.controller?.getTemplate()).to.equal(nothing);\n });\n\n it('should produce a hover pane template after mouseenter, even without mousemove', async () => {\n const host = await fixture<HostElement>(\n html`<host-element\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\n ></host-element>`,\n );\n\n host.dispatchEvent(new MouseEvent('mouseenter'));\n // Need to wait a tick for the event handlers to run\n await new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n\n expect(host.controller?.getTemplate()).not.to.equal(nothing); // Is a TemplateResult\n });\n\n it('should immediately fade back in if mouse enters while fading out', async () => {\n const host = await fixture<HostElement>(\n html`<host-element\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\n ></host-element>`,\n );\n\n // Enter the host element and wait for the show handlers to run\n host.dispatchEvent(new MouseEvent('mousemove'));\n await new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n\n // Leave the host element so it begins fading out, but not all the way\n host.dispatchEvent(new MouseEvent('mouseleave'));\n await new Promise(resolve => {\n setTimeout(resolve, 20);\n });\n\n // Re-enter the host element and wait long enough that it would disappear\n // if the hide were not cancelled\n host.dispatchEvent(new MouseEvent('mousemove'));\n await new Promise(resolve => {\n setTimeout(resolve, 150);\n });\n\n expect(host.controller?.getTemplate()).not.to.equal(nothing);\n });\n\n it('should flip hover pane if it would overflow the viewport', async () => {\n const host = await fixture<HostElement>(\n html`<host-element\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\n ></host-element>`,\n );\n\n host.dispatchEvent(\n new MouseEvent('mousemove', { clientX: 800, clientY: 600 }),\n );\n // Need to wait a tick for the event handlers to run\n await new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n await host.updateComplete;\n\n expect(host.controller?.getTemplate()).not.to.equal(nothing);\n expect(host.getHoverPane()?.getBoundingClientRect()?.right).to.be.lessThan(\n window.innerWidth,\n );\n expect(host.getHoverPane()?.getBoundingClientRect()?.bottom).to.be.lessThan(\n window.innerHeight,\n );\n });\n\n it('should gracefully handle undefined hover pane from host element', async () => {\n const host = await fixture<HostElement>(\n html`<host-element\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\n ?suppressHoverPane=${true}\n ></host-element>`,\n );\n\n host.dispatchEvent(new MouseEvent('mousemove'));\n // Need to wait a tick for the event handlers to run\n await new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n\n expect(host.controller?.getTemplate()).not.to.equal(nothing);\n\n host.dispatchEvent(new MouseEvent('mouseleave'));\n await new Promise(resolve => {\n setTimeout(resolve, 20);\n });\n\n host.dispatchEvent(new MouseEvent('mousemove'));\n await new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n\n host.dispatchEvent(new MouseEvent('mouseleave'));\n // Need to wait for the fade out transition\n await new Promise(resolve => {\n setTimeout(resolve, 150);\n });\n\n expect(host.controller?.getTemplate()).to.equal(nothing);\n });\n\n describe('Touch & long-press', () => {\n const getTouchStartEvent = (host: EventTarget) =>\n new TouchEvent('touchstart', {\n touches: [new Touch({ identifier: 0, target: host })],\n });\n\n it('should produce a hover pane after long press', async () => {\n const host = await fixture<HostElement>(\n html`<host-element\n .controllerOptions=${{\n showDelay: 0,\n longPressDelay: 0,\n enableLongPress: true,\n }}\n ></host-element>`,\n );\n\n // Touch the host element and wait for the long press handlers to run\n host.dispatchEvent(getTouchStartEvent(host));\n await new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n\n expect(host.controller?.getTemplate()).not.to.equal(nothing); // Is a TemplateResult\n });\n\n it('should cancel a long press by moving', async () => {\n const host = await fixture<HostElement>(\n html`<host-element\n .controllerOptions=${{\n showDelay: 0,\n longPressDelay: 100,\n enableLongPress: true,\n }}\n ></host-element>`,\n );\n\n // Touch the host element\n host.dispatchEvent(getTouchStartEvent(host));\n await new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n\n // Move the touch point, cancelling the long press\n host.dispatchEvent(new TouchEvent('touchmove'));\n await new Promise(resolve => {\n setTimeout(resolve, 150);\n });\n\n expect(host.controller?.getTemplate()).to.equal(nothing);\n });\n\n it('should cancel a long press by ending touch', async () => {\n const host = await fixture<HostElement>(\n html`<host-element\n .controllerOptions=${{\n showDelay: 0,\n longPressDelay: 100,\n enableLongPress: true,\n }}\n ></host-element>`,\n );\n\n // Touch the host element\n host.dispatchEvent(getTouchStartEvent(host));\n await new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n\n // Lift the touch point, cancelling the long press\n host.dispatchEvent(new TouchEvent('touchend'));\n await new Promise(resolve => {\n setTimeout(resolve, 150);\n });\n\n expect(host.controller?.getTemplate()).to.equal(nothing);\n });\n\n it('should cancel a long press by cancelling touch (e.g., too many touch points)', async () => {\n const host = await fixture<HostElement>(\n html`<host-element\n .controllerOptions=${{\n showDelay: 0,\n longPressDelay: 100,\n enableLongPress: true,\n }}\n ></host-element>`,\n );\n\n // Touch the host element\n host.dispatchEvent(getTouchStartEvent(host));\n await new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n\n // Cancel the touch point, also cancelling the long press\n host.dispatchEvent(new TouchEvent('touchcancel'));\n await new Promise(resolve => {\n setTimeout(resolve, 150);\n });\n\n expect(host.controller?.getTemplate()).to.equal(nothing);\n });\n\n it('should close the hover pane on mobile when touching the backdrop', async () => {\n const host = await fixture<HostElement>(\n html`<host-element\n .controllerOptions=${{\n showDelay: 0,\n hideDelay: 0,\n longPressDelay: 0,\n enableLongPress: true,\n mobileBreakpoint: 9999, // Ensure we get the mobile view\n }}\n ></host-element>`,\n );\n\n // Touch the host element\n host.dispatchEvent(getTouchStartEvent(host));\n await new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n\n expect(host.controller?.getTemplate()).not.to.equal(nothing);\n\n await host.updateComplete;\n\n // Touch the backdrop\n host.shadowRoot\n ?.querySelector('#touch-backdrop')\n ?.dispatchEvent(new TouchEvent('touchstart'));\n await new Promise(resolve => {\n setTimeout(resolve, 150);\n });\n\n expect(host.controller?.getTemplate()).to.equal(nothing);\n });\n });\n\n describe('keyboard accessibility', () => {\n it('should call host getBoundingClientRect if anchor is host', async () => {\n const host = await fixture<HostElement>(\n html`<host-element\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\n ></host-element>`,\n );\n\n const getBoundingClientRectSpy = sinon.spy(host, 'getBoundingClientRect');\n\n host.dispatchEvent(new FocusEvent('focus'));\n // Need to wait a tick for the event handlers to run\n await new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n\n expect(getBoundingClientRectSpy.called).to.be.true;\n });\n\n it('should show hover pane on focus', async () => {\n const host = await fixture<HostElement>(\n html`<host-element\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\n ></host-element>`,\n );\n\n host.dispatchEvent(new FocusEvent('focus'));\n // Need to wait a tick for the event handlers to run\n await new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n\n expect(host.controller?.getTemplate()).not.to.equal(nothing); // Is a TemplateResult\n });\n\n it('should hide hover pane on blur', async () => {\n const host = await fixture<HostElement>(\n html`<host-element\n .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}\n ></host-element>`,\n );\n\n host.dispatchEvent(new FocusEvent('focus'));\n // Need to wait a tick for the event handlers to run\n await new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n\n expect(host.controller?.getTemplate()).not.to.equal(nothing); // Is a TemplateResult\n\n host.dispatchEvent(new FocusEvent('blur'));\n // Need to wait for the fade out transition\n await new Promise(resolve => {\n setTimeout(resolve, 150);\n });\n\n expect(host.controller?.getTemplate()).to.equal(nothing);\n });\n });\n});\n"]}
|
|
@@ -3,52 +3,48 @@ import { html } from 'lit';
|
|
|
3
3
|
import '../../../src/tiles/hover/tile-hover-pane';
|
|
4
4
|
describe('Tile Hover Pane', () => {
|
|
5
5
|
it('should render initial component', async () => {
|
|
6
|
-
var _a, _b;
|
|
7
6
|
const el = await fixture(html `<tile-hover-pane></tile-hover-pane>`);
|
|
8
|
-
const container =
|
|
9
|
-
const listView =
|
|
7
|
+
const container = el.shadowRoot?.querySelector('#container');
|
|
8
|
+
const listView = el.shadowRoot?.querySelector('tile-list');
|
|
10
9
|
expect(container).to.exist;
|
|
11
10
|
expect(listView).to.exist;
|
|
12
11
|
});
|
|
13
12
|
it('should render component with header element', async () => {
|
|
14
|
-
var _a, _b;
|
|
15
13
|
const model = {
|
|
16
14
|
mediatype: 'texts',
|
|
17
15
|
collections: ['collection1', 'fav-jack-sparrow'],
|
|
18
16
|
};
|
|
19
17
|
const el = await fixture(html `<tile-hover-pane .model=${model}></tile-hover-pane>`);
|
|
20
|
-
const container =
|
|
21
|
-
const listView = container
|
|
22
|
-
const headerElement = container
|
|
18
|
+
const container = el.shadowRoot?.querySelector('#container');
|
|
19
|
+
const listView = container?.querySelector('tile-list');
|
|
20
|
+
const headerElement = container?.querySelector('#list-line-header');
|
|
23
21
|
expect(container).to.exist;
|
|
24
22
|
expect(listView).to.exist;
|
|
25
23
|
expect(headerElement).to.exist;
|
|
26
|
-
expect(
|
|
24
|
+
expect(headerElement?.querySelector('a')?.getAttribute('href')).contains('/details/collection1');
|
|
27
25
|
});
|
|
28
26
|
it('should NOT render header element when fav- collection', async () => {
|
|
29
|
-
var _a;
|
|
30
27
|
const model = {
|
|
31
28
|
mediatype: 'texts',
|
|
32
29
|
collections: ['fav-jack-sparrow'],
|
|
33
30
|
};
|
|
34
31
|
const el = await fixture(html `<tile-hover-pane .model=${model}></tile-hover-pane>`);
|
|
35
|
-
const container =
|
|
36
|
-
const listView = container
|
|
37
|
-
const headerElement = container
|
|
32
|
+
const container = el.shadowRoot?.querySelector('#container');
|
|
33
|
+
const listView = container?.querySelector('tile-list');
|
|
34
|
+
const headerElement = container?.querySelector('#list-line-header');
|
|
38
35
|
expect(container).to.exist;
|
|
39
36
|
expect(listView).to.exist;
|
|
40
37
|
expect(headerElement).not.exist;
|
|
41
38
|
});
|
|
42
39
|
it('should NOT render header element when no collections', async () => {
|
|
43
|
-
var _a;
|
|
44
40
|
const model = {
|
|
45
41
|
mediatype: 'texts',
|
|
46
42
|
collections: [],
|
|
47
43
|
};
|
|
48
44
|
const el = await fixture(html `<tile-hover-pane .model=${model}></tile-hover-pane>`);
|
|
49
|
-
const container =
|
|
50
|
-
const listView = container
|
|
51
|
-
const headerElement = container
|
|
45
|
+
const container = el.shadowRoot?.querySelector('#container');
|
|
46
|
+
const listView = container?.querySelector('tile-list');
|
|
47
|
+
const headerElement = container?.querySelector('#list-line-header');
|
|
52
48
|
expect(container).to.exist;
|
|
53
49
|
expect(listView).to.exist;
|
|
54
50
|
expect(headerElement).not.exist;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tile-hover-pane.test.js","sourceRoot":"","sources":["../../../../test/tiles/hover/tile-hover-pane.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAI3B,OAAO,0CAA0C,CAAC;AAElD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE
|
|
1
|
+
{"version":3,"file":"tile-hover-pane.test.js","sourceRoot":"","sources":["../../../../test/tiles/hover/tile-hover-pane.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport type { TileModel } from '../../../src/models';\nimport type { TileHoverPane } from '../../../src/tiles/hover/tile-hover-pane';\n\nimport '../../../src/tiles/hover/tile-hover-pane';\n\ndescribe('Tile Hover Pane', () => {\n it('should render initial component', async () => {\n const el = await fixture<TileHoverPane>(\n html`<tile-hover-pane></tile-hover-pane>`,\n );\n\n const container = el.shadowRoot?.querySelector('#container');\n const listView = el.shadowRoot?.querySelector('tile-list');\n\n expect(container).to.exist;\n expect(listView).to.exist;\n });\n\n it('should render component with header element', async () => {\n const model: Partial<TileModel> = {\n mediatype: 'texts',\n collections: ['collection1', 'fav-jack-sparrow'],\n };\n\n const el = await fixture<TileHoverPane>(\n html`<tile-hover-pane .model=${model}></tile-hover-pane>`,\n );\n\n const container = el.shadowRoot?.querySelector('#container');\n const listView = container?.querySelector('tile-list');\n const headerElement = container?.querySelector('#list-line-header');\n\n expect(container).to.exist;\n expect(listView).to.exist;\n expect(headerElement).to.exist;\n expect(headerElement?.querySelector('a')?.getAttribute('href')).contains(\n '/details/collection1',\n );\n });\n\n it('should NOT render header element when fav- collection', async () => {\n const model: Partial<TileModel> = {\n mediatype: 'texts',\n collections: ['fav-jack-sparrow'],\n };\n\n const el = await fixture<TileHoverPane>(\n html`<tile-hover-pane .model=${model}></tile-hover-pane>`,\n );\n\n const container = el.shadowRoot?.querySelector('#container');\n const listView = container?.querySelector('tile-list');\n const headerElement = container?.querySelector('#list-line-header');\n\n expect(container).to.exist;\n expect(listView).to.exist;\n expect(headerElement).not.exist;\n });\n\n it('should NOT render header element when no collections', async () => {\n const model: Partial<TileModel> = {\n mediatype: 'texts',\n collections: [],\n };\n\n const el = await fixture<TileHoverPane>(\n html`<tile-hover-pane .model=${model}></tile-hover-pane>`,\n );\n\n const container = el.shadowRoot?.querySelector('#container');\n const listView = container?.querySelector('tile-list');\n const headerElement = container?.querySelector('#list-line-header');\n\n expect(container).to.exist;\n expect(listView).to.exist;\n expect(headerElement).not.exist;\n });\n});\n"]}
|
|
@@ -3,13 +3,12 @@ import { html } from 'lit';
|
|
|
3
3
|
import '../../../src/tiles/list/tile-list-compact';
|
|
4
4
|
describe('List Tile Compact', () => {
|
|
5
5
|
it('should render initial component', async () => {
|
|
6
|
-
var _a, _b, _c, _d, _e;
|
|
7
6
|
const el = await fixture(html `<tile-list-compact></tile-list-compact>`);
|
|
8
|
-
const listContainer =
|
|
9
|
-
const itemTitle =
|
|
10
|
-
const imageBlock =
|
|
11
|
-
const itemIcon =
|
|
12
|
-
const itemViews =
|
|
7
|
+
const listContainer = el.shadowRoot?.querySelector('#list-line');
|
|
8
|
+
const itemTitle = el.shadowRoot?.querySelector('#title');
|
|
9
|
+
const imageBlock = el.shadowRoot?.querySelector('image-block');
|
|
10
|
+
const itemIcon = el.shadowRoot?.querySelector('#icon');
|
|
11
|
+
const itemViews = el.shadowRoot?.querySelector('#views');
|
|
13
12
|
expect(listContainer).to.exist;
|
|
14
13
|
expect(itemTitle).to.exist;
|
|
15
14
|
expect(imageBlock).to.exist;
|
|
@@ -17,189 +16,177 @@ describe('List Tile Compact', () => {
|
|
|
17
16
|
expect(itemViews).to.exist;
|
|
18
17
|
});
|
|
19
18
|
it('should render with creator element with title', async () => {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
></tile-list-compact>
|
|
19
|
+
const el = await fixture(html `
|
|
20
|
+
<tile-list-compact
|
|
21
|
+
.model=${{ creators: ['someone'] }}
|
|
22
|
+
></tile-list-compact>
|
|
25
23
|
`);
|
|
26
|
-
const creator =
|
|
24
|
+
const creator = el.shadowRoot?.querySelector('#creator');
|
|
27
25
|
expect(creator).to.exist;
|
|
28
26
|
});
|
|
29
27
|
it('should render title link with model href if provided', async () => {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
.
|
|
34
|
-
|
|
35
|
-
></tile-list-compact>
|
|
28
|
+
const el = await fixture(html `
|
|
29
|
+
<tile-list-compact
|
|
30
|
+
.baseNavigationUrl=${''}
|
|
31
|
+
.model=${{ identifier: 'id', title: 'foo', href: '/foo/bar' }}
|
|
32
|
+
></tile-list-compact>
|
|
36
33
|
`);
|
|
37
|
-
const title =
|
|
34
|
+
const title = el.shadowRoot?.querySelector('#title');
|
|
38
35
|
expect(title).to.exist;
|
|
39
|
-
expect(title
|
|
36
|
+
expect(title?.getAttribute('href')).to.equal('/foo/bar');
|
|
40
37
|
});
|
|
41
38
|
it('should render weekly views when sorting by week', async () => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
.
|
|
46
|
-
|
|
47
|
-
>
|
|
48
|
-
</tile-list-compact>
|
|
39
|
+
const el = await fixture(html `
|
|
40
|
+
<tile-list-compact
|
|
41
|
+
.model=${{ viewCount: 50, weeklyViewCount: 10 }}
|
|
42
|
+
.sortParam=${{ field: 'week', direction: 'desc' }}
|
|
43
|
+
>
|
|
44
|
+
</tile-list-compact>
|
|
49
45
|
`);
|
|
50
|
-
const viewsColumn =
|
|
46
|
+
const viewsColumn = el.shadowRoot?.getElementById('views');
|
|
51
47
|
expect(viewsColumn).to.exist;
|
|
52
|
-
expect(
|
|
48
|
+
expect(viewsColumn?.textContent?.trim()).to.equal('10');
|
|
53
49
|
});
|
|
54
50
|
it('should render 0 for views if missing model', async () => {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
</tile-list-compact>
|
|
51
|
+
const el = await fixture(html `
|
|
52
|
+
<tile-list-compact .sortParam=${{ field: 'week', direction: 'desc' }}>
|
|
53
|
+
</tile-list-compact>
|
|
59
54
|
`);
|
|
60
|
-
const viewsColumn =
|
|
55
|
+
const viewsColumn = el.shadowRoot?.getElementById('views');
|
|
61
56
|
expect(viewsColumn).to.exist;
|
|
62
|
-
expect(
|
|
57
|
+
expect(viewsColumn?.textContent?.trim()).to.equal('0');
|
|
63
58
|
});
|
|
64
59
|
it('should render published date when sorting by it', async () => {
|
|
65
|
-
var _a, _b;
|
|
66
60
|
const model = {
|
|
67
61
|
dateAdded: new Date(2010, 0, 2),
|
|
68
62
|
dateArchived: new Date(2011, 0, 2),
|
|
69
63
|
datePublished: new Date(2012, 0, 2),
|
|
70
64
|
dateReviewed: new Date(2013, 0, 2),
|
|
71
65
|
};
|
|
72
|
-
const el = await fixture(html `
|
|
73
|
-
<tile-list-compact
|
|
74
|
-
.model=${model}
|
|
75
|
-
.sortParam=${{ field: 'date', direction: 'desc' }}
|
|
76
|
-
>
|
|
77
|
-
</tile-list-compact>
|
|
66
|
+
const el = await fixture(html `
|
|
67
|
+
<tile-list-compact
|
|
68
|
+
.model=${model}
|
|
69
|
+
.sortParam=${{ field: 'date', direction: 'desc' }}
|
|
70
|
+
>
|
|
71
|
+
</tile-list-compact>
|
|
78
72
|
`);
|
|
79
|
-
const dateColumn =
|
|
73
|
+
const dateColumn = el.shadowRoot?.getElementById('date');
|
|
80
74
|
expect(dateColumn).to.exist;
|
|
81
|
-
expect(
|
|
75
|
+
expect(dateColumn?.textContent?.trim()).to.equal('Jan 02, 2012');
|
|
82
76
|
});
|
|
83
77
|
it('should render added date when sorting by it', async () => {
|
|
84
|
-
var _a, _b;
|
|
85
78
|
const model = {
|
|
86
79
|
dateAdded: new Date(2010, 0, 2),
|
|
87
80
|
dateArchived: new Date(2011, 0, 2),
|
|
88
81
|
datePublished: new Date(2012, 0, 2),
|
|
89
82
|
dateReviewed: new Date(2013, 0, 2),
|
|
90
83
|
};
|
|
91
|
-
const el = await fixture(html `
|
|
92
|
-
<tile-list-compact
|
|
93
|
-
.model=${model}
|
|
94
|
-
.sortParam=${{ field: 'addeddate', direction: 'desc' }}
|
|
95
|
-
>
|
|
96
|
-
</tile-list-compact>
|
|
84
|
+
const el = await fixture(html `
|
|
85
|
+
<tile-list-compact
|
|
86
|
+
.model=${model}
|
|
87
|
+
.sortParam=${{ field: 'addeddate', direction: 'desc' }}
|
|
88
|
+
>
|
|
89
|
+
</tile-list-compact>
|
|
97
90
|
`);
|
|
98
|
-
const dateColumn =
|
|
91
|
+
const dateColumn = el.shadowRoot?.getElementById('date');
|
|
99
92
|
expect(dateColumn).to.exist;
|
|
100
|
-
expect(
|
|
93
|
+
expect(dateColumn?.textContent?.trim()).to.equal('Jan 02, 2010');
|
|
101
94
|
});
|
|
102
95
|
it('should render archived date when sorting by it', async () => {
|
|
103
|
-
var _a, _b;
|
|
104
96
|
const model = {
|
|
105
97
|
dateAdded: new Date(2010, 0, 2),
|
|
106
98
|
dateArchived: new Date(2011, 0, 2),
|
|
107
99
|
datePublished: new Date(2012, 0, 2),
|
|
108
100
|
dateReviewed: new Date(2013, 0, 2),
|
|
109
101
|
};
|
|
110
|
-
const el = await fixture(html `
|
|
111
|
-
<tile-list-compact
|
|
112
|
-
.model=${model}
|
|
113
|
-
.sortParam=${{ field: 'publicdate', direction: 'desc' }}
|
|
114
|
-
>
|
|
115
|
-
</tile-list-compact>
|
|
102
|
+
const el = await fixture(html `
|
|
103
|
+
<tile-list-compact
|
|
104
|
+
.model=${model}
|
|
105
|
+
.sortParam=${{ field: 'publicdate', direction: 'desc' }}
|
|
106
|
+
>
|
|
107
|
+
</tile-list-compact>
|
|
116
108
|
`);
|
|
117
|
-
const dateColumn =
|
|
109
|
+
const dateColumn = el.shadowRoot?.getElementById('date');
|
|
118
110
|
expect(dateColumn).to.exist;
|
|
119
|
-
expect(
|
|
111
|
+
expect(dateColumn?.textContent?.trim()).to.equal('Jan 02, 2011');
|
|
120
112
|
});
|
|
121
113
|
it('should render reviewed date when sorting by it', async () => {
|
|
122
|
-
var _a, _b;
|
|
123
114
|
const model = {
|
|
124
115
|
dateAdded: new Date(2010, 0, 2),
|
|
125
116
|
dateArchived: new Date(2011, 0, 2),
|
|
126
117
|
datePublished: new Date(2012, 0, 2),
|
|
127
118
|
dateReviewed: new Date(2013, 0, 2),
|
|
128
119
|
};
|
|
129
|
-
const el = await fixture(html `
|
|
130
|
-
<tile-list-compact
|
|
131
|
-
.model=${model}
|
|
132
|
-
.sortParam=${{ field: 'reviewdate', direction: 'desc' }}
|
|
133
|
-
>
|
|
134
|
-
</tile-list-compact>
|
|
120
|
+
const el = await fixture(html `
|
|
121
|
+
<tile-list-compact
|
|
122
|
+
.model=${model}
|
|
123
|
+
.sortParam=${{ field: 'reviewdate', direction: 'desc' }}
|
|
124
|
+
>
|
|
125
|
+
</tile-list-compact>
|
|
135
126
|
`);
|
|
136
|
-
const dateColumn =
|
|
127
|
+
const dateColumn = el.shadowRoot?.getElementById('date');
|
|
137
128
|
expect(dateColumn).to.exist;
|
|
138
|
-
expect(
|
|
129
|
+
expect(dateColumn?.textContent?.trim()).to.equal('Jan 02, 2013');
|
|
139
130
|
});
|
|
140
131
|
it('should only show the year for a date published of Jan 1 at midnight UTC', async () => {
|
|
141
|
-
var _a, _b;
|
|
142
132
|
const model = {
|
|
143
133
|
datePublished: new Date('2012-01-01T00:00:00Z'),
|
|
144
134
|
};
|
|
145
|
-
const el = await fixture(html `
|
|
146
|
-
<tile-list-compact
|
|
147
|
-
.model=${model}
|
|
148
|
-
.sortParam=${{ field: 'date', direction: 'desc' }}
|
|
149
|
-
>
|
|
150
|
-
</tile-list-compact>
|
|
135
|
+
const el = await fixture(html `
|
|
136
|
+
<tile-list-compact
|
|
137
|
+
.model=${model}
|
|
138
|
+
.sortParam=${{ field: 'date', direction: 'desc' }}
|
|
139
|
+
>
|
|
140
|
+
</tile-list-compact>
|
|
151
141
|
`);
|
|
152
|
-
const dateColumn =
|
|
142
|
+
const dateColumn = el.shadowRoot?.getElementById('date');
|
|
153
143
|
expect(dateColumn).to.exist;
|
|
154
|
-
expect(
|
|
144
|
+
expect(dateColumn?.textContent?.trim()).to.equal('2012');
|
|
155
145
|
});
|
|
156
146
|
it('should show full date added/archived/reviewed, even on Jan 1 at midnight UTC', async () => {
|
|
157
|
-
var _a, _b, _c, _d, _e, _f;
|
|
158
147
|
const model = {
|
|
159
148
|
dateAdded: new Date(2010, 0, 1, 0, 0, 0, 0),
|
|
160
149
|
dateArchived: new Date(2011, 0, 1, 0, 0, 0, 0),
|
|
161
150
|
datePublished: new Date(2012, 0, 1, 0, 0, 0, 0),
|
|
162
151
|
dateReviewed: new Date(2013, 0, 1, 0, 0, 0, 0),
|
|
163
152
|
};
|
|
164
|
-
const el = await fixture(html `
|
|
165
|
-
<tile-list-compact
|
|
166
|
-
.model=${model}
|
|
167
|
-
.sortParam=${{ field: 'addeddate', direction: 'desc' }}
|
|
168
|
-
>
|
|
169
|
-
</tile-list-compact>
|
|
153
|
+
const el = await fixture(html `
|
|
154
|
+
<tile-list-compact
|
|
155
|
+
.model=${model}
|
|
156
|
+
.sortParam=${{ field: 'addeddate', direction: 'desc' }}
|
|
157
|
+
>
|
|
158
|
+
</tile-list-compact>
|
|
170
159
|
`);
|
|
171
|
-
let dateColumn =
|
|
160
|
+
let dateColumn = el.shadowRoot?.getElementById('date');
|
|
172
161
|
expect(dateColumn).to.exist;
|
|
173
|
-
expect(
|
|
162
|
+
expect(dateColumn?.textContent?.trim()).to.equal('Jan 01, 2010');
|
|
174
163
|
el.sortParam = { field: 'publicdate', direction: 'desc' };
|
|
175
164
|
await el.updateComplete;
|
|
176
|
-
dateColumn =
|
|
165
|
+
dateColumn = el.shadowRoot?.getElementById('date');
|
|
177
166
|
expect(dateColumn).to.exist;
|
|
178
|
-
expect(
|
|
167
|
+
expect(dateColumn?.textContent?.trim()).to.equal('Jan 01, 2011');
|
|
179
168
|
el.sortParam = { field: 'reviewdate', direction: 'desc' };
|
|
180
169
|
await el.updateComplete;
|
|
181
|
-
dateColumn =
|
|
170
|
+
dateColumn = el.shadowRoot?.getElementById('date');
|
|
182
171
|
expect(dateColumn).to.exist;
|
|
183
|
-
expect(
|
|
172
|
+
expect(dateColumn?.textContent?.trim()).to.equal('Jan 01, 2013');
|
|
184
173
|
});
|
|
185
174
|
it('should display dates in UTC time zone by default', async () => {
|
|
186
|
-
var _a, _b;
|
|
187
175
|
const model = {
|
|
188
176
|
datePublished: new Date('2012-02-15T00:00:00Z'),
|
|
189
177
|
};
|
|
190
|
-
const el = await fixture(html `
|
|
191
|
-
<tile-list-compact
|
|
192
|
-
.model=${model}
|
|
193
|
-
.sortParam=${{ field: 'date', direction: 'desc' }}
|
|
194
|
-
>
|
|
195
|
-
</tile-list-compact>
|
|
178
|
+
const el = await fixture(html `
|
|
179
|
+
<tile-list-compact
|
|
180
|
+
.model=${model}
|
|
181
|
+
.sortParam=${{ field: 'date', direction: 'desc' }}
|
|
182
|
+
>
|
|
183
|
+
</tile-list-compact>
|
|
196
184
|
`);
|
|
197
|
-
const dateColumn =
|
|
185
|
+
const dateColumn = el.shadowRoot?.getElementById('date');
|
|
198
186
|
expect(dateColumn).to.exist;
|
|
199
|
-
expect(
|
|
187
|
+
expect(dateColumn?.textContent?.trim()).to.equal('Feb 15, 2012');
|
|
200
188
|
});
|
|
201
189
|
it('should display dates in local time when useLocalTime option is true', async () => {
|
|
202
|
-
var _a, _b;
|
|
203
190
|
// Expected behavior depends on the time zone offset where the testing occurs
|
|
204
191
|
const offset = new Date().getTimezoneOffset();
|
|
205
192
|
let datePublished, expected;
|
|
@@ -221,31 +208,30 @@ describe('List Tile Compact', () => {
|
|
|
221
208
|
const model = {
|
|
222
209
|
datePublished,
|
|
223
210
|
};
|
|
224
|
-
const el = await fixture(html `
|
|
225
|
-
<tile-list-compact
|
|
226
|
-
useLocalTime
|
|
227
|
-
.model=${model}
|
|
228
|
-
.sortParam=${{ field: 'date', direction: 'desc' }}
|
|
229
|
-
>
|
|
230
|
-
</tile-list-compact>
|
|
211
|
+
const el = await fixture(html `
|
|
212
|
+
<tile-list-compact
|
|
213
|
+
useLocalTime
|
|
214
|
+
.model=${model}
|
|
215
|
+
.sortParam=${{ field: 'date', direction: 'desc' }}
|
|
216
|
+
>
|
|
217
|
+
</tile-list-compact>
|
|
231
218
|
`);
|
|
232
|
-
const dateColumn =
|
|
219
|
+
const dateColumn = el.shadowRoot?.getElementById('date');
|
|
233
220
|
expect(dateColumn).to.exist;
|
|
234
|
-
expect(
|
|
221
|
+
expect(dateColumn?.textContent?.trim()).to.equal(expected);
|
|
235
222
|
});
|
|
236
223
|
it('should show the first creator matching the letter filter, if defined', async () => {
|
|
237
|
-
var _a, _b;
|
|
238
224
|
const model = {
|
|
239
225
|
creator: 'foo',
|
|
240
226
|
creators: ['foo', 'bar', 'baz'],
|
|
241
227
|
};
|
|
242
|
-
const el = await fixture(html `
|
|
243
|
-
<tile-list-compact .model=${model} .creatorFilter=${'B'}>
|
|
244
|
-
</tile-list-compact>
|
|
228
|
+
const el = await fixture(html `
|
|
229
|
+
<tile-list-compact .model=${model} .creatorFilter=${'B'}>
|
|
230
|
+
</tile-list-compact>
|
|
245
231
|
`);
|
|
246
|
-
const creator =
|
|
232
|
+
const creator = el.shadowRoot?.getElementById('creator');
|
|
247
233
|
expect(creator).to.exist;
|
|
248
|
-
expect(
|
|
234
|
+
expect(creator?.textContent?.trim()).to.equal('bar');
|
|
249
235
|
});
|
|
250
236
|
});
|
|
251
237
|
//# sourceMappingURL=tile-list-compact.test.js.map
|