@internetarchive/collection-browser 4.3.1-alpha-webdev8165.0 → 4.3.1-alpha-webdev8257.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/dist/index.d.ts +1 -0
- package/dist/index.js.map +1 -1
- package/dist/src/app-root.d.ts +8 -0
- package/dist/src/app-root.js +698 -672
- package/dist/src/app-root.js.map +1 -1
- package/dist/src/collection-browser.d.ts +8 -0
- package/dist/src/collection-browser.js +779 -762
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
- package/dist/src/manage/manage-bar.js +77 -77
- package/dist/src/manage/manage-bar.js.map +1 -1
- package/dist/src/models.d.ts +6 -0
- package/dist/src/models.js +16 -7
- package/dist/src/models.js.map +1 -1
- package/dist/src/restoration-state-handler.js +3 -1
- package/dist/src/restoration-state-handler.js.map +1 -1
- package/dist/src/styles/tile-action-styles.d.ts +14 -0
- package/dist/src/styles/tile-action-styles.js +52 -0
- package/dist/src/styles/tile-action-styles.js.map +1 -0
- package/dist/src/tiles/base-tile-component.d.ts +17 -1
- package/dist/src/tiles/base-tile-component.js +48 -1
- package/dist/src/tiles/base-tile-component.js.map +1 -1
- package/dist/src/tiles/grid/item-tile.js +1 -0
- package/dist/src/tiles/grid/item-tile.js.map +1 -1
- package/dist/src/tiles/list/tile-list-compact-header.js +66 -46
- package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -1
- package/dist/src/tiles/list/tile-list-compact.d.ts +1 -1
- package/dist/src/tiles/list/tile-list-compact.js +132 -100
- package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
- package/dist/src/tiles/list/tile-list.d.ts +1 -1
- package/dist/src/tiles/list/tile-list.js +316 -298
- package/dist/src/tiles/list/tile-list.js.map +1 -1
- package/dist/src/tiles/models.d.ts +14 -0
- package/dist/src/tiles/models.js.map +1 -1
- package/dist/src/tiles/tile-dispatcher.d.ts +14 -0
- package/dist/src/tiles/tile-dispatcher.js +107 -4
- package/dist/src/tiles/tile-dispatcher.js.map +1 -1
- package/dist/src/tiles/tile-display-value-provider.js.map +1 -1
- package/dist/test/data-source/collection-browser-data-source.test.js +2 -2
- package/dist/test/data-source/collection-browser-data-source.test.js.map +1 -1
- package/dist/test/manage/manage-bar.test.js +33 -33
- package/dist/test/manage/manage-bar.test.js.map +1 -1
- package/dist/test/restoration-state-handler.test.js +0 -70
- package/dist/test/restoration-state-handler.test.js.map +1 -1
- package/dist/test/tiles/list/tile-list-compact-header.test.js +12 -12
- package/dist/test/tiles/list/tile-list-compact-header.test.js.map +1 -1
- package/dist/test/tiles/list/tile-list.test.js +134 -134
- package/dist/test/tiles/list/tile-list.test.js.map +1 -1
- package/index.ts +1 -0
- package/package.json +1 -1
- package/src/app-root.ts +1281 -1251
- package/src/collection-browser.ts +3063 -3049
- package/src/data-source/collection-browser-data-source.ts +1465 -1465
- package/src/manage/manage-bar.ts +276 -276
- package/src/models.ts +895 -879
- package/src/restoration-state-handler.ts +550 -546
- package/src/styles/tile-action-styles.ts +52 -0
- package/src/tiles/base-tile-component.ts +57 -1
- package/src/tiles/grid/item-tile.ts +1 -0
- package/src/tiles/list/tile-list-compact-header.ts +106 -86
- package/src/tiles/list/tile-list-compact.ts +273 -239
- package/src/tiles/list/tile-list.ts +718 -700
- package/src/tiles/models.ts +16 -0
- package/src/tiles/tile-dispatcher.ts +114 -4
- package/src/tiles/tile-display-value-provider.ts +134 -134
- package/test/data-source/collection-browser-data-source.test.ts +193 -193
- package/test/manage/manage-bar.test.ts +347 -347
- package/test/restoration-state-handler.test.ts +480 -569
- package/test/tiles/list/tile-list-compact-header.test.ts +43 -43
- package/test/tiles/list/tile-list.test.ts +576 -576
|
@@ -122,6 +122,13 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
122
122
|
* If item management UI active
|
|
123
123
|
*/
|
|
124
124
|
this.isManageView = false;
|
|
125
|
+
/** Action buttons to display on each tile */
|
|
126
|
+
this.tileActions = [];
|
|
127
|
+
/**
|
|
128
|
+
* The simplified layout to apply to grid-mode tiles, if any. See
|
|
129
|
+
* `LayoutType` for available options. Has no effect on list display modes.
|
|
130
|
+
*/
|
|
131
|
+
this.tileLayoutType = 'default';
|
|
125
132
|
this.manageViewLabel = 'Select items to remove';
|
|
126
133
|
/** Whether to replace the default sort options with a slot for customization (default: false) */
|
|
127
134
|
this.enableSortOptionsSlot = false;
|
|
@@ -406,32 +413,32 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
406
413
|
}
|
|
407
414
|
}
|
|
408
415
|
render() {
|
|
409
|
-
return html `
|
|
416
|
+
return html `
|
|
410
417
|
${this.showSmartFacetBar && this.placeholderType === null
|
|
411
|
-
? html `<smart-facet-bar
|
|
412
|
-
.query=${this.baseQuery}
|
|
413
|
-
.aggregations=${this.dataSource.aggregations}
|
|
414
|
-
.selectedFacets=${this.selectedFacets}
|
|
415
|
-
.collectionTitles=${this.dataSource.collectionTitles}
|
|
416
|
-
.filterToggleShown=${!this.mobileView}
|
|
417
|
-
.filterToggleActive=${this.facetPaneVisible}
|
|
418
|
-
.label=${this.smartFacetBarLabel}
|
|
419
|
-
@facetsChanged=${this.facetsChanged}
|
|
418
|
+
? html `<smart-facet-bar
|
|
419
|
+
.query=${this.baseQuery}
|
|
420
|
+
.aggregations=${this.dataSource.aggregations}
|
|
421
|
+
.selectedFacets=${this.selectedFacets}
|
|
422
|
+
.collectionTitles=${this.dataSource.collectionTitles}
|
|
423
|
+
.filterToggleShown=${!this.mobileView}
|
|
424
|
+
.filterToggleActive=${this.facetPaneVisible}
|
|
425
|
+
.label=${this.smartFacetBarLabel}
|
|
426
|
+
@facetsChanged=${this.facetsChanged}
|
|
420
427
|
@filtersToggled=${() => {
|
|
421
428
|
this.facetPaneVisible = !this.facetPaneVisible;
|
|
422
429
|
this.emitFacetPaneVisibilityChanged();
|
|
423
|
-
}}
|
|
430
|
+
}}
|
|
424
431
|
></smart-facet-bar>`
|
|
425
|
-
: nothing}
|
|
426
|
-
|
|
427
|
-
<div
|
|
428
|
-
id="content-container"
|
|
429
|
-
class=${this.mobileView ? 'mobile' : 'desktop'}
|
|
430
|
-
>
|
|
432
|
+
: nothing}
|
|
433
|
+
|
|
434
|
+
<div
|
|
435
|
+
id="content-container"
|
|
436
|
+
class=${this.mobileView ? 'mobile' : 'desktop'}
|
|
437
|
+
>
|
|
431
438
|
${this.placeholderType
|
|
432
439
|
? this.emptyPlaceholderTemplate
|
|
433
|
-
: this.collectionBrowserTemplate}
|
|
434
|
-
</div>
|
|
440
|
+
: this.collectionBrowserTemplate}
|
|
441
|
+
</div>
|
|
435
442
|
`;
|
|
436
443
|
}
|
|
437
444
|
/**
|
|
@@ -475,23 +482,23 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
475
482
|
* Template for the placeholder content to show when no results are available.
|
|
476
483
|
*/
|
|
477
484
|
get emptyPlaceholderTemplate() {
|
|
478
|
-
return html `
|
|
479
|
-
<empty-placeholder
|
|
480
|
-
.placeholderType=${this.placeholderType}
|
|
481
|
-
?isMobileView=${this.mobileView}
|
|
482
|
-
?isCollection=${!!this.withinCollection}
|
|
483
|
-
.detailMessage=${this.dataSource.queryErrorMessage ?? ''}
|
|
484
|
-
.baseNavigationUrl=${this.baseNavigationUrl}
|
|
485
|
-
></empty-placeholder>
|
|
485
|
+
return html `
|
|
486
|
+
<empty-placeholder
|
|
487
|
+
.placeholderType=${this.placeholderType}
|
|
488
|
+
?isMobileView=${this.mobileView}
|
|
489
|
+
?isCollection=${!!this.withinCollection}
|
|
490
|
+
.detailMessage=${this.dataSource.queryErrorMessage ?? ''}
|
|
491
|
+
.baseNavigationUrl=${this.baseNavigationUrl}
|
|
492
|
+
></empty-placeholder>
|
|
486
493
|
`;
|
|
487
494
|
}
|
|
488
495
|
/**
|
|
489
496
|
* Top-level template for rendering the left (facets) and right (results) columns.
|
|
490
497
|
*/
|
|
491
498
|
get collectionBrowserTemplate() {
|
|
492
|
-
return html `
|
|
493
|
-
<div id="left-column-scroll-sentinel"></div>
|
|
494
|
-
${this.leftColumnTemplate} ${this.rightColumnTemplate}
|
|
499
|
+
return html `
|
|
500
|
+
<div id="left-column-scroll-sentinel"></div>
|
|
501
|
+
${this.leftColumnTemplate} ${this.rightColumnTemplate}
|
|
495
502
|
`;
|
|
496
503
|
}
|
|
497
504
|
/**
|
|
@@ -510,33 +517,33 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
510
517
|
* accordion-style facets.
|
|
511
518
|
*/
|
|
512
519
|
get mobileLeftColumnTemplate() {
|
|
513
|
-
return html `
|
|
514
|
-
<div
|
|
515
|
-
id="left-column"
|
|
516
|
-
class="column${this.isResizeToMobile ? ' preload' : ''}"
|
|
517
|
-
>
|
|
518
|
-
${this.facetTopViewSlot} ${this.resultsCountTemplate}
|
|
519
|
-
<div id="facets-header-container">${this.mobileFacetsTemplate}</div>
|
|
520
|
-
</div>
|
|
520
|
+
return html `
|
|
521
|
+
<div
|
|
522
|
+
id="left-column"
|
|
523
|
+
class="column${this.isResizeToMobile ? ' preload' : ''}"
|
|
524
|
+
>
|
|
525
|
+
${this.facetTopViewSlot} ${this.resultsCountTemplate}
|
|
526
|
+
<div id="facets-header-container">${this.mobileFacetsTemplate}</div>
|
|
527
|
+
</div>
|
|
521
528
|
`;
|
|
522
529
|
}
|
|
523
530
|
/**
|
|
524
531
|
* Template for the desktop version of the left column, displaying the facets sidebar.
|
|
525
532
|
*/
|
|
526
533
|
get desktopLeftColumnTemplate() {
|
|
527
|
-
return html `
|
|
528
|
-
<div id="left-column" class="column" ?hidden=${!this.facetPaneVisible}>
|
|
529
|
-
${this.facetTopViewSlot}
|
|
530
|
-
<div id="facets-header-container">
|
|
531
|
-
<h2 id="facets-header" class="sr-only">${msg('Filters')}</h2>
|
|
532
|
-
${this.resultsCountTemplate} ${this.clearFiltersBtnTemplate(false)}
|
|
533
|
-
</div>
|
|
534
|
-
<div id="facets-container" aria-labelledby="facets-header">
|
|
535
|
-
${this.facetsTemplate}
|
|
536
|
-
<div id="facets-scroll-sentinel"></div>
|
|
537
|
-
</div>
|
|
538
|
-
<div id="facets-bottom-fade"></div>
|
|
539
|
-
</div>
|
|
534
|
+
return html `
|
|
535
|
+
<div id="left-column" class="column" ?hidden=${!this.facetPaneVisible}>
|
|
536
|
+
${this.facetTopViewSlot}
|
|
537
|
+
<div id="facets-header-container">
|
|
538
|
+
<h2 id="facets-header" class="sr-only">${msg('Filters')}</h2>
|
|
539
|
+
${this.resultsCountTemplate} ${this.clearFiltersBtnTemplate(false)}
|
|
540
|
+
</div>
|
|
541
|
+
<div id="facets-container" aria-labelledby="facets-header">
|
|
542
|
+
${this.facetsTemplate}
|
|
543
|
+
<div id="facets-scroll-sentinel"></div>
|
|
544
|
+
</div>
|
|
545
|
+
<div id="facets-bottom-fade"></div>
|
|
546
|
+
</div>
|
|
540
547
|
`;
|
|
541
548
|
}
|
|
542
549
|
/**
|
|
@@ -544,8 +551,8 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
544
551
|
* - mainly used to render userlists
|
|
545
552
|
*/
|
|
546
553
|
get facetTopViewSlot() {
|
|
547
|
-
return html `<div id="facet-top-view">
|
|
548
|
-
<slot name="facet-top-slot"></slot>
|
|
554
|
+
return html `<div id="facet-top-view">
|
|
555
|
+
<slot name="facet-top-slot"></slot>
|
|
549
556
|
</div>`;
|
|
550
557
|
}
|
|
551
558
|
/**
|
|
@@ -560,15 +567,15 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
560
567
|
const resultsCount = this.totalResults?.toLocaleString();
|
|
561
568
|
const resultsLabel = this.totalResults === 1 ? 'Result' : 'Results';
|
|
562
569
|
// Added data-testid for Playwright testing
|
|
563
|
-
return html `
|
|
564
|
-
<div id="results-total" class=${classes} data-testid="results-total">
|
|
565
|
-
<span id="big-results-count">
|
|
566
|
-
${shouldShowSearching ? html `Searching…` : resultsCount}
|
|
567
|
-
</span>
|
|
568
|
-
<span id="big-results-label">
|
|
569
|
-
${shouldShowSearching ? nothing : resultsLabel}
|
|
570
|
-
</span>
|
|
571
|
-
</div>
|
|
570
|
+
return html `
|
|
571
|
+
<div id="results-total" class=${classes} data-testid="results-total">
|
|
572
|
+
<span id="big-results-count">
|
|
573
|
+
${shouldShowSearching ? html `Searching…` : resultsCount}
|
|
574
|
+
</span>
|
|
575
|
+
<span id="big-results-label">
|
|
576
|
+
${shouldShowSearching ? nothing : resultsLabel}
|
|
577
|
+
</span>
|
|
578
|
+
</div>
|
|
572
579
|
`;
|
|
573
580
|
}
|
|
574
581
|
/**
|
|
@@ -581,45 +588,45 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
581
588
|
'full-width': !this.facetPaneVisible,
|
|
582
589
|
'smart-results-spacing': !!this.showSmartResults,
|
|
583
590
|
});
|
|
584
|
-
return html `
|
|
585
|
-
<div id="right-column" class=${rightColumnClasses}>
|
|
591
|
+
return html `
|
|
592
|
+
<div id="right-column" class=${rightColumnClasses}>
|
|
586
593
|
${this.showSmartResults
|
|
587
594
|
? html `<slot name="smart-results"></slot>`
|
|
588
|
-
: nothing}
|
|
589
|
-
<section id="results">
|
|
590
|
-
<h2 class="results-section-heading">
|
|
591
|
-
<slot name="results-heading"></slot>
|
|
592
|
-
</h2>
|
|
593
|
-
<div id="cb-top-view">
|
|
594
|
-
<slot name="cb-top-slot"></slot>
|
|
595
|
-
</div>
|
|
595
|
+
: nothing}
|
|
596
|
+
<section id="results">
|
|
597
|
+
<h2 class="results-section-heading">
|
|
598
|
+
<slot name="results-heading"></slot>
|
|
599
|
+
</h2>
|
|
600
|
+
<div id="cb-top-view">
|
|
601
|
+
<slot name="cb-top-slot"></slot>
|
|
602
|
+
</div>
|
|
596
603
|
${this.isManageView
|
|
597
604
|
? this.manageBarTemplate
|
|
598
|
-
: this.sortFilterBarTemplate}
|
|
599
|
-
<slot name="cb-results"></slot>
|
|
605
|
+
: this.sortFilterBarTemplate}
|
|
606
|
+
<slot name="cb-results"></slot>
|
|
600
607
|
${this.displayMode === `list-compact` && this.totalResults
|
|
601
608
|
? this.listHeaderTemplate
|
|
602
|
-
: nothing}
|
|
603
|
-
${this.suppressResultTiles ? nothing : this.infiniteScrollerTemplate}
|
|
604
|
-
</section>
|
|
605
|
-
</div>
|
|
609
|
+
: nothing}
|
|
610
|
+
${this.suppressResultTiles ? nothing : this.infiniteScrollerTemplate}
|
|
611
|
+
</section>
|
|
612
|
+
</div>
|
|
606
613
|
`;
|
|
607
614
|
}
|
|
608
615
|
/**
|
|
609
616
|
* Template for the infinite scroller widget that contains the result tiles.
|
|
610
617
|
*/
|
|
611
618
|
get infiniteScrollerTemplate() {
|
|
612
|
-
return html `<infinite-scroller
|
|
613
|
-
class=${this.infiniteScrollerClasses}
|
|
614
|
-
itemCount=${this.placeholderType ? 0 : nothing}
|
|
615
|
-
ariaLandmarkLabel="Search results"
|
|
616
|
-
.cellProvider=${this}
|
|
617
|
-
.placeholderCellTemplate=${this.placeholderCellTemplate}
|
|
618
|
-
@scrollThresholdReached=${this.scrollThresholdReached}
|
|
619
|
-
@visibleCellsChanged=${this.visibleCellsChanged}
|
|
619
|
+
return html `<infinite-scroller
|
|
620
|
+
class=${this.infiniteScrollerClasses}
|
|
621
|
+
itemCount=${this.placeholderType ? 0 : nothing}
|
|
622
|
+
ariaLandmarkLabel="Search results"
|
|
623
|
+
.cellProvider=${this}
|
|
624
|
+
.placeholderCellTemplate=${this.placeholderCellTemplate}
|
|
625
|
+
@scrollThresholdReached=${this.scrollThresholdReached}
|
|
626
|
+
@visibleCellsChanged=${this.visibleCellsChanged}
|
|
620
627
|
>${this.displayMode === 'grid'
|
|
621
628
|
? html `<slot name="result-last-tile" slot="result-last-tile"></slot>`
|
|
622
|
-
: nothing}
|
|
629
|
+
: nothing}
|
|
623
630
|
</infinite-scroller>`;
|
|
624
631
|
}
|
|
625
632
|
/**
|
|
@@ -653,29 +660,29 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
653
660
|
}
|
|
654
661
|
// We only show relevance sort if a search query is currently defined
|
|
655
662
|
sortFieldAvailability.relevance = this.isRelevanceSortAvailable;
|
|
656
|
-
return html `
|
|
657
|
-
<sort-filter-bar
|
|
658
|
-
.defaultSortField=${this.defaultSortField}
|
|
659
|
-
.defaultSortDirection=${this.defaultSortDirection}
|
|
660
|
-
.selectedSort=${this.selectedSort}
|
|
661
|
-
.sortDirection=${this.sortDirection}
|
|
662
|
-
.sortFieldAvailability=${sortFieldAvailability}
|
|
663
|
-
.displayMode=${this.displayMode}
|
|
664
|
-
.selectedTitleFilter=${this.selectedTitleFilter}
|
|
665
|
-
.selectedCreatorFilter=${this.selectedCreatorFilter}
|
|
666
|
-
.prefixFilterCountMap=${this.dataSource.prefixFilterCountMap}
|
|
667
|
-
.enableSortOptionsSlot=${this.enableSortOptionsSlot}
|
|
668
|
-
.suppressDisplayModes=${this.suppressDisplayModes}
|
|
669
|
-
@sortChanged=${this.userChangedSort}
|
|
670
|
-
@displayModeChanged=${this.displayModeChanged}
|
|
671
|
-
@titleLetterChanged=${this.titleLetterSelected}
|
|
672
|
-
@creatorLetterChanged=${this.creatorLetterSelected}
|
|
673
|
-
>
|
|
674
|
-
${this.tileBlurCheckboxTemplate}
|
|
675
|
-
<slot name="sort-options-left" slot="sort-options-left"></slot>
|
|
676
|
-
<slot name="sort-options" slot="sort-options"></slot>
|
|
677
|
-
<slot name="sort-options-right" slot="sort-options-right"></slot>
|
|
678
|
-
</sort-filter-bar>
|
|
663
|
+
return html `
|
|
664
|
+
<sort-filter-bar
|
|
665
|
+
.defaultSortField=${this.defaultSortField}
|
|
666
|
+
.defaultSortDirection=${this.defaultSortDirection}
|
|
667
|
+
.selectedSort=${this.selectedSort}
|
|
668
|
+
.sortDirection=${this.sortDirection}
|
|
669
|
+
.sortFieldAvailability=${sortFieldAvailability}
|
|
670
|
+
.displayMode=${this.displayMode}
|
|
671
|
+
.selectedTitleFilter=${this.selectedTitleFilter}
|
|
672
|
+
.selectedCreatorFilter=${this.selectedCreatorFilter}
|
|
673
|
+
.prefixFilterCountMap=${this.dataSource.prefixFilterCountMap}
|
|
674
|
+
.enableSortOptionsSlot=${this.enableSortOptionsSlot}
|
|
675
|
+
.suppressDisplayModes=${this.suppressDisplayModes}
|
|
676
|
+
@sortChanged=${this.userChangedSort}
|
|
677
|
+
@displayModeChanged=${this.displayModeChanged}
|
|
678
|
+
@titleLetterChanged=${this.titleLetterSelected}
|
|
679
|
+
@creatorLetterChanged=${this.creatorLetterSelected}
|
|
680
|
+
>
|
|
681
|
+
${this.tileBlurCheckboxTemplate}
|
|
682
|
+
<slot name="sort-options-left" slot="sort-options-left"></slot>
|
|
683
|
+
<slot name="sort-options" slot="sort-options"></slot>
|
|
684
|
+
<slot name="sort-options-right" slot="sort-options-right"></slot>
|
|
685
|
+
</sort-filter-bar>
|
|
679
686
|
`;
|
|
680
687
|
}
|
|
681
688
|
/**
|
|
@@ -686,20 +693,20 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
686
693
|
// Only show the checkbox for @archive.org users
|
|
687
694
|
if (!this.dataSource.sessionContext?.is_archive_user)
|
|
688
695
|
return nothing;
|
|
689
|
-
return html `
|
|
690
|
-
<label
|
|
691
|
-
id="tile-blur-label"
|
|
692
|
-
for="tile-blur-check"
|
|
693
|
-
slot="sort-options-right"
|
|
694
|
-
>
|
|
695
|
-
${msg('Blurring')}
|
|
696
|
-
<input
|
|
697
|
-
id="tile-blur-check"
|
|
698
|
-
type="checkbox"
|
|
699
|
-
?checked=${!this.shouldSuppressTileBlurring}
|
|
700
|
-
@change=${this.tileBlurCheckboxChanged}
|
|
701
|
-
/>
|
|
702
|
-
</label>
|
|
696
|
+
return html `
|
|
697
|
+
<label
|
|
698
|
+
id="tile-blur-label"
|
|
699
|
+
for="tile-blur-check"
|
|
700
|
+
slot="sort-options-right"
|
|
701
|
+
>
|
|
702
|
+
${msg('Blurring')}
|
|
703
|
+
<input
|
|
704
|
+
id="tile-blur-check"
|
|
705
|
+
type="checkbox"
|
|
706
|
+
?checked=${!this.shouldSuppressTileBlurring}
|
|
707
|
+
@change=${this.tileBlurCheckboxChanged}
|
|
708
|
+
/>
|
|
709
|
+
</label>
|
|
703
710
|
`;
|
|
704
711
|
}
|
|
705
712
|
/**
|
|
@@ -707,27 +714,27 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
707
714
|
* showing the management view. This generally replaces the sort bar when present.
|
|
708
715
|
*/
|
|
709
716
|
get manageBarTemplate() {
|
|
710
|
-
return html `
|
|
711
|
-
<manage-bar
|
|
712
|
-
.label=${this.manageViewLabel}
|
|
713
|
-
.modalManager=${this.modalManager}
|
|
714
|
-
.selectedItems=${this.dataSource.checkedTileModels}
|
|
715
|
-
.profileElement=${this.profileElement}
|
|
716
|
-
showSelectAll
|
|
717
|
-
showUnselectAll
|
|
718
|
-
?showItemManageButton=${this.pageContext === 'search'}
|
|
719
|
-
?removeAllowed=${this.dataSource.checkedTileModels.length !== 0}
|
|
720
|
-
@removeItems=${this.handleRemoveItems}
|
|
721
|
-
@manageItems=${this.handleManageItems}
|
|
722
|
-
@selectAll=${() => this.dataSource.checkAllTiles()}
|
|
723
|
-
@unselectAll=${() => this.dataSource.uncheckAllTiles()}
|
|
717
|
+
return html `
|
|
718
|
+
<manage-bar
|
|
719
|
+
.label=${this.manageViewLabel}
|
|
720
|
+
.modalManager=${this.modalManager}
|
|
721
|
+
.selectedItems=${this.dataSource.checkedTileModels}
|
|
722
|
+
.profileElement=${this.profileElement}
|
|
723
|
+
showSelectAll
|
|
724
|
+
showUnselectAll
|
|
725
|
+
?showItemManageButton=${this.pageContext === 'search'}
|
|
726
|
+
?removeAllowed=${this.dataSource.checkedTileModels.length !== 0}
|
|
727
|
+
@removeItems=${this.handleRemoveItems}
|
|
728
|
+
@manageItems=${this.handleManageItems}
|
|
729
|
+
@selectAll=${() => this.dataSource.checkAllTiles()}
|
|
730
|
+
@unselectAll=${() => this.dataSource.uncheckAllTiles()}
|
|
724
731
|
@cancel=${() => {
|
|
725
732
|
this.isManageView = false;
|
|
726
733
|
this.dataSource.uncheckAllTiles();
|
|
727
734
|
if (this.searchResultsLoading)
|
|
728
735
|
this.dataSource.resetPages();
|
|
729
|
-
}}
|
|
730
|
-
></manage-bar>
|
|
736
|
+
}}
|
|
737
|
+
></manage-bar>
|
|
731
738
|
`;
|
|
732
739
|
}
|
|
733
740
|
/**
|
|
@@ -962,15 +969,15 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
962
969
|
label: target.open ? 'open' : 'closed',
|
|
963
970
|
});
|
|
964
971
|
};
|
|
965
|
-
return html `
|
|
966
|
-
<details id="mobile-filter-collapse" @toggle=${toggleFacetsVisible}>
|
|
967
|
-
<summary>
|
|
968
|
-
<span class="collapser-icon">${chevronIcon}</span>
|
|
969
|
-
<h2>${msg('Filters')}</h2>
|
|
970
|
-
${this.clearFiltersBtnTemplate(true)}
|
|
971
|
-
</summary>
|
|
972
|
-
${this.facetsTemplate}
|
|
973
|
-
</details>
|
|
972
|
+
return html `
|
|
973
|
+
<details id="mobile-filter-collapse" @toggle=${toggleFacetsVisible}>
|
|
974
|
+
<summary>
|
|
975
|
+
<span class="collapser-icon">${chevronIcon}</span>
|
|
976
|
+
<h2>${msg('Filters')}</h2>
|
|
977
|
+
${this.clearFiltersBtnTemplate(true)}
|
|
978
|
+
</summary>
|
|
979
|
+
${this.facetsTemplate}
|
|
980
|
+
</details>
|
|
974
981
|
`;
|
|
975
982
|
}
|
|
976
983
|
/**
|
|
@@ -1054,50 +1061,50 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
1054
1061
|
const filterByNetworkLabel = msg('Filter by Network');
|
|
1055
1062
|
const filterByShowLabel = msg('Filter by Show');
|
|
1056
1063
|
const shows = showEntries.map(([show]) => show);
|
|
1057
|
-
const loadingIndicator = html `
|
|
1058
|
-
<span slot="empty-options">
|
|
1059
|
-
<img src="https://archive.org/images/loading.gif" />
|
|
1060
|
-
</span>
|
|
1064
|
+
const loadingIndicator = html `
|
|
1065
|
+
<span slot="empty-options">
|
|
1066
|
+
<img src="https://archive.org/images/loading.gif" />
|
|
1067
|
+
</span>
|
|
1061
1068
|
`;
|
|
1062
|
-
const errorMessage = html `
|
|
1063
|
-
<span slot="empty-options">
|
|
1064
|
-
${msg('Unable to fetch options, try again later')}
|
|
1065
|
-
</span>
|
|
1069
|
+
const errorMessage = html `
|
|
1070
|
+
<span slot="empty-options">
|
|
1071
|
+
${msg('Unable to fetch options, try again later')}
|
|
1072
|
+
</span>
|
|
1066
1073
|
`;
|
|
1067
|
-
return html `
|
|
1068
|
-
<div id="tv-filters" slot="facets-top">
|
|
1069
|
-
<ia-combo-box
|
|
1070
|
-
id="tv-networks"
|
|
1071
|
-
class="tv-filter-dropdown"
|
|
1072
|
-
placeholder=${filterByNetworkLabel}
|
|
1073
|
-
clearable
|
|
1074
|
-
wrap-arrow-keys
|
|
1075
|
-
sort
|
|
1076
|
-
.options=${networks.map((n, i) => ({ id: `network-${i}`, text: n }))}
|
|
1077
|
-
@toggle=${this.tvDropdownToggled}
|
|
1078
|
-
@change=${this.networksDropdownChanged}
|
|
1079
|
-
>
|
|
1080
|
-
<span slot="label" class="sr-only">${filterByNetworkLabel}</span>
|
|
1081
|
-
${this.tvMapsLoading ? loadingIndicator : nothing}
|
|
1082
|
-
${this.tvMapsErrored ? errorMessage : nothing}
|
|
1083
|
-
</ia-combo-box>
|
|
1084
|
-
<ia-combo-box
|
|
1085
|
-
id="tv-shows"
|
|
1086
|
-
class="tv-filter-dropdown"
|
|
1087
|
-
placeholder=${filterByShowLabel}
|
|
1088
|
-
max-autocomplete-entries="500"
|
|
1089
|
-
clearable
|
|
1090
|
-
wrap-arrow-keys
|
|
1091
|
-
sort
|
|
1092
|
-
.options=${shows.map((s, i) => ({ id: `show-${i}`, text: s }))}
|
|
1093
|
-
@toggle=${this.tvDropdownToggled}
|
|
1094
|
-
@change=${this.showsDropdownChanged}
|
|
1095
|
-
>
|
|
1096
|
-
<span slot="label" class="sr-only">${filterByShowLabel}</span>
|
|
1097
|
-
${this.tvMapsLoading ? loadingIndicator : nothing}
|
|
1098
|
-
${this.tvMapsErrored ? errorMessage : nothing}
|
|
1099
|
-
</ia-combo-box>
|
|
1100
|
-
</div>
|
|
1074
|
+
return html `
|
|
1075
|
+
<div id="tv-filters" slot="facets-top">
|
|
1076
|
+
<ia-combo-box
|
|
1077
|
+
id="tv-networks"
|
|
1078
|
+
class="tv-filter-dropdown"
|
|
1079
|
+
placeholder=${filterByNetworkLabel}
|
|
1080
|
+
clearable
|
|
1081
|
+
wrap-arrow-keys
|
|
1082
|
+
sort
|
|
1083
|
+
.options=${networks.map((n, i) => ({ id: `network-${i}`, text: n }))}
|
|
1084
|
+
@toggle=${this.tvDropdownToggled}
|
|
1085
|
+
@change=${this.networksDropdownChanged}
|
|
1086
|
+
>
|
|
1087
|
+
<span slot="label" class="sr-only">${filterByNetworkLabel}</span>
|
|
1088
|
+
${this.tvMapsLoading ? loadingIndicator : nothing}
|
|
1089
|
+
${this.tvMapsErrored ? errorMessage : nothing}
|
|
1090
|
+
</ia-combo-box>
|
|
1091
|
+
<ia-combo-box
|
|
1092
|
+
id="tv-shows"
|
|
1093
|
+
class="tv-filter-dropdown"
|
|
1094
|
+
placeholder=${filterByShowLabel}
|
|
1095
|
+
max-autocomplete-entries="500"
|
|
1096
|
+
clearable
|
|
1097
|
+
wrap-arrow-keys
|
|
1098
|
+
sort
|
|
1099
|
+
.options=${shows.map((s, i) => ({ id: `show-${i}`, text: s }))}
|
|
1100
|
+
@toggle=${this.tvDropdownToggled}
|
|
1101
|
+
@change=${this.showsDropdownChanged}
|
|
1102
|
+
>
|
|
1103
|
+
<span slot="label" class="sr-only">${filterByShowLabel}</span>
|
|
1104
|
+
${this.tvMapsLoading ? loadingIndicator : nothing}
|
|
1105
|
+
${this.tvMapsErrored ? errorMessage : nothing}
|
|
1106
|
+
</ia-combo-box>
|
|
1107
|
+
</div>
|
|
1101
1108
|
`;
|
|
1102
1109
|
}
|
|
1103
1110
|
/**
|
|
@@ -1107,10 +1114,10 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
1107
1114
|
if (FACETLESS_PAGE_ELEMENTS.includes(this.profileElement))
|
|
1108
1115
|
return nothing;
|
|
1109
1116
|
if (this.facetLoadStrategy === 'off') {
|
|
1110
|
-
return html `
|
|
1111
|
-
<p class="facets-message">
|
|
1112
|
-
${msg('Facets are temporarily unavailable.')}
|
|
1113
|
-
</p>
|
|
1117
|
+
return html `
|
|
1118
|
+
<p class="facets-message">
|
|
1119
|
+
${msg('Facets are temporarily unavailable.')}
|
|
1120
|
+
</p>
|
|
1114
1121
|
`;
|
|
1115
1122
|
}
|
|
1116
1123
|
// We switch to TV facet ordering & date picker if we are in a TV collection or showing TV search results
|
|
@@ -1119,46 +1126,46 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
1119
1126
|
const facetDisplayOrder = shouldUseTvInterface
|
|
1120
1127
|
? tvFacetDisplayOrder
|
|
1121
1128
|
: defaultFacetDisplayOrder;
|
|
1122
|
-
const facets = html `
|
|
1123
|
-
<collection-facets
|
|
1124
|
-
.collectionPagePath=${this.collectionPagePath}
|
|
1125
|
-
.parentCollections=${this.dataSource.parentCollections}
|
|
1126
|
-
.pageSpecifierParams=${this.dataSource.pageSpecifierParams}
|
|
1127
|
-
.searchService=${this.searchService}
|
|
1128
|
-
.featureFeedbackService=${this.featureFeedbackService}
|
|
1129
|
-
.recaptchaManager=${this.recaptchaManager}
|
|
1130
|
-
.resizeObserver=${this.resizeObserver}
|
|
1131
|
-
.searchType=${this.searchType}
|
|
1132
|
-
.aggregations=${this.dataSource.aggregations}
|
|
1133
|
-
.histogramAggregation=${this.dataSource.histogramAggregation}
|
|
1134
|
-
.minSelectedDate=${this.minSelectedDate}
|
|
1135
|
-
.maxSelectedDate=${this.maxSelectedDate}
|
|
1136
|
-
.selectedFacets=${this.selectedFacets}
|
|
1137
|
-
.baseNavigationUrl=${this.baseNavigationUrl}
|
|
1138
|
-
.collectionTitles=${this.dataSource.collectionTitles}
|
|
1139
|
-
.tvChannelAliases=${this.dataSource.tvChannelAliases}
|
|
1140
|
-
.showHistogramDatePicker=${this.showHistogramDatePicker}
|
|
1141
|
-
.allowExpandingDatePicker=${!this.mobileView}
|
|
1142
|
-
.allowDatePickerMonths=${shouldUseTvInterface}
|
|
1143
|
-
.contentWidth=${this.contentWidth}
|
|
1144
|
-
.query=${this.baseQuery}
|
|
1145
|
-
.identifiers=${this.identifiers}
|
|
1146
|
-
.filterMap=${this.dataSource.filterMap}
|
|
1147
|
-
.isManageView=${this.isManageView}
|
|
1148
|
-
.modalManager=${this.modalManager}
|
|
1149
|
-
.analyticsHandler=${this.analyticsHandler}
|
|
1150
|
-
.facetDisplayOrder=${facetDisplayOrder}
|
|
1151
|
-
.isTvSearch=${shouldUseTvInterface}
|
|
1152
|
-
?collapsableFacets=${this.mobileView}
|
|
1153
|
-
?facetsLoading=${this.facetsLoading}
|
|
1154
|
-
?histogramAggregationLoading=${this.facetsLoading}
|
|
1155
|
-
?suppressMediatypeFacets=${this.suppressMediatypeFacets}
|
|
1156
|
-
@facetClick=${this.facetClickHandler}
|
|
1157
|
-
@facetsChanged=${this.facetsChanged}
|
|
1158
|
-
@histogramDateRangeUpdated=${this.histogramDateRangeUpdated}
|
|
1159
|
-
>
|
|
1160
|
-
${this.tvDropdownFiltersTemplate}
|
|
1161
|
-
</collection-facets>
|
|
1129
|
+
const facets = html `
|
|
1130
|
+
<collection-facets
|
|
1131
|
+
.collectionPagePath=${this.collectionPagePath}
|
|
1132
|
+
.parentCollections=${this.dataSource.parentCollections}
|
|
1133
|
+
.pageSpecifierParams=${this.dataSource.pageSpecifierParams}
|
|
1134
|
+
.searchService=${this.searchService}
|
|
1135
|
+
.featureFeedbackService=${this.featureFeedbackService}
|
|
1136
|
+
.recaptchaManager=${this.recaptchaManager}
|
|
1137
|
+
.resizeObserver=${this.resizeObserver}
|
|
1138
|
+
.searchType=${this.searchType}
|
|
1139
|
+
.aggregations=${this.dataSource.aggregations}
|
|
1140
|
+
.histogramAggregation=${this.dataSource.histogramAggregation}
|
|
1141
|
+
.minSelectedDate=${this.minSelectedDate}
|
|
1142
|
+
.maxSelectedDate=${this.maxSelectedDate}
|
|
1143
|
+
.selectedFacets=${this.selectedFacets}
|
|
1144
|
+
.baseNavigationUrl=${this.baseNavigationUrl}
|
|
1145
|
+
.collectionTitles=${this.dataSource.collectionTitles}
|
|
1146
|
+
.tvChannelAliases=${this.dataSource.tvChannelAliases}
|
|
1147
|
+
.showHistogramDatePicker=${this.showHistogramDatePicker}
|
|
1148
|
+
.allowExpandingDatePicker=${!this.mobileView}
|
|
1149
|
+
.allowDatePickerMonths=${shouldUseTvInterface}
|
|
1150
|
+
.contentWidth=${this.contentWidth}
|
|
1151
|
+
.query=${this.baseQuery}
|
|
1152
|
+
.identifiers=${this.identifiers}
|
|
1153
|
+
.filterMap=${this.dataSource.filterMap}
|
|
1154
|
+
.isManageView=${this.isManageView}
|
|
1155
|
+
.modalManager=${this.modalManager}
|
|
1156
|
+
.analyticsHandler=${this.analyticsHandler}
|
|
1157
|
+
.facetDisplayOrder=${facetDisplayOrder}
|
|
1158
|
+
.isTvSearch=${shouldUseTvInterface}
|
|
1159
|
+
?collapsableFacets=${this.mobileView}
|
|
1160
|
+
?facetsLoading=${this.facetsLoading}
|
|
1161
|
+
?histogramAggregationLoading=${this.facetsLoading}
|
|
1162
|
+
?suppressMediatypeFacets=${this.suppressMediatypeFacets}
|
|
1163
|
+
@facetClick=${this.facetClickHandler}
|
|
1164
|
+
@facetsChanged=${this.facetsChanged}
|
|
1165
|
+
@histogramDateRangeUpdated=${this.histogramDateRangeUpdated}
|
|
1166
|
+
>
|
|
1167
|
+
${this.tvDropdownFiltersTemplate}
|
|
1168
|
+
</collection-facets>
|
|
1162
1169
|
`;
|
|
1163
1170
|
// If we are using one of the opt-in facet load strategies, we may need to wrap the
|
|
1164
1171
|
// desktop view facets in a <details> widget so that patrons can opt into loading them.
|
|
@@ -1166,20 +1173,20 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
1166
1173
|
const showDesktopOptInWidget = this.facetLoadStrategy === 'opt-in' ||
|
|
1167
1174
|
(this.facetLoadStrategy === 'opt-in-or-login' && !this.loggedIn);
|
|
1168
1175
|
if (showDesktopOptInWidget && !this.mobileView) {
|
|
1169
|
-
return html `
|
|
1170
|
-
<details
|
|
1171
|
-
class="desktop-facets-dropdown"
|
|
1176
|
+
return html `
|
|
1177
|
+
<details
|
|
1178
|
+
class="desktop-facets-dropdown"
|
|
1172
1179
|
@toggle=${(e) => {
|
|
1173
1180
|
const target = e.target;
|
|
1174
1181
|
this.collapsibleFacetsVisible = target.open;
|
|
1175
|
-
}}
|
|
1176
|
-
>
|
|
1177
|
-
<summary>
|
|
1178
|
-
<span class="collapser-icon">${chevronIcon}</span>
|
|
1179
|
-
<h2>${msg('Filters')}</h2>
|
|
1180
|
-
</summary>
|
|
1181
|
-
${facets}
|
|
1182
|
-
</details>
|
|
1182
|
+
}}
|
|
1183
|
+
>
|
|
1184
|
+
<summary>
|
|
1185
|
+
<span class="collapser-icon">${chevronIcon}</span>
|
|
1186
|
+
<h2>${msg('Filters')}</h2>
|
|
1187
|
+
</summary>
|
|
1188
|
+
${facets}
|
|
1189
|
+
</details>
|
|
1183
1190
|
`;
|
|
1184
1191
|
}
|
|
1185
1192
|
// Otherwise, just render the facets component bare
|
|
@@ -1199,34 +1206,35 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
1199
1206
|
mobile,
|
|
1200
1207
|
});
|
|
1201
1208
|
const buttonText = mobile ? 'Clear all' : 'Clear all filters';
|
|
1202
|
-
return html `
|
|
1203
|
-
<div class="clear-filters-btn-row">
|
|
1209
|
+
return html `
|
|
1210
|
+
<div class="clear-filters-btn-row">
|
|
1204
1211
|
${mobile
|
|
1205
1212
|
? html `<span class="clear-filters-btn-separator"> </span>`
|
|
1206
|
-
: nothing}
|
|
1207
|
-
<button class=${buttonClasses} @click=${this.clearFilters}>
|
|
1208
|
-
${buttonText}
|
|
1209
|
-
</button>
|
|
1210
|
-
</div>
|
|
1213
|
+
: nothing}
|
|
1214
|
+
<button class=${buttonClasses} @click=${this.clearFilters}>
|
|
1215
|
+
${buttonText}
|
|
1216
|
+
</button>
|
|
1217
|
+
</div>
|
|
1211
1218
|
`;
|
|
1212
1219
|
}
|
|
1213
1220
|
/**
|
|
1214
1221
|
* Template for the table header content that appears atop the compact list view.
|
|
1215
1222
|
*/
|
|
1216
1223
|
get listHeaderTemplate() {
|
|
1217
|
-
return html `
|
|
1218
|
-
<div id="list-header">
|
|
1219
|
-
<tile-dispatcher
|
|
1220
|
-
.tileDisplayMode=${'list-header'}
|
|
1221
|
-
.resizeObserver=${this.resizeObserver}
|
|
1222
|
-
.sortParam=${this.sortParam}
|
|
1223
|
-
.defaultSortParam=${this.defaultSortParam}
|
|
1224
|
-
.mobileBreakpoint=${this.mobileBreakpoint}
|
|
1225
|
-
.loggedIn=${this.loggedIn}
|
|
1226
|
-
.suppressBlurring=${this.shouldSuppressTileBlurring}
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1224
|
+
return html `
|
|
1225
|
+
<div id="list-header">
|
|
1226
|
+
<tile-dispatcher
|
|
1227
|
+
.tileDisplayMode=${'list-header'}
|
|
1228
|
+
.resizeObserver=${this.resizeObserver}
|
|
1229
|
+
.sortParam=${this.sortParam}
|
|
1230
|
+
.defaultSortParam=${this.defaultSortParam}
|
|
1231
|
+
.mobileBreakpoint=${this.mobileBreakpoint}
|
|
1232
|
+
.loggedIn=${this.loggedIn}
|
|
1233
|
+
.suppressBlurring=${this.shouldSuppressTileBlurring}
|
|
1234
|
+
.tileActions=${this.tileActions}
|
|
1235
|
+
>
|
|
1236
|
+
</tile-dispatcher>
|
|
1237
|
+
</div>
|
|
1230
1238
|
`;
|
|
1231
1239
|
}
|
|
1232
1240
|
/**
|
|
@@ -1346,7 +1354,8 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
1346
1354
|
if (changed.has('displayMode') ||
|
|
1347
1355
|
changed.has('baseNavigationUrl') ||
|
|
1348
1356
|
changed.has('baseImageUrl') ||
|
|
1349
|
-
changed.has('loggedIn')
|
|
1357
|
+
changed.has('loggedIn') ||
|
|
1358
|
+
changed.has('tileActions')) {
|
|
1350
1359
|
this.infiniteScroller?.reload();
|
|
1351
1360
|
}
|
|
1352
1361
|
if (changed.has('profileElement')) {
|
|
@@ -1956,28 +1965,30 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
1956
1965
|
const isRadioSearch = this.searchType === SearchType.RADIO;
|
|
1957
1966
|
const { isTVCollection, isRadioCollection } = this;
|
|
1958
1967
|
const shouldUseLocalTime = isTVSearch || isRadioSearch || isTVCollection || isRadioCollection;
|
|
1959
|
-
return html `
|
|
1960
|
-
<tile-dispatcher
|
|
1961
|
-
.collectionPagePath=${this.collectionPagePath}
|
|
1962
|
-
.baseNavigationUrl=${this.baseNavigationUrl}
|
|
1963
|
-
.baseImageUrl=${this.baseImageUrl}
|
|
1964
|
-
.model=${model}
|
|
1965
|
-
.tileDisplayMode=${this.displayMode}
|
|
1966
|
-
.resizeObserver=${this.resizeObserver}
|
|
1967
|
-
.collectionTitles=${this.dataSource.collectionTitles}
|
|
1968
|
-
.sortParam=${this.sortParam}
|
|
1969
|
-
.defaultSortParam=${this.defaultSortParam}
|
|
1970
|
-
.creatorFilter=${this.selectedCreatorFilter}
|
|
1971
|
-
.mobileBreakpoint=${this.mobileBreakpoint}
|
|
1972
|
-
.loggedIn=${this.loggedIn}
|
|
1973
|
-
.suppressBlurring=${this.shouldSuppressTileBlurring}
|
|
1974
|
-
.isManageView=${this.isManageView}
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
?
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1968
|
+
return html `
|
|
1969
|
+
<tile-dispatcher
|
|
1970
|
+
.collectionPagePath=${this.collectionPagePath}
|
|
1971
|
+
.baseNavigationUrl=${this.baseNavigationUrl}
|
|
1972
|
+
.baseImageUrl=${this.baseImageUrl}
|
|
1973
|
+
.model=${model}
|
|
1974
|
+
.tileDisplayMode=${this.displayMode}
|
|
1975
|
+
.resizeObserver=${this.resizeObserver}
|
|
1976
|
+
.collectionTitles=${this.dataSource.collectionTitles}
|
|
1977
|
+
.sortParam=${this.sortParam}
|
|
1978
|
+
.defaultSortParam=${this.defaultSortParam}
|
|
1979
|
+
.creatorFilter=${this.selectedCreatorFilter}
|
|
1980
|
+
.mobileBreakpoint=${this.mobileBreakpoint}
|
|
1981
|
+
.loggedIn=${this.loggedIn}
|
|
1982
|
+
.suppressBlurring=${this.shouldSuppressTileBlurring}
|
|
1983
|
+
.isManageView=${this.isManageView}
|
|
1984
|
+
.tileActions=${this.tileActions}
|
|
1985
|
+
.layoutType=${this.tileLayoutType}
|
|
1986
|
+
?showTvClips=${isTVSearch || isTVCollection}
|
|
1987
|
+
?enableHoverPane=${true}
|
|
1988
|
+
?useLocalTime=${shouldUseLocalTime}
|
|
1989
|
+
@resultSelected=${(e) => this.resultSelected(e)}
|
|
1990
|
+
>
|
|
1991
|
+
</tile-dispatcher>
|
|
1981
1992
|
`;
|
|
1982
1993
|
}
|
|
1983
1994
|
/**
|
|
@@ -2012,479 +2023,479 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
2012
2023
|
static get styles() {
|
|
2013
2024
|
return [
|
|
2014
2025
|
srOnlyStyle,
|
|
2015
|
-
css `
|
|
2016
|
-
:host {
|
|
2017
|
-
display: block;
|
|
2018
|
-
--leftColumnWidth: 18rem;
|
|
2019
|
-
--leftColumnPaddingTop: 2rem;
|
|
2020
|
-
--leftColumnPaddingRight: 2.5rem;
|
|
2021
|
-
}
|
|
2022
|
-
|
|
2023
|
-
#facet-top-view {
|
|
2024
|
-
display: flex;
|
|
2025
|
-
}
|
|
2026
|
-
|
|
2027
|
-
/**
|
|
2028
|
-
* When page width resizes from desktop to mobile, use this class to
|
|
2029
|
-
* disable expand/collapse transition when loading.
|
|
2030
|
-
*/
|
|
2031
|
-
.preload * {
|
|
2032
|
-
transition: none !important;
|
|
2033
|
-
-webkit-transition: none !important;
|
|
2034
|
-
-moz-transition: none !important;
|
|
2035
|
-
-ms-transition: none !important;
|
|
2036
|
-
-o-transition: none !important;
|
|
2037
|
-
}
|
|
2038
|
-
|
|
2039
|
-
#content-container {
|
|
2040
|
-
display: flex;
|
|
2041
|
-
}
|
|
2042
|
-
|
|
2043
|
-
empty-placeholder {
|
|
2044
|
-
margin-top: var(--placeholderMarginTop, 0);
|
|
2045
|
-
}
|
|
2046
|
-
|
|
2047
|
-
.collapser-icon {
|
|
2048
|
-
display: inline-block;
|
|
2049
|
-
}
|
|
2050
|
-
|
|
2051
|
-
.collapser-icon svg {
|
|
2052
|
-
display: inline-block;
|
|
2053
|
-
width: 12px;
|
|
2054
|
-
height: 12px;
|
|
2055
|
-
transition: transform 0.2s ease-out;
|
|
2056
|
-
}
|
|
2057
|
-
|
|
2058
|
-
#mobile-filter-collapse {
|
|
2059
|
-
width: 100%;
|
|
2060
|
-
}
|
|
2061
|
-
|
|
2062
|
-
#mobile-filter-collapse > summary {
|
|
2063
|
-
cursor: pointer;
|
|
2064
|
-
list-style: none;
|
|
2065
|
-
}
|
|
2066
|
-
|
|
2067
|
-
#mobile-filter-collapse[open] > summary {
|
|
2068
|
-
margin-bottom: 10px;
|
|
2069
|
-
}
|
|
2070
|
-
|
|
2071
|
-
#mobile-filter-collapse h2 {
|
|
2072
|
-
display: inline-block;
|
|
2073
|
-
margin: 0;
|
|
2074
|
-
font-size: 2rem;
|
|
2075
|
-
}
|
|
2076
|
-
|
|
2077
|
-
#mobile-filter-collapse[open] svg {
|
|
2078
|
-
transform: rotate(90deg);
|
|
2079
|
-
}
|
|
2080
|
-
|
|
2081
|
-
#content-container.mobile {
|
|
2082
|
-
display: block;
|
|
2083
|
-
}
|
|
2084
|
-
|
|
2085
|
-
#right-column {
|
|
2086
|
-
flex: 1;
|
|
2087
|
-
position: relative;
|
|
2088
|
-
min-height: 90vh;
|
|
2089
|
-
border-right: 1px solid rgb(232, 232, 232);
|
|
2090
|
-
margin-top: var(--rightColumnMarginTop, 0);
|
|
2091
|
-
padding-top: var(--rightColumnPaddingTop, 2rem);
|
|
2092
|
-
background: #fff;
|
|
2093
|
-
}
|
|
2094
|
-
|
|
2095
|
-
#left-column:not([hidden]) + #right-column {
|
|
2096
|
-
border-left: 1px solid rgb(232, 232, 232);
|
|
2097
|
-
}
|
|
2098
|
-
|
|
2099
|
-
#right-column.smart-results-spacing {
|
|
2100
|
-
padding-top: 0.5rem;
|
|
2101
|
-
border-right: none;
|
|
2102
|
-
background: transparent;
|
|
2103
|
-
min-width: 0;
|
|
2104
|
-
}
|
|
2105
|
-
|
|
2106
|
-
#results {
|
|
2107
|
-
background: #fff;
|
|
2108
|
-
padding-left: 1rem;
|
|
2109
|
-
padding-right: 1rem;
|
|
2110
|
-
}
|
|
2111
|
-
|
|
2112
|
-
#right-column.smart-results-spacing #results {
|
|
2113
|
-
border-radius: 10px 10px 0px 0px;
|
|
2114
|
-
padding-top: 0.5rem;
|
|
2115
|
-
margin-top: 1rem;
|
|
2116
|
-
}
|
|
2117
|
-
|
|
2118
|
-
.mobile #right-column {
|
|
2119
|
-
border-left: none;
|
|
2120
|
-
}
|
|
2121
|
-
|
|
2122
|
-
.mobile #results {
|
|
2123
|
-
padding: 5px 5px 0;
|
|
2124
|
-
}
|
|
2125
|
-
|
|
2126
|
-
#left-column {
|
|
2127
|
-
width: var(--leftColumnWidth, 18rem);
|
|
2128
|
-
/* Prevents Safari from shrinking col at first draw */
|
|
2129
|
-
min-width: var(--leftColumnWidth, 18rem);
|
|
2130
|
-
padding-top: var(--leftColumnPaddingTop, 2rem);
|
|
2131
|
-
/* Reduced padding by 0.2rem to add the invisible border in the rule below */
|
|
2132
|
-
padding-right: calc(var(--leftColumnPaddingRight, 2.5rem) - 0.2rem);
|
|
2133
|
-
border-right: 0.2rem solid transparent; /* Pads to the right of the scrollbar a bit */
|
|
2134
|
-
z-index: 1;
|
|
2135
|
-
}
|
|
2136
|
-
|
|
2137
|
-
.desktop #left-column {
|
|
2138
|
-
top: 0;
|
|
2139
|
-
position: sticky;
|
|
2140
|
-
height: calc(100vh - 2rem);
|
|
2141
|
-
max-height: calc(100vh - 2rem);
|
|
2142
|
-
overflow-x: hidden;
|
|
2143
|
-
overflow-y: scroll;
|
|
2144
|
-
|
|
2145
|
-
/*
|
|
2146
|
-
* Firefox doesn't support any of the -webkit-scrollbar stuff below, but
|
|
2147
|
-
* does at least give us a tiny bit of control over width & color.
|
|
2148
|
-
*/
|
|
2149
|
-
scrollbar-width: thin;
|
|
2150
|
-
scrollbar-color: transparent transparent;
|
|
2151
|
-
}
|
|
2152
|
-
.desktop #left-column:hover {
|
|
2153
|
-
scrollbar-color: auto;
|
|
2154
|
-
}
|
|
2155
|
-
.desktop #left-column::-webkit-scrollbar {
|
|
2156
|
-
appearance: none;
|
|
2157
|
-
width: 6px;
|
|
2158
|
-
}
|
|
2159
|
-
.desktop #left-column::-webkit-scrollbar-button {
|
|
2160
|
-
height: 3px;
|
|
2161
|
-
background: transparent;
|
|
2162
|
-
}
|
|
2163
|
-
.desktop #left-column::-webkit-scrollbar-corner {
|
|
2164
|
-
background: transparent;
|
|
2165
|
-
}
|
|
2166
|
-
.desktop #left-column::-webkit-scrollbar-thumb {
|
|
2167
|
-
border-radius: 4px;
|
|
2168
|
-
}
|
|
2169
|
-
.desktop #left-column:hover::-webkit-scrollbar-thumb {
|
|
2170
|
-
background: rgba(0, 0, 0, 0.15);
|
|
2171
|
-
}
|
|
2172
|
-
.desktop #left-column:hover::-webkit-scrollbar-thumb:hover {
|
|
2173
|
-
background: rgba(0, 0, 0, 0.2);
|
|
2174
|
-
}
|
|
2175
|
-
.desktop #left-column:hover::-webkit-scrollbar-thumb:active {
|
|
2176
|
-
background: rgba(0, 0, 0, 0.3);
|
|
2177
|
-
}
|
|
2178
|
-
|
|
2179
|
-
#facets-bottom-fade {
|
|
2180
|
-
background: linear-gradient(
|
|
2181
|
-
to bottom,
|
|
2182
|
-
#fbfbfd00 0%,
|
|
2183
|
-
#fbfbfdc0 50%,
|
|
2184
|
-
#fbfbfd 80%,
|
|
2185
|
-
#fbfbfd 100%
|
|
2186
|
-
);
|
|
2187
|
-
position: fixed;
|
|
2188
|
-
bottom: 0;
|
|
2189
|
-
height: 50px;
|
|
2190
|
-
/* Wide enough to cover the content, but leave the scrollbar uncovered */
|
|
2191
|
-
width: calc(
|
|
2192
|
-
var(--leftColumnWidth) + var(--leftColumnPaddingRight) - 10px
|
|
2193
|
-
);
|
|
2194
|
-
z-index: 2;
|
|
2195
|
-
pointer-events: none;
|
|
2196
|
-
transition: height 0.1s ease;
|
|
2197
|
-
}
|
|
2198
|
-
#facets-bottom-fade.hidden {
|
|
2199
|
-
height: 0;
|
|
2200
|
-
}
|
|
2201
|
-
|
|
2202
|
-
.facets-message {
|
|
2203
|
-
font-size: 1.4rem;
|
|
2204
|
-
}
|
|
2205
|
-
|
|
2206
|
-
.desktop-facets-dropdown > summary {
|
|
2207
|
-
cursor: pointer;
|
|
2208
|
-
list-style: none;
|
|
2209
|
-
}
|
|
2210
|
-
|
|
2211
|
-
.desktop-facets-dropdown h2 {
|
|
2212
|
-
display: inline-block;
|
|
2213
|
-
margin: 0;
|
|
2214
|
-
font-size: 1.6rem;
|
|
2215
|
-
}
|
|
2216
|
-
|
|
2217
|
-
.desktop-facets-dropdown[open] > summary {
|
|
2218
|
-
margin-bottom: 10px;
|
|
2219
|
-
}
|
|
2220
|
-
|
|
2221
|
-
.desktop-facets-dropdown[open] svg {
|
|
2222
|
-
transform: rotate(90deg);
|
|
2223
|
-
}
|
|
2224
|
-
|
|
2225
|
-
.desktop #left-column-scroll-sentinel {
|
|
2226
|
-
width: 1px;
|
|
2227
|
-
height: 100vh;
|
|
2228
|
-
background: transparent;
|
|
2229
|
-
}
|
|
2230
|
-
|
|
2231
|
-
.desktop #facets-scroll-sentinel {
|
|
2232
|
-
width: 1px;
|
|
2233
|
-
height: 1px;
|
|
2234
|
-
background: transparent;
|
|
2235
|
-
}
|
|
2236
|
-
|
|
2237
|
-
#facets-header-container {
|
|
2238
|
-
display: flex;
|
|
2239
|
-
justify-content: space-between;
|
|
2240
|
-
align-items: flex-start;
|
|
2241
|
-
clear: both;
|
|
2242
|
-
}
|
|
2243
|
-
|
|
2244
|
-
.desktop #facets-header-container {
|
|
2245
|
-
flex-wrap: wrap;
|
|
2246
|
-
}
|
|
2247
|
-
|
|
2248
|
-
.mobile #left-column {
|
|
2249
|
-
width: 100%;
|
|
2250
|
-
min-width: 0;
|
|
2251
|
-
padding: 5px 0;
|
|
2252
|
-
border: 0;
|
|
2253
|
-
}
|
|
2254
|
-
|
|
2255
|
-
.clear-filters-btn-row {
|
|
2256
|
-
display: inline-block;
|
|
2257
|
-
}
|
|
2258
|
-
|
|
2259
|
-
.desktop .clear-filters-btn-row {
|
|
2260
|
-
width: 100%;
|
|
2261
|
-
}
|
|
2262
|
-
|
|
2263
|
-
.clear-filters-btn {
|
|
2264
|
-
display: inline-block;
|
|
2265
|
-
appearance: none;
|
|
2266
|
-
margin: 0;
|
|
2267
|
-
padding: 0;
|
|
2268
|
-
border: 0;
|
|
2269
|
-
background: none;
|
|
2270
|
-
color: var(--ia-theme-link-color);
|
|
2271
|
-
font-size: 1.4rem;
|
|
2272
|
-
font-family: inherit;
|
|
2273
|
-
cursor: pointer;
|
|
2274
|
-
}
|
|
2275
|
-
|
|
2276
|
-
.clear-filters-btn:hover {
|
|
2277
|
-
text-decoration: underline;
|
|
2278
|
-
}
|
|
2279
|
-
|
|
2280
|
-
.clear-filters-btn-separator {
|
|
2281
|
-
display: inline-block;
|
|
2282
|
-
margin-left: 5px;
|
|
2283
|
-
border-left: 1px solid #2c2c2c;
|
|
2284
|
-
font-size: 1.4rem;
|
|
2285
|
-
line-height: 1.3rem;
|
|
2286
|
-
}
|
|
2287
|
-
|
|
2288
|
-
#tv-filters {
|
|
2289
|
-
margin-bottom: 15px;
|
|
2290
|
-
}
|
|
2291
|
-
|
|
2292
|
-
#tv-shows {
|
|
2293
|
-
--comboBoxListWidth: 300px;
|
|
2294
|
-
}
|
|
2295
|
-
|
|
2296
|
-
.tv-filter-dropdown {
|
|
2297
|
-
display: block;
|
|
2298
|
-
font-size: 14px;
|
|
2299
|
-
margin-left: 1px;
|
|
2300
|
-
margin-bottom: 5px;
|
|
2301
|
-
}
|
|
2302
|
-
|
|
2303
|
-
.tv-filter-dropdown::part(combo-box) {
|
|
2304
|
-
outline-offset: 1px;
|
|
2305
|
-
}
|
|
2306
|
-
|
|
2307
|
-
.tv-filter-dropdown::part(option) {
|
|
2308
|
-
line-height: 1.1;
|
|
2309
|
-
padding: 7px;
|
|
2310
|
-
}
|
|
2311
|
-
|
|
2312
|
-
.tv-filter-dropdown::part(clear-button) {
|
|
2313
|
-
flex: 0 0 26px;
|
|
2314
|
-
--combo-box-clear-icon-size: 14px;
|
|
2315
|
-
}
|
|
2316
|
-
|
|
2317
|
-
.tv-filter-dropdown::part(icon) {
|
|
2318
|
-
width: 1.4rem;
|
|
2319
|
-
height: 1.4rem;
|
|
2320
|
-
}
|
|
2321
|
-
|
|
2322
|
-
#facets-container {
|
|
2323
|
-
position: relative;
|
|
2324
|
-
max-height: 0;
|
|
2325
|
-
transition: max-height 0.2s ease-in-out;
|
|
2326
|
-
z-index: 1;
|
|
2327
|
-
margin-top: var(--facetsContainerMarginTop, 3rem);
|
|
2328
|
-
padding-bottom: 2rem;
|
|
2329
|
-
}
|
|
2330
|
-
|
|
2331
|
-
.desktop #facets-container {
|
|
2332
|
-
width: 18rem;
|
|
2333
|
-
}
|
|
2334
|
-
|
|
2335
|
-
.mobile #facets-container {
|
|
2336
|
-
overflow: hidden;
|
|
2337
|
-
padding-bottom: 0;
|
|
2338
|
-
padding-left: 10px;
|
|
2339
|
-
padding-right: 10px;
|
|
2340
|
-
}
|
|
2341
|
-
|
|
2342
|
-
#facets-container.expanded {
|
|
2343
|
-
max-height: 2000px;
|
|
2344
|
-
}
|
|
2345
|
-
|
|
2346
|
-
.results-section-heading {
|
|
2347
|
-
margin: 0.5rem 0.3rem;
|
|
2348
|
-
font-size: 2rem;
|
|
2349
|
-
line-height: 25px;
|
|
2350
|
-
}
|
|
2351
|
-
|
|
2352
|
-
#results-total {
|
|
2353
|
-
display: flex;
|
|
2354
|
-
align-items: baseline;
|
|
2355
|
-
}
|
|
2356
|
-
|
|
2357
|
-
#results-total:not(.filtered) {
|
|
2358
|
-
padding-bottom: 2rem;
|
|
2359
|
-
}
|
|
2360
|
-
|
|
2361
|
-
.mobile #results-total {
|
|
2362
|
-
position: absolute;
|
|
2363
|
-
right: 10px;
|
|
2364
|
-
}
|
|
2365
|
-
|
|
2366
|
-
#big-results-count {
|
|
2367
|
-
font-size: 2.4rem;
|
|
2368
|
-
font-weight: 500;
|
|
2369
|
-
margin-right: 5px;
|
|
2370
|
-
}
|
|
2371
|
-
|
|
2372
|
-
.mobile #big-results-count {
|
|
2373
|
-
font-size: 2rem;
|
|
2374
|
-
}
|
|
2375
|
-
|
|
2376
|
-
#big-results-label {
|
|
2377
|
-
font-size: 1.4rem;
|
|
2378
|
-
font-weight: 200;
|
|
2379
|
-
}
|
|
2380
|
-
|
|
2381
|
-
#list-header {
|
|
2382
|
-
max-height: 4.2rem;
|
|
2383
|
-
}
|
|
2384
|
-
|
|
2385
|
-
.loading-cover {
|
|
2386
|
-
position: absolute;
|
|
2387
|
-
top: 0;
|
|
2388
|
-
left: 0;
|
|
2389
|
-
width: 100%;
|
|
2390
|
-
height: 100%;
|
|
2391
|
-
display: flex;
|
|
2392
|
-
justify-content: center;
|
|
2393
|
-
z-index: 1;
|
|
2394
|
-
padding-top: 50px;
|
|
2395
|
-
}
|
|
2396
|
-
|
|
2397
|
-
#tile-blur-label {
|
|
2398
|
-
display: flex;
|
|
2399
|
-
align-items: center;
|
|
2400
|
-
column-gap: 5px;
|
|
2401
|
-
}
|
|
2402
|
-
|
|
2403
|
-
#tile-blur-check {
|
|
2404
|
-
margin: 0 5px 0 0;
|
|
2405
|
-
width: 15px;
|
|
2406
|
-
}
|
|
2407
|
-
|
|
2408
|
-
circular-activity-indicator {
|
|
2409
|
-
width: 30px;
|
|
2410
|
-
height: 30px;
|
|
2411
|
-
}
|
|
2412
|
-
|
|
2413
|
-
sort-filter-bar {
|
|
2414
|
-
display: block;
|
|
2415
|
-
margin-bottom: 4rem;
|
|
2416
|
-
}
|
|
2417
|
-
|
|
2418
|
-
infinite-scroller {
|
|
2419
|
-
display: block;
|
|
2420
|
-
--infiniteScrollerRowGap: var(--collectionBrowserRowGap, 1.7rem);
|
|
2421
|
-
--infiniteScrollerColGap: var(--collectionBrowserColGap, 1.7rem);
|
|
2422
|
-
}
|
|
2423
|
-
|
|
2424
|
-
infinite-scroller.list-compact {
|
|
2425
|
-
--infiniteScrollerCellMinWidth: var(
|
|
2426
|
-
--collectionBrowserCellMinWidth,
|
|
2427
|
-
100%
|
|
2428
|
-
);
|
|
2429
|
-
--infiniteScrollerCellMinHeight: 45px; /* override infinite scroller component */
|
|
2430
|
-
--infiniteScrollerCellMaxHeight: 56px;
|
|
2431
|
-
--infiniteScrollerRowGap: 10px;
|
|
2432
|
-
}
|
|
2433
|
-
|
|
2434
|
-
infinite-scroller.list-detail {
|
|
2435
|
-
--infiniteScrollerCellMinWidth: var(
|
|
2436
|
-
--collectionBrowserCellMinWidth,
|
|
2437
|
-
100%
|
|
2438
|
-
);
|
|
2439
|
-
--infiniteScrollerCellMinHeight: var(
|
|
2440
|
-
--collectionBrowserCellMinHeight,
|
|
2441
|
-
5rem
|
|
2442
|
-
);
|
|
2443
|
-
/*
|
|
2444
|
-
30px in spec, compensating for a -4px margin
|
|
2445
|
-
to align title with top of item image
|
|
2446
|
-
src/tiles/list/tile-list.ts
|
|
2447
|
-
*/
|
|
2448
|
-
--infiniteScrollerRowGap: 34px;
|
|
2449
|
-
}
|
|
2450
|
-
|
|
2451
|
-
.mobile infinite-scroller.list-detail {
|
|
2452
|
-
--infiniteScrollerRowGap: 24px;
|
|
2453
|
-
}
|
|
2454
|
-
|
|
2455
|
-
infinite-scroller.grid {
|
|
2456
|
-
--infiniteScrollerCellMinWidth: var(
|
|
2457
|
-
--collectionBrowserCellMinWidth,
|
|
2458
|
-
17rem
|
|
2459
|
-
);
|
|
2460
|
-
--infiniteScrollerCellMaxWidth: var(
|
|
2461
|
-
--collectionBrowserCellMaxWidth,
|
|
2462
|
-
1fr
|
|
2463
|
-
);
|
|
2464
|
-
}
|
|
2465
|
-
|
|
2466
|
-
/* Allow tiles to shrink a bit further at smaller viewport widths */
|
|
2467
|
-
@media screen and (max-width: 880px) {
|
|
2468
|
-
infinite-scroller.grid {
|
|
2469
|
-
--infiniteScrollerCellMinWidth: var(
|
|
2470
|
-
--collectionBrowserCellMinWidth,
|
|
2471
|
-
15rem
|
|
2472
|
-
);
|
|
2473
|
-
}
|
|
2474
|
-
}
|
|
2475
|
-
/* At very small widths, maintain a 2-tile layout as far as it can reasonably go */
|
|
2476
|
-
@media screen and (max-width: 360px) {
|
|
2477
|
-
infinite-scroller.grid {
|
|
2478
|
-
--infiniteScrollerCellMinWidth: var(
|
|
2479
|
-
--collectionBrowserCellMinWidth,
|
|
2480
|
-
12rem
|
|
2481
|
-
);
|
|
2482
|
-
}
|
|
2483
|
-
}
|
|
2484
|
-
|
|
2485
|
-
infinite-scroller.hidden {
|
|
2486
|
-
display: none;
|
|
2487
|
-
}
|
|
2026
|
+
css `
|
|
2027
|
+
:host {
|
|
2028
|
+
display: block;
|
|
2029
|
+
--leftColumnWidth: 18rem;
|
|
2030
|
+
--leftColumnPaddingTop: 2rem;
|
|
2031
|
+
--leftColumnPaddingRight: 2.5rem;
|
|
2032
|
+
}
|
|
2033
|
+
|
|
2034
|
+
#facet-top-view {
|
|
2035
|
+
display: flex;
|
|
2036
|
+
}
|
|
2037
|
+
|
|
2038
|
+
/**
|
|
2039
|
+
* When page width resizes from desktop to mobile, use this class to
|
|
2040
|
+
* disable expand/collapse transition when loading.
|
|
2041
|
+
*/
|
|
2042
|
+
.preload * {
|
|
2043
|
+
transition: none !important;
|
|
2044
|
+
-webkit-transition: none !important;
|
|
2045
|
+
-moz-transition: none !important;
|
|
2046
|
+
-ms-transition: none !important;
|
|
2047
|
+
-o-transition: none !important;
|
|
2048
|
+
}
|
|
2049
|
+
|
|
2050
|
+
#content-container {
|
|
2051
|
+
display: flex;
|
|
2052
|
+
}
|
|
2053
|
+
|
|
2054
|
+
empty-placeholder {
|
|
2055
|
+
margin-top: var(--placeholderMarginTop, 0);
|
|
2056
|
+
}
|
|
2057
|
+
|
|
2058
|
+
.collapser-icon {
|
|
2059
|
+
display: inline-block;
|
|
2060
|
+
}
|
|
2061
|
+
|
|
2062
|
+
.collapser-icon svg {
|
|
2063
|
+
display: inline-block;
|
|
2064
|
+
width: 12px;
|
|
2065
|
+
height: 12px;
|
|
2066
|
+
transition: transform 0.2s ease-out;
|
|
2067
|
+
}
|
|
2068
|
+
|
|
2069
|
+
#mobile-filter-collapse {
|
|
2070
|
+
width: 100%;
|
|
2071
|
+
}
|
|
2072
|
+
|
|
2073
|
+
#mobile-filter-collapse > summary {
|
|
2074
|
+
cursor: pointer;
|
|
2075
|
+
list-style: none;
|
|
2076
|
+
}
|
|
2077
|
+
|
|
2078
|
+
#mobile-filter-collapse[open] > summary {
|
|
2079
|
+
margin-bottom: 10px;
|
|
2080
|
+
}
|
|
2081
|
+
|
|
2082
|
+
#mobile-filter-collapse h2 {
|
|
2083
|
+
display: inline-block;
|
|
2084
|
+
margin: 0;
|
|
2085
|
+
font-size: 2rem;
|
|
2086
|
+
}
|
|
2087
|
+
|
|
2088
|
+
#mobile-filter-collapse[open] svg {
|
|
2089
|
+
transform: rotate(90deg);
|
|
2090
|
+
}
|
|
2091
|
+
|
|
2092
|
+
#content-container.mobile {
|
|
2093
|
+
display: block;
|
|
2094
|
+
}
|
|
2095
|
+
|
|
2096
|
+
#right-column {
|
|
2097
|
+
flex: 1;
|
|
2098
|
+
position: relative;
|
|
2099
|
+
min-height: 90vh;
|
|
2100
|
+
border-right: 1px solid rgb(232, 232, 232);
|
|
2101
|
+
margin-top: var(--rightColumnMarginTop, 0);
|
|
2102
|
+
padding-top: var(--rightColumnPaddingTop, 2rem);
|
|
2103
|
+
background: #fff;
|
|
2104
|
+
}
|
|
2105
|
+
|
|
2106
|
+
#left-column:not([hidden]) + #right-column {
|
|
2107
|
+
border-left: 1px solid rgb(232, 232, 232);
|
|
2108
|
+
}
|
|
2109
|
+
|
|
2110
|
+
#right-column.smart-results-spacing {
|
|
2111
|
+
padding-top: 0.5rem;
|
|
2112
|
+
border-right: none;
|
|
2113
|
+
background: transparent;
|
|
2114
|
+
min-width: 0;
|
|
2115
|
+
}
|
|
2116
|
+
|
|
2117
|
+
#results {
|
|
2118
|
+
background: #fff;
|
|
2119
|
+
padding-left: 1rem;
|
|
2120
|
+
padding-right: 1rem;
|
|
2121
|
+
}
|
|
2122
|
+
|
|
2123
|
+
#right-column.smart-results-spacing #results {
|
|
2124
|
+
border-radius: 10px 10px 0px 0px;
|
|
2125
|
+
padding-top: 0.5rem;
|
|
2126
|
+
margin-top: 1rem;
|
|
2127
|
+
}
|
|
2128
|
+
|
|
2129
|
+
.mobile #right-column {
|
|
2130
|
+
border-left: none;
|
|
2131
|
+
}
|
|
2132
|
+
|
|
2133
|
+
.mobile #results {
|
|
2134
|
+
padding: 5px 5px 0;
|
|
2135
|
+
}
|
|
2136
|
+
|
|
2137
|
+
#left-column {
|
|
2138
|
+
width: var(--leftColumnWidth, 18rem);
|
|
2139
|
+
/* Prevents Safari from shrinking col at first draw */
|
|
2140
|
+
min-width: var(--leftColumnWidth, 18rem);
|
|
2141
|
+
padding-top: var(--leftColumnPaddingTop, 2rem);
|
|
2142
|
+
/* Reduced padding by 0.2rem to add the invisible border in the rule below */
|
|
2143
|
+
padding-right: calc(var(--leftColumnPaddingRight, 2.5rem) - 0.2rem);
|
|
2144
|
+
border-right: 0.2rem solid transparent; /* Pads to the right of the scrollbar a bit */
|
|
2145
|
+
z-index: 1;
|
|
2146
|
+
}
|
|
2147
|
+
|
|
2148
|
+
.desktop #left-column {
|
|
2149
|
+
top: 0;
|
|
2150
|
+
position: sticky;
|
|
2151
|
+
height: calc(100vh - 2rem);
|
|
2152
|
+
max-height: calc(100vh - 2rem);
|
|
2153
|
+
overflow-x: hidden;
|
|
2154
|
+
overflow-y: scroll;
|
|
2155
|
+
|
|
2156
|
+
/*
|
|
2157
|
+
* Firefox doesn't support any of the -webkit-scrollbar stuff below, but
|
|
2158
|
+
* does at least give us a tiny bit of control over width & color.
|
|
2159
|
+
*/
|
|
2160
|
+
scrollbar-width: thin;
|
|
2161
|
+
scrollbar-color: transparent transparent;
|
|
2162
|
+
}
|
|
2163
|
+
.desktop #left-column:hover {
|
|
2164
|
+
scrollbar-color: auto;
|
|
2165
|
+
}
|
|
2166
|
+
.desktop #left-column::-webkit-scrollbar {
|
|
2167
|
+
appearance: none;
|
|
2168
|
+
width: 6px;
|
|
2169
|
+
}
|
|
2170
|
+
.desktop #left-column::-webkit-scrollbar-button {
|
|
2171
|
+
height: 3px;
|
|
2172
|
+
background: transparent;
|
|
2173
|
+
}
|
|
2174
|
+
.desktop #left-column::-webkit-scrollbar-corner {
|
|
2175
|
+
background: transparent;
|
|
2176
|
+
}
|
|
2177
|
+
.desktop #left-column::-webkit-scrollbar-thumb {
|
|
2178
|
+
border-radius: 4px;
|
|
2179
|
+
}
|
|
2180
|
+
.desktop #left-column:hover::-webkit-scrollbar-thumb {
|
|
2181
|
+
background: rgba(0, 0, 0, 0.15);
|
|
2182
|
+
}
|
|
2183
|
+
.desktop #left-column:hover::-webkit-scrollbar-thumb:hover {
|
|
2184
|
+
background: rgba(0, 0, 0, 0.2);
|
|
2185
|
+
}
|
|
2186
|
+
.desktop #left-column:hover::-webkit-scrollbar-thumb:active {
|
|
2187
|
+
background: rgba(0, 0, 0, 0.3);
|
|
2188
|
+
}
|
|
2189
|
+
|
|
2190
|
+
#facets-bottom-fade {
|
|
2191
|
+
background: linear-gradient(
|
|
2192
|
+
to bottom,
|
|
2193
|
+
#fbfbfd00 0%,
|
|
2194
|
+
#fbfbfdc0 50%,
|
|
2195
|
+
#fbfbfd 80%,
|
|
2196
|
+
#fbfbfd 100%
|
|
2197
|
+
);
|
|
2198
|
+
position: fixed;
|
|
2199
|
+
bottom: 0;
|
|
2200
|
+
height: 50px;
|
|
2201
|
+
/* Wide enough to cover the content, but leave the scrollbar uncovered */
|
|
2202
|
+
width: calc(
|
|
2203
|
+
var(--leftColumnWidth) + var(--leftColumnPaddingRight) - 10px
|
|
2204
|
+
);
|
|
2205
|
+
z-index: 2;
|
|
2206
|
+
pointer-events: none;
|
|
2207
|
+
transition: height 0.1s ease;
|
|
2208
|
+
}
|
|
2209
|
+
#facets-bottom-fade.hidden {
|
|
2210
|
+
height: 0;
|
|
2211
|
+
}
|
|
2212
|
+
|
|
2213
|
+
.facets-message {
|
|
2214
|
+
font-size: 1.4rem;
|
|
2215
|
+
}
|
|
2216
|
+
|
|
2217
|
+
.desktop-facets-dropdown > summary {
|
|
2218
|
+
cursor: pointer;
|
|
2219
|
+
list-style: none;
|
|
2220
|
+
}
|
|
2221
|
+
|
|
2222
|
+
.desktop-facets-dropdown h2 {
|
|
2223
|
+
display: inline-block;
|
|
2224
|
+
margin: 0;
|
|
2225
|
+
font-size: 1.6rem;
|
|
2226
|
+
}
|
|
2227
|
+
|
|
2228
|
+
.desktop-facets-dropdown[open] > summary {
|
|
2229
|
+
margin-bottom: 10px;
|
|
2230
|
+
}
|
|
2231
|
+
|
|
2232
|
+
.desktop-facets-dropdown[open] svg {
|
|
2233
|
+
transform: rotate(90deg);
|
|
2234
|
+
}
|
|
2235
|
+
|
|
2236
|
+
.desktop #left-column-scroll-sentinel {
|
|
2237
|
+
width: 1px;
|
|
2238
|
+
height: 100vh;
|
|
2239
|
+
background: transparent;
|
|
2240
|
+
}
|
|
2241
|
+
|
|
2242
|
+
.desktop #facets-scroll-sentinel {
|
|
2243
|
+
width: 1px;
|
|
2244
|
+
height: 1px;
|
|
2245
|
+
background: transparent;
|
|
2246
|
+
}
|
|
2247
|
+
|
|
2248
|
+
#facets-header-container {
|
|
2249
|
+
display: flex;
|
|
2250
|
+
justify-content: space-between;
|
|
2251
|
+
align-items: flex-start;
|
|
2252
|
+
clear: both;
|
|
2253
|
+
}
|
|
2254
|
+
|
|
2255
|
+
.desktop #facets-header-container {
|
|
2256
|
+
flex-wrap: wrap;
|
|
2257
|
+
}
|
|
2258
|
+
|
|
2259
|
+
.mobile #left-column {
|
|
2260
|
+
width: 100%;
|
|
2261
|
+
min-width: 0;
|
|
2262
|
+
padding: 5px 0;
|
|
2263
|
+
border: 0;
|
|
2264
|
+
}
|
|
2265
|
+
|
|
2266
|
+
.clear-filters-btn-row {
|
|
2267
|
+
display: inline-block;
|
|
2268
|
+
}
|
|
2269
|
+
|
|
2270
|
+
.desktop .clear-filters-btn-row {
|
|
2271
|
+
width: 100%;
|
|
2272
|
+
}
|
|
2273
|
+
|
|
2274
|
+
.clear-filters-btn {
|
|
2275
|
+
display: inline-block;
|
|
2276
|
+
appearance: none;
|
|
2277
|
+
margin: 0;
|
|
2278
|
+
padding: 0;
|
|
2279
|
+
border: 0;
|
|
2280
|
+
background: none;
|
|
2281
|
+
color: var(--ia-theme-link-color);
|
|
2282
|
+
font-size: 1.4rem;
|
|
2283
|
+
font-family: inherit;
|
|
2284
|
+
cursor: pointer;
|
|
2285
|
+
}
|
|
2286
|
+
|
|
2287
|
+
.clear-filters-btn:hover {
|
|
2288
|
+
text-decoration: underline;
|
|
2289
|
+
}
|
|
2290
|
+
|
|
2291
|
+
.clear-filters-btn-separator {
|
|
2292
|
+
display: inline-block;
|
|
2293
|
+
margin-left: 5px;
|
|
2294
|
+
border-left: 1px solid #2c2c2c;
|
|
2295
|
+
font-size: 1.4rem;
|
|
2296
|
+
line-height: 1.3rem;
|
|
2297
|
+
}
|
|
2298
|
+
|
|
2299
|
+
#tv-filters {
|
|
2300
|
+
margin-bottom: 15px;
|
|
2301
|
+
}
|
|
2302
|
+
|
|
2303
|
+
#tv-shows {
|
|
2304
|
+
--comboBoxListWidth: 300px;
|
|
2305
|
+
}
|
|
2306
|
+
|
|
2307
|
+
.tv-filter-dropdown {
|
|
2308
|
+
display: block;
|
|
2309
|
+
font-size: 14px;
|
|
2310
|
+
margin-left: 1px;
|
|
2311
|
+
margin-bottom: 5px;
|
|
2312
|
+
}
|
|
2313
|
+
|
|
2314
|
+
.tv-filter-dropdown::part(combo-box) {
|
|
2315
|
+
outline-offset: 1px;
|
|
2316
|
+
}
|
|
2317
|
+
|
|
2318
|
+
.tv-filter-dropdown::part(option) {
|
|
2319
|
+
line-height: 1.1;
|
|
2320
|
+
padding: 7px;
|
|
2321
|
+
}
|
|
2322
|
+
|
|
2323
|
+
.tv-filter-dropdown::part(clear-button) {
|
|
2324
|
+
flex: 0 0 26px;
|
|
2325
|
+
--combo-box-clear-icon-size: 14px;
|
|
2326
|
+
}
|
|
2327
|
+
|
|
2328
|
+
.tv-filter-dropdown::part(icon) {
|
|
2329
|
+
width: 1.4rem;
|
|
2330
|
+
height: 1.4rem;
|
|
2331
|
+
}
|
|
2332
|
+
|
|
2333
|
+
#facets-container {
|
|
2334
|
+
position: relative;
|
|
2335
|
+
max-height: 0;
|
|
2336
|
+
transition: max-height 0.2s ease-in-out;
|
|
2337
|
+
z-index: 1;
|
|
2338
|
+
margin-top: var(--facetsContainerMarginTop, 3rem);
|
|
2339
|
+
padding-bottom: 2rem;
|
|
2340
|
+
}
|
|
2341
|
+
|
|
2342
|
+
.desktop #facets-container {
|
|
2343
|
+
width: 18rem;
|
|
2344
|
+
}
|
|
2345
|
+
|
|
2346
|
+
.mobile #facets-container {
|
|
2347
|
+
overflow: hidden;
|
|
2348
|
+
padding-bottom: 0;
|
|
2349
|
+
padding-left: 10px;
|
|
2350
|
+
padding-right: 10px;
|
|
2351
|
+
}
|
|
2352
|
+
|
|
2353
|
+
#facets-container.expanded {
|
|
2354
|
+
max-height: 2000px;
|
|
2355
|
+
}
|
|
2356
|
+
|
|
2357
|
+
.results-section-heading {
|
|
2358
|
+
margin: 0.5rem 0.3rem;
|
|
2359
|
+
font-size: 2rem;
|
|
2360
|
+
line-height: 25px;
|
|
2361
|
+
}
|
|
2362
|
+
|
|
2363
|
+
#results-total {
|
|
2364
|
+
display: flex;
|
|
2365
|
+
align-items: baseline;
|
|
2366
|
+
}
|
|
2367
|
+
|
|
2368
|
+
#results-total:not(.filtered) {
|
|
2369
|
+
padding-bottom: 2rem;
|
|
2370
|
+
}
|
|
2371
|
+
|
|
2372
|
+
.mobile #results-total {
|
|
2373
|
+
position: absolute;
|
|
2374
|
+
right: 10px;
|
|
2375
|
+
}
|
|
2376
|
+
|
|
2377
|
+
#big-results-count {
|
|
2378
|
+
font-size: 2.4rem;
|
|
2379
|
+
font-weight: 500;
|
|
2380
|
+
margin-right: 5px;
|
|
2381
|
+
}
|
|
2382
|
+
|
|
2383
|
+
.mobile #big-results-count {
|
|
2384
|
+
font-size: 2rem;
|
|
2385
|
+
}
|
|
2386
|
+
|
|
2387
|
+
#big-results-label {
|
|
2388
|
+
font-size: 1.4rem;
|
|
2389
|
+
font-weight: 200;
|
|
2390
|
+
}
|
|
2391
|
+
|
|
2392
|
+
#list-header {
|
|
2393
|
+
max-height: 4.2rem;
|
|
2394
|
+
}
|
|
2395
|
+
|
|
2396
|
+
.loading-cover {
|
|
2397
|
+
position: absolute;
|
|
2398
|
+
top: 0;
|
|
2399
|
+
left: 0;
|
|
2400
|
+
width: 100%;
|
|
2401
|
+
height: 100%;
|
|
2402
|
+
display: flex;
|
|
2403
|
+
justify-content: center;
|
|
2404
|
+
z-index: 1;
|
|
2405
|
+
padding-top: 50px;
|
|
2406
|
+
}
|
|
2407
|
+
|
|
2408
|
+
#tile-blur-label {
|
|
2409
|
+
display: flex;
|
|
2410
|
+
align-items: center;
|
|
2411
|
+
column-gap: 5px;
|
|
2412
|
+
}
|
|
2413
|
+
|
|
2414
|
+
#tile-blur-check {
|
|
2415
|
+
margin: 0 5px 0 0;
|
|
2416
|
+
width: 15px;
|
|
2417
|
+
}
|
|
2418
|
+
|
|
2419
|
+
circular-activity-indicator {
|
|
2420
|
+
width: 30px;
|
|
2421
|
+
height: 30px;
|
|
2422
|
+
}
|
|
2423
|
+
|
|
2424
|
+
sort-filter-bar {
|
|
2425
|
+
display: block;
|
|
2426
|
+
margin-bottom: 4rem;
|
|
2427
|
+
}
|
|
2428
|
+
|
|
2429
|
+
infinite-scroller {
|
|
2430
|
+
display: block;
|
|
2431
|
+
--infiniteScrollerRowGap: var(--collectionBrowserRowGap, 1.7rem);
|
|
2432
|
+
--infiniteScrollerColGap: var(--collectionBrowserColGap, 1.7rem);
|
|
2433
|
+
}
|
|
2434
|
+
|
|
2435
|
+
infinite-scroller.list-compact {
|
|
2436
|
+
--infiniteScrollerCellMinWidth: var(
|
|
2437
|
+
--collectionBrowserCellMinWidth,
|
|
2438
|
+
100%
|
|
2439
|
+
);
|
|
2440
|
+
--infiniteScrollerCellMinHeight: 45px; /* override infinite scroller component */
|
|
2441
|
+
--infiniteScrollerCellMaxHeight: 56px;
|
|
2442
|
+
--infiniteScrollerRowGap: 10px;
|
|
2443
|
+
}
|
|
2444
|
+
|
|
2445
|
+
infinite-scroller.list-detail {
|
|
2446
|
+
--infiniteScrollerCellMinWidth: var(
|
|
2447
|
+
--collectionBrowserCellMinWidth,
|
|
2448
|
+
100%
|
|
2449
|
+
);
|
|
2450
|
+
--infiniteScrollerCellMinHeight: var(
|
|
2451
|
+
--collectionBrowserCellMinHeight,
|
|
2452
|
+
5rem
|
|
2453
|
+
);
|
|
2454
|
+
/*
|
|
2455
|
+
30px in spec, compensating for a -4px margin
|
|
2456
|
+
to align title with top of item image
|
|
2457
|
+
src/tiles/list/tile-list.ts
|
|
2458
|
+
*/
|
|
2459
|
+
--infiniteScrollerRowGap: 34px;
|
|
2460
|
+
}
|
|
2461
|
+
|
|
2462
|
+
.mobile infinite-scroller.list-detail {
|
|
2463
|
+
--infiniteScrollerRowGap: 24px;
|
|
2464
|
+
}
|
|
2465
|
+
|
|
2466
|
+
infinite-scroller.grid {
|
|
2467
|
+
--infiniteScrollerCellMinWidth: var(
|
|
2468
|
+
--collectionBrowserCellMinWidth,
|
|
2469
|
+
17rem
|
|
2470
|
+
);
|
|
2471
|
+
--infiniteScrollerCellMaxWidth: var(
|
|
2472
|
+
--collectionBrowserCellMaxWidth,
|
|
2473
|
+
1fr
|
|
2474
|
+
);
|
|
2475
|
+
}
|
|
2476
|
+
|
|
2477
|
+
/* Allow tiles to shrink a bit further at smaller viewport widths */
|
|
2478
|
+
@media screen and (max-width: 880px) {
|
|
2479
|
+
infinite-scroller.grid {
|
|
2480
|
+
--infiniteScrollerCellMinWidth: var(
|
|
2481
|
+
--collectionBrowserCellMinWidth,
|
|
2482
|
+
15rem
|
|
2483
|
+
);
|
|
2484
|
+
}
|
|
2485
|
+
}
|
|
2486
|
+
/* At very small widths, maintain a 2-tile layout as far as it can reasonably go */
|
|
2487
|
+
@media screen and (max-width: 360px) {
|
|
2488
|
+
infinite-scroller.grid {
|
|
2489
|
+
--infiniteScrollerCellMinWidth: var(
|
|
2490
|
+
--collectionBrowserCellMinWidth,
|
|
2491
|
+
12rem
|
|
2492
|
+
);
|
|
2493
|
+
}
|
|
2494
|
+
}
|
|
2495
|
+
|
|
2496
|
+
infinite-scroller.hidden {
|
|
2497
|
+
display: none;
|
|
2498
|
+
}
|
|
2488
2499
|
`,
|
|
2489
2500
|
];
|
|
2490
2501
|
}
|
|
@@ -2633,6 +2644,12 @@ __decorate([
|
|
|
2633
2644
|
__decorate([
|
|
2634
2645
|
property({ type: Boolean })
|
|
2635
2646
|
], CollectionBrowser.prototype, "isManageView", void 0);
|
|
2647
|
+
__decorate([
|
|
2648
|
+
property({ type: Array })
|
|
2649
|
+
], CollectionBrowser.prototype, "tileActions", void 0);
|
|
2650
|
+
__decorate([
|
|
2651
|
+
property({ type: String })
|
|
2652
|
+
], CollectionBrowser.prototype, "tileLayoutType", void 0);
|
|
2636
2653
|
__decorate([
|
|
2637
2654
|
property({ type: String })
|
|
2638
2655
|
], CollectionBrowser.prototype, "manageViewLabel", void 0);
|