@internetarchive/collection-browser 2.18.3-alpha-webdev7768.8 → 2.19.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.
@@ -317,6 +317,9 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
317
317
  this.sortDirection = null;
318
318
  this.selectedSort = SortField.default;
319
319
  }
320
+ if (this.smartFacetBar) {
321
+ this.smartFacetBar.deselectAll();
322
+ }
320
323
  }
321
324
  /**
322
325
  * Returns true if the current value of `this.selectedFacets` contains
@@ -350,32 +353,32 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
350
353
  this.setPlaceholderType();
351
354
  }
352
355
  render() {
353
- return html `
356
+ return html `
354
357
  ${this.showSmartFacetBar && this.placeholderType === null
355
- ? html `<smart-facet-bar
356
- .query=${this.baseQuery}
357
- .aggregations=${this.dataSource.aggregations}
358
- .selectedFacets=${this.selectedFacets}
359
- .collectionTitles=${this.dataSource.collectionTitles}
360
- .filterToggleShown=${!this.mobileView}
361
- .filterToggleActive=${this.facetPaneVisible}
362
- .label=${this.smartFacetBarLabel}
363
- @facetsChanged=${this.facetsChanged}
358
+ ? html `<smart-facet-bar
359
+ .query=${this.baseQuery}
360
+ .aggregations=${this.dataSource.aggregations}
361
+ .selectedFacets=${this.selectedFacets}
362
+ .collectionTitles=${this.dataSource.collectionTitles}
363
+ .filterToggleShown=${!this.mobileView}
364
+ .filterToggleActive=${this.facetPaneVisible}
365
+ .label=${this.smartFacetBarLabel}
366
+ @facetsChanged=${this.facetsChanged}
364
367
  @filtersToggled=${() => {
365
368
  this.facetPaneVisible = !this.facetPaneVisible;
366
369
  this.emitFacetPaneVisibilityChanged();
367
- }}
370
+ }}
368
371
  ></smart-facet-bar>`
369
- : nothing}
370
-
371
- <div
372
- id="content-container"
373
- class=${this.mobileView ? 'mobile' : 'desktop'}
374
- >
372
+ : nothing}
373
+
374
+ <div
375
+ id="content-container"
376
+ class=${this.mobileView ? 'mobile' : 'desktop'}
377
+ >
375
378
  ${this.placeholderType
376
379
  ? this.emptyPlaceholderTemplate
377
- : this.collectionBrowserTemplate}
378
- </div>
380
+ : this.collectionBrowserTemplate}
381
+ </div>
379
382
  `;
380
383
  }
381
384
  /**
@@ -415,23 +418,23 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
415
418
  */
416
419
  get emptyPlaceholderTemplate() {
417
420
  var _a;
418
- return html `
419
- <empty-placeholder
420
- .placeholderType=${this.placeholderType}
421
- ?isMobileView=${this.mobileView}
422
- ?isCollection=${!!this.withinCollection}
423
- .detailMessage=${(_a = this.dataSource.queryErrorMessage) !== null && _a !== void 0 ? _a : ''}
424
- .baseNavigationUrl=${this.baseNavigationUrl}
425
- ></empty-placeholder>
421
+ return html `
422
+ <empty-placeholder
423
+ .placeholderType=${this.placeholderType}
424
+ ?isMobileView=${this.mobileView}
425
+ ?isCollection=${!!this.withinCollection}
426
+ .detailMessage=${(_a = this.dataSource.queryErrorMessage) !== null && _a !== void 0 ? _a : ''}
427
+ .baseNavigationUrl=${this.baseNavigationUrl}
428
+ ></empty-placeholder>
426
429
  `;
427
430
  }
428
431
  /**
429
432
  * Top-level template for rendering the left (facets) and right (results) columns.
430
433
  */
431
434
  get collectionBrowserTemplate() {
432
- return html `
433
- <div id="left-column-scroll-sentinel"></div>
434
- ${this.leftColumnTemplate} ${this.rightColumnTemplate}
435
+ return html `
436
+ <div id="left-column-scroll-sentinel"></div>
437
+ ${this.leftColumnTemplate} ${this.rightColumnTemplate}
435
438
  `;
436
439
  }
437
440
  /**
@@ -450,37 +453,37 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
450
453
  * accordion-style facets.
451
454
  */
452
455
  get mobileLeftColumnTemplate() {
453
- return html `
454
- <div
455
- id="left-column"
456
- class="column${this.isResizeToMobile ? ' preload' : ''}"
457
- >
458
- ${this.facetTopViewSlot} ${this.resultsCountTemplate}
459
- <div id="facets-header-container">${this.mobileFacetsTemplate}</div>
460
- </div>
456
+ return html `
457
+ <div
458
+ id="left-column"
459
+ class="column${this.isResizeToMobile ? ' preload' : ''}"
460
+ >
461
+ ${this.facetTopViewSlot} ${this.resultsCountTemplate}
462
+ <div id="facets-header-container">${this.mobileFacetsTemplate}</div>
463
+ </div>
461
464
  `;
462
465
  }
463
466
  /**
464
467
  * Template for the desktop version of the left column, displaying the facets sidebar.
465
468
  */
466
469
  get desktopLeftColumnTemplate() {
467
- return html `
468
- <div
469
- id="left-column"
470
- class="column"
471
- ?hidden=${this.showSmartFacetBar && !this.facetPaneVisible}
472
- >
473
- ${this.facetTopViewSlot}
474
- <div id="facets-header-container">
475
- <h2 id="facets-header" class="sr-only">Filters</h2>
476
- ${this.resultsCountTemplate} ${this.clearFiltersBtnTemplate(false)}
477
- </div>
478
- <div id="facets-container" aria-labelledby="facets-header">
479
- ${this.facetsTemplate}
480
- <div id="facets-scroll-sentinel"></div>
481
- </div>
482
- <div id="facets-bottom-fade"></div>
483
- </div>
470
+ return html `
471
+ <div
472
+ id="left-column"
473
+ class="column"
474
+ ?hidden=${this.showSmartFacetBar && !this.facetPaneVisible}
475
+ >
476
+ ${this.facetTopViewSlot}
477
+ <div id="facets-header-container">
478
+ <h2 id="facets-header" class="sr-only">Filters</h2>
479
+ ${this.resultsCountTemplate} ${this.clearFiltersBtnTemplate(false)}
480
+ </div>
481
+ <div id="facets-container" aria-labelledby="facets-header">
482
+ ${this.facetsTemplate}
483
+ <div id="facets-scroll-sentinel"></div>
484
+ </div>
485
+ <div id="facets-bottom-fade"></div>
486
+ </div>
484
487
  `;
485
488
  }
486
489
  /**
@@ -488,8 +491,8 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
488
491
  * - mainly used to render userlists
489
492
  */
490
493
  get facetTopViewSlot() {
491
- return html `<div id="facet-top-view">
492
- <slot name="facet-top-slot"></slot>
494
+ return html `<div id="facet-top-view">
495
+ <slot name="facet-top-slot"></slot>
493
496
  </div>`;
494
497
  }
495
498
  /**
@@ -504,15 +507,15 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
504
507
  const resultsCount = (_a = this.totalResults) === null || _a === void 0 ? void 0 : _a.toLocaleString();
505
508
  const resultsLabel = this.totalResults === 1 ? 'Result' : 'Results';
506
509
  // Added data-testid for Playwright testing
507
- return html `
508
- <div id="results-total" data-testid="results-total">
509
- <span id="big-results-count">
510
- ${shouldShowSearching ? html `Searching&hellip;` : resultsCount}
511
- </span>
512
- <span id="big-results-label">
513
- ${shouldShowSearching ? nothing : resultsLabel}
514
- </span>
515
- </div>
510
+ return html `
511
+ <div id="results-total" data-testid="results-total">
512
+ <span id="big-results-count">
513
+ ${shouldShowSearching ? html `Searching&hellip;` : resultsCount}
514
+ </span>
515
+ <span id="big-results-label">
516
+ ${shouldShowSearching ? nothing : resultsLabel}
517
+ </span>
518
+ </div>
516
519
  `;
517
520
  }
518
521
  /**
@@ -526,47 +529,47 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
526
529
  'full-width': this.showSmartFacetBar && !this.facetPaneVisible,
527
530
  'smart-results-spacing': !!this.showSmartResults,
528
531
  });
529
- return html `
530
- <div id="right-column" class=${rightColumnClasses}>
532
+ return html `
533
+ <div id="right-column" class=${rightColumnClasses}>
531
534
  ${this.showSmartResults
532
535
  ? html `<slot name="smart-results"></slot>`
533
- : nothing}
534
- <section id="results">
536
+ : nothing}
537
+ <section id="results">
535
538
  ${this.showSmartResults
536
- ? html `<h2 class="results-section-heading">
537
- ${(_a = this.resultsHeader) !== null && _a !== void 0 ? _a : msg('All results')}
539
+ ? html `<h2 class="results-section-heading">
540
+ ${(_a = this.resultsHeader) !== null && _a !== void 0 ? _a : msg('All results')}
538
541
  </h2>`
539
- : nothing}
540
- <div id="cb-top-view">
541
- <slot name="cb-top-slot"></slot>
542
- </div>
542
+ : nothing}
543
+ <div id="cb-top-view">
544
+ <slot name="cb-top-slot"></slot>
545
+ </div>
543
546
  ${this.isManageView
544
547
  ? this.manageBarTemplate
545
- : this.sortFilterBarTemplate}
546
- <slot name="cb-results"></slot>
548
+ : this.sortFilterBarTemplate}
549
+ <slot name="cb-results"></slot>
547
550
  ${this.displayMode === `list-compact` && this.totalResults
548
551
  ? this.listHeaderTemplate
549
- : nothing}
550
- ${this.suppressResultTiles ? nothing : this.infiniteScrollerTemplate}
551
- </section>
552
- </div>
552
+ : nothing}
553
+ ${this.suppressResultTiles ? nothing : this.infiniteScrollerTemplate}
554
+ </section>
555
+ </div>
553
556
  `;
554
557
  }
555
558
  /**
556
559
  * Template for the infinite scroller widget that contains the result tiles.
557
560
  */
558
561
  get infiniteScrollerTemplate() {
559
- return html `<infinite-scroller
560
- class=${this.infiniteScrollerClasses}
561
- itemCount=${this.placeholderType ? 0 : nothing}
562
- ariaLandmarkLabel="Search results"
563
- .cellProvider=${this}
564
- .placeholderCellTemplate=${this.placeholderCellTemplate}
565
- @scrollThresholdReached=${this.scrollThresholdReached}
566
- @visibleCellsChanged=${this.visibleCellsChanged}
562
+ return html `<infinite-scroller
563
+ class=${this.infiniteScrollerClasses}
564
+ itemCount=${this.placeholderType ? 0 : nothing}
565
+ ariaLandmarkLabel="Search results"
566
+ .cellProvider=${this}
567
+ .placeholderCellTemplate=${this.placeholderCellTemplate}
568
+ @scrollThresholdReached=${this.scrollThresholdReached}
569
+ @visibleCellsChanged=${this.visibleCellsChanged}
567
570
  >${this.displayMode === 'grid'
568
571
  ? html `<slot name="result-last-tile" slot="result-last-tile"></slot>`
569
- : nothing}
572
+ : nothing}
570
573
  </infinite-scroller>`;
571
574
  }
572
575
  /**
@@ -587,31 +590,31 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
587
590
  var _a;
588
591
  if (this.suppressSortBar)
589
592
  return nothing;
590
- return html `
591
- <sort-filter-bar
592
- .defaultSortField=${this.defaultSortField}
593
- .defaultSortDirection=${this.defaultSortDirection}
594
- .selectedSort=${this.selectedSort}
595
- .sortDirection=${this.sortDirection}
596
- .showRelevance=${this.isRelevanceSortAvailable}
597
- .showDateFavorited=${(_a = this.withinCollection) === null || _a === void 0 ? void 0 : _a.startsWith('fav-')}
598
- .displayMode=${this.displayMode}
599
- .selectedTitleFilter=${this.selectedTitleFilter}
600
- .selectedCreatorFilter=${this.selectedCreatorFilter}
601
- .prefixFilterCountMap=${this.dataSource.prefixFilterCountMap}
602
- .resizeObserver=${this.resizeObserver}
603
- .enableSortOptionsSlot=${this.enableSortOptionsSlot}
604
- .suppressDisplayModes=${this.suppressDisplayModes}
605
- @sortChanged=${this.userChangedSort}
606
- @displayModeChanged=${this.displayModeChanged}
607
- @titleLetterChanged=${this.titleLetterSelected}
608
- @creatorLetterChanged=${this.creatorLetterSelected}
609
- >
610
- ${this.tileBlurCheckboxTemplate}
611
- <slot name="sort-options-left" slot="sort-options-left"></slot>
612
- <slot name="sort-options" slot="sort-options"></slot>
613
- <slot name="sort-options-right" slot="sort-options-right"></slot>
614
- </sort-filter-bar>
593
+ return html `
594
+ <sort-filter-bar
595
+ .defaultSortField=${this.defaultSortField}
596
+ .defaultSortDirection=${this.defaultSortDirection}
597
+ .selectedSort=${this.selectedSort}
598
+ .sortDirection=${this.sortDirection}
599
+ .showRelevance=${this.isRelevanceSortAvailable}
600
+ .showDateFavorited=${(_a = this.withinCollection) === null || _a === void 0 ? void 0 : _a.startsWith('fav-')}
601
+ .displayMode=${this.displayMode}
602
+ .selectedTitleFilter=${this.selectedTitleFilter}
603
+ .selectedCreatorFilter=${this.selectedCreatorFilter}
604
+ .prefixFilterCountMap=${this.dataSource.prefixFilterCountMap}
605
+ .resizeObserver=${this.resizeObserver}
606
+ .enableSortOptionsSlot=${this.enableSortOptionsSlot}
607
+ .suppressDisplayModes=${this.suppressDisplayModes}
608
+ @sortChanged=${this.userChangedSort}
609
+ @displayModeChanged=${this.displayModeChanged}
610
+ @titleLetterChanged=${this.titleLetterSelected}
611
+ @creatorLetterChanged=${this.creatorLetterSelected}
612
+ >
613
+ ${this.tileBlurCheckboxTemplate}
614
+ <slot name="sort-options-left" slot="sort-options-left"></slot>
615
+ <slot name="sort-options" slot="sort-options"></slot>
616
+ <slot name="sort-options-right" slot="sort-options-right"></slot>
617
+ </sort-filter-bar>
615
618
  `;
616
619
  }
617
620
  /**
@@ -623,20 +626,20 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
623
626
  // Only show the checkbox for @archive.org users
624
627
  if (!((_a = this.dataSource.sessionContext) === null || _a === void 0 ? void 0 : _a.is_archive_user))
625
628
  return nothing;
626
- return html `
627
- <label
628
- id="tile-blur-label"
629
- for="tile-blur-check"
630
- slot="sort-options-right"
631
- >
632
- ${msg('Blurring')}
633
- <input
634
- id="tile-blur-check"
635
- type="checkbox"
636
- ?checked=${!this.shouldSuppressTileBlurring}
637
- @change=${this.tileBlurCheckboxChanged}
638
- />
639
- </label>
629
+ return html `
630
+ <label
631
+ id="tile-blur-label"
632
+ for="tile-blur-check"
633
+ slot="sort-options-right"
634
+ >
635
+ ${msg('Blurring')}
636
+ <input
637
+ id="tile-blur-check"
638
+ type="checkbox"
639
+ ?checked=${!this.shouldSuppressTileBlurring}
640
+ @change=${this.tileBlurCheckboxChanged}
641
+ />
642
+ </label>
640
643
  `;
641
644
  }
642
645
  /**
@@ -647,27 +650,27 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
647
650
  const manageViewModalMsg = this.profileElement === 'uploads'
648
651
  ? 'Note: it may take a few minutes for these items to stop appearing in your uploads list.'
649
652
  : nothing;
650
- return html `
651
- <manage-bar
652
- .label=${this.manageViewLabel}
653
- .modalManager=${this.modalManager}
654
- .selectedItems=${this.dataSource.checkedTileModels}
655
- .manageViewModalMsg=${manageViewModalMsg}
656
- showSelectAll
657
- showUnselectAll
658
- ?showItemManageButton=${this.pageContext === 'search'}
659
- ?removeAllowed=${this.dataSource.checkedTileModels.length !== 0}
660
- @removeItems=${this.handleRemoveItems}
661
- @manageItems=${this.handleManageItems}
662
- @selectAll=${() => this.dataSource.checkAllTiles()}
663
- @unselectAll=${() => this.dataSource.uncheckAllTiles()}
653
+ return html `
654
+ <manage-bar
655
+ .label=${this.manageViewLabel}
656
+ .modalManager=${this.modalManager}
657
+ .selectedItems=${this.dataSource.checkedTileModels}
658
+ .manageViewModalMsg=${manageViewModalMsg}
659
+ showSelectAll
660
+ showUnselectAll
661
+ ?showItemManageButton=${this.pageContext === 'search'}
662
+ ?removeAllowed=${this.dataSource.checkedTileModels.length !== 0}
663
+ @removeItems=${this.handleRemoveItems}
664
+ @manageItems=${this.handleManageItems}
665
+ @selectAll=${() => this.dataSource.checkAllTiles()}
666
+ @unselectAll=${() => this.dataSource.uncheckAllTiles()}
664
667
  @cancel=${() => {
665
668
  this.isManageView = false;
666
669
  this.dataSource.uncheckAllTiles();
667
670
  if (this.searchResultsLoading)
668
671
  this.dataSource.resetPages();
669
- }}
670
- ></manage-bar>
672
+ }}
673
+ ></manage-bar>
671
674
  `;
672
675
  }
673
676
  /**
@@ -915,15 +918,15 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
915
918
  label: target.open ? 'open' : 'closed',
916
919
  });
917
920
  };
918
- return html `
919
- <details id="mobile-filter-collapse" @toggle=${toggleFacetsVisible}>
920
- <summary>
921
- <span class="collapser-icon">${chevronIcon}</span>
922
- <h2>${msg('Filters')}</h2>
923
- ${this.clearFiltersBtnTemplate(true)}
924
- </summary>
925
- ${this.facetsTemplate}
926
- </details>
921
+ return html `
922
+ <details id="mobile-filter-collapse" @toggle=${toggleFacetsVisible}>
923
+ <summary>
924
+ <span class="collapser-icon">${chevronIcon}</span>
925
+ <h2>${msg('Filters')}</h2>
926
+ ${this.clearFiltersBtnTemplate(true)}
927
+ </summary>
928
+ ${this.facetsTemplate}
929
+ </details>
927
930
  `;
928
931
  }
929
932
  /**
@@ -933,10 +936,10 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
933
936
  if (FACETLESS_PAGE_ELEMENTS.includes(this.profileElement))
934
937
  return nothing;
935
938
  if (this.facetLoadStrategy === 'off') {
936
- return html `
937
- <p class="facets-message">
938
- ${msg('Facets are temporarily unavailable.')}
939
- </p>
939
+ return html `
940
+ <p class="facets-message">
941
+ ${msg('Facets are temporarily unavailable.')}
942
+ </p>
940
943
  `;
941
944
  }
942
945
  // We switch to TV facet ordering & date picker if we are in a TV collection or showing TV search results
@@ -945,44 +948,44 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
945
948
  const facetDisplayOrder = shouldUseTvInterface
946
949
  ? tvFacetDisplayOrder
947
950
  : defaultFacetDisplayOrder;
948
- const facets = html `
949
- <collection-facets
950
- .collectionPagePath=${this.collectionPagePath}
951
- .parentCollections=${this.dataSource.parentCollections}
952
- .pageSpecifierParams=${this.dataSource.pageSpecifierParams}
953
- .searchService=${this.searchService}
954
- .featureFeedbackService=${this.featureFeedbackService}
955
- .recaptchaManager=${this.recaptchaManager}
956
- .resizeObserver=${this.resizeObserver}
957
- .searchType=${this.searchType}
958
- .aggregations=${this.dataSource.aggregations}
959
- .histogramAggregation=${this.dataSource.histogramAggregation}
960
- .minSelectedDate=${this.minSelectedDate}
961
- .maxSelectedDate=${this.maxSelectedDate}
962
- .selectedFacets=${this.selectedFacets}
963
- .baseNavigationUrl=${this.baseNavigationUrl}
964
- .collectionTitles=${this.dataSource.collectionTitles}
965
- .tvChannelAliases=${this.dataSource.tvChannelAliases}
966
- .showHistogramDatePicker=${this.showHistogramDatePicker}
967
- .allowExpandingDatePicker=${!this.mobileView}
968
- .allowDatePickerMonths=${shouldUseTvInterface}
969
- .contentWidth=${this.contentWidth}
970
- .query=${this.baseQuery}
971
- .filterMap=${this.dataSource.filterMap}
972
- .isManageView=${this.isManageView}
973
- .modalManager=${this.modalManager}
974
- .analyticsHandler=${this.analyticsHandler}
975
- .facetDisplayOrder=${facetDisplayOrder}
976
- .isTvSearch=${shouldUseTvInterface}
977
- ?collapsableFacets=${this.mobileView}
978
- ?facetsLoading=${this.facetsLoading}
979
- ?histogramAggregationLoading=${this.facetsLoading}
980
- ?suppressMediatypeFacets=${this.suppressMediatypeFacets}
981
- @facetClick=${this.facetClickHandler}
982
- @facetsChanged=${this.facetsChanged}
983
- @histogramDateRangeUpdated=${this.histogramDateRangeUpdated}
984
- >
985
- </collection-facets>
951
+ const facets = html `
952
+ <collection-facets
953
+ .collectionPagePath=${this.collectionPagePath}
954
+ .parentCollections=${this.dataSource.parentCollections}
955
+ .pageSpecifierParams=${this.dataSource.pageSpecifierParams}
956
+ .searchService=${this.searchService}
957
+ .featureFeedbackService=${this.featureFeedbackService}
958
+ .recaptchaManager=${this.recaptchaManager}
959
+ .resizeObserver=${this.resizeObserver}
960
+ .searchType=${this.searchType}
961
+ .aggregations=${this.dataSource.aggregations}
962
+ .histogramAggregation=${this.dataSource.histogramAggregation}
963
+ .minSelectedDate=${this.minSelectedDate}
964
+ .maxSelectedDate=${this.maxSelectedDate}
965
+ .selectedFacets=${this.selectedFacets}
966
+ .baseNavigationUrl=${this.baseNavigationUrl}
967
+ .collectionTitles=${this.dataSource.collectionTitles}
968
+ .tvChannelAliases=${this.dataSource.tvChannelAliases}
969
+ .showHistogramDatePicker=${this.showHistogramDatePicker}
970
+ .allowExpandingDatePicker=${!this.mobileView}
971
+ .allowDatePickerMonths=${shouldUseTvInterface}
972
+ .contentWidth=${this.contentWidth}
973
+ .query=${this.baseQuery}
974
+ .filterMap=${this.dataSource.filterMap}
975
+ .isManageView=${this.isManageView}
976
+ .modalManager=${this.modalManager}
977
+ .analyticsHandler=${this.analyticsHandler}
978
+ .facetDisplayOrder=${facetDisplayOrder}
979
+ .isTvSearch=${shouldUseTvInterface}
980
+ ?collapsableFacets=${this.mobileView}
981
+ ?facetsLoading=${this.facetsLoading}
982
+ ?histogramAggregationLoading=${this.facetsLoading}
983
+ ?suppressMediatypeFacets=${this.suppressMediatypeFacets}
984
+ @facetClick=${this.facetClickHandler}
985
+ @facetsChanged=${this.facetsChanged}
986
+ @histogramDateRangeUpdated=${this.histogramDateRangeUpdated}
987
+ >
988
+ </collection-facets>
986
989
  `;
987
990
  // If we are using one of the opt-in facet load strategies, we may need to wrap the
988
991
  // desktop view facets in a <details> widget so that patrons can opt into loading them.
@@ -990,20 +993,20 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
990
993
  const showDesktopOptInWidget = this.facetLoadStrategy === 'opt-in' ||
991
994
  (this.facetLoadStrategy === 'opt-in-or-login' && !this.loggedIn);
992
995
  if (showDesktopOptInWidget && !this.mobileView) {
993
- return html `
994
- <details
995
- class="desktop-facets-dropdown"
996
+ return html `
997
+ <details
998
+ class="desktop-facets-dropdown"
996
999
  @toggle=${(e) => {
997
1000
  const target = e.target;
998
1001
  this.collapsibleFacetsVisible = target.open;
999
- }}
1000
- >
1001
- <summary>
1002
- <span class="collapser-icon">${chevronIcon}</span>
1003
- <h2>${msg('Filters')}</h2>
1004
- </summary>
1005
- ${facets}
1006
- </details>
1002
+ }}
1003
+ >
1004
+ <summary>
1005
+ <span class="collapser-icon">${chevronIcon}</span>
1006
+ <h2>${msg('Filters')}</h2>
1007
+ </summary>
1008
+ ${facets}
1009
+ </details>
1007
1010
  `;
1008
1011
  }
1009
1012
  // Otherwise, just render the facets component bare
@@ -1023,34 +1026,34 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
1023
1026
  mobile,
1024
1027
  });
1025
1028
  const buttonText = mobile ? 'Clear all' : 'Clear all filters';
1026
- return html `
1027
- <div class="clear-filters-btn-row">
1029
+ return html `
1030
+ <div class="clear-filters-btn-row">
1028
1031
  ${mobile
1029
1032
  ? html `<span class="clear-filters-btn-separator">&nbsp;</span>`
1030
- : nothing}
1031
- <button class=${buttonClasses} @click=${this.clearFilters}>
1032
- ${buttonText}
1033
- </button>
1034
- </div>
1033
+ : nothing}
1034
+ <button class=${buttonClasses} @click=${this.clearFilters}>
1035
+ ${buttonText}
1036
+ </button>
1037
+ </div>
1035
1038
  `;
1036
1039
  }
1037
1040
  /**
1038
1041
  * Template for the table header content that appears atop the compact list view.
1039
1042
  */
1040
1043
  get listHeaderTemplate() {
1041
- return html `
1042
- <div id="list-header">
1043
- <tile-dispatcher
1044
- .tileDisplayMode=${'list-header'}
1045
- .resizeObserver=${this.resizeObserver}
1046
- .sortParam=${this.sortParam}
1047
- .defaultSortParam=${this.defaultSortParam}
1048
- .mobileBreakpoint=${this.mobileBreakpoint}
1049
- .loggedIn=${this.loggedIn}
1050
- .suppressBlurring=${this.shouldSuppressTileBlurring}
1051
- >
1052
- </tile-dispatcher>
1053
- </div>
1044
+ return html `
1045
+ <div id="list-header">
1046
+ <tile-dispatcher
1047
+ .tileDisplayMode=${'list-header'}
1048
+ .resizeObserver=${this.resizeObserver}
1049
+ .sortParam=${this.sortParam}
1050
+ .defaultSortParam=${this.defaultSortParam}
1051
+ .mobileBreakpoint=${this.mobileBreakpoint}
1052
+ .loggedIn=${this.loggedIn}
1053
+ .suppressBlurring=${this.shouldSuppressTileBlurring}
1054
+ >
1055
+ </tile-dispatcher>
1056
+ </div>
1054
1057
  `;
1055
1058
  }
1056
1059
  /**
@@ -1779,27 +1782,27 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
1779
1782
  const model = this.tileModelAtCellIndex(index);
1780
1783
  if (!model)
1781
1784
  return undefined;
1782
- return html `
1783
- <tile-dispatcher
1784
- .collectionPagePath=${this.collectionPagePath}
1785
- .baseNavigationUrl=${this.baseNavigationUrl}
1786
- .baseImageUrl=${this.baseImageUrl}
1787
- .model=${model}
1788
- .tileDisplayMode=${this.displayMode}
1789
- .resizeObserver=${this.resizeObserver}
1790
- .collectionTitles=${this.dataSource.collectionTitles}
1791
- .sortParam=${this.sortParam}
1792
- .defaultSortParam=${this.defaultSortParam}
1793
- .creatorFilter=${this.selectedCreatorFilter}
1794
- .mobileBreakpoint=${this.mobileBreakpoint}
1795
- .loggedIn=${this.loggedIn}
1796
- .suppressBlurring=${this.shouldSuppressTileBlurring}
1797
- .isManageView=${this.isManageView}
1798
- ?showTvClips=${this.isTVCollection || this.searchType === SearchType.TV}
1799
- ?enableHoverPane=${true}
1800
- @resultSelected=${(e) => this.resultSelected(e)}
1801
- >
1802
- </tile-dispatcher>
1785
+ return html `
1786
+ <tile-dispatcher
1787
+ .collectionPagePath=${this.collectionPagePath}
1788
+ .baseNavigationUrl=${this.baseNavigationUrl}
1789
+ .baseImageUrl=${this.baseImageUrl}
1790
+ .model=${model}
1791
+ .tileDisplayMode=${this.displayMode}
1792
+ .resizeObserver=${this.resizeObserver}
1793
+ .collectionTitles=${this.dataSource.collectionTitles}
1794
+ .sortParam=${this.sortParam}
1795
+ .defaultSortParam=${this.defaultSortParam}
1796
+ .creatorFilter=${this.selectedCreatorFilter}
1797
+ .mobileBreakpoint=${this.mobileBreakpoint}
1798
+ .loggedIn=${this.loggedIn}
1799
+ .suppressBlurring=${this.shouldSuppressTileBlurring}
1800
+ .isManageView=${this.isManageView}
1801
+ ?showTvClips=${this.isTVCollection || this.searchType === SearchType.TV}
1802
+ ?enableHoverPane=${true}
1803
+ @resultSelected=${(e) => this.resultSelected(e)}
1804
+ >
1805
+ </tile-dispatcher>
1803
1806
  `;
1804
1807
  }
1805
1808
  /**
@@ -1835,440 +1838,440 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
1835
1838
  static get styles() {
1836
1839
  return [
1837
1840
  srOnlyStyle,
1838
- css `
1839
- :host {
1840
- display: block;
1841
- --leftColumnWidth: 18rem;
1842
- --leftColumnPaddingTop: 2rem;
1843
- --leftColumnPaddingRight: 2.5rem;
1844
- }
1845
-
1846
- #facet-top-view {
1847
- display: flex;
1848
- }
1849
-
1850
- /**
1851
- * When page width resizes from desktop to mobile, use this class to
1852
- * disable expand/collapse transition when loading.
1853
- */
1854
- .preload * {
1855
- transition: none !important;
1856
- -webkit-transition: none !important;
1857
- -moz-transition: none !important;
1858
- -ms-transition: none !important;
1859
- -o-transition: none !important;
1860
- }
1861
-
1862
- #content-container {
1863
- display: flex;
1864
- }
1865
-
1866
- empty-placeholder {
1867
- margin-top: var(--placeholderMarginTop, 0);
1868
- }
1869
-
1870
- .collapser-icon {
1871
- display: inline-block;
1872
- }
1873
-
1874
- .collapser-icon svg {
1875
- display: inline-block;
1876
- width: 12px;
1877
- height: 12px;
1878
- transition: transform 0.2s ease-out;
1879
- }
1880
-
1881
- #mobile-filter-collapse {
1882
- width: 100%;
1883
- }
1884
-
1885
- #mobile-filter-collapse > summary {
1886
- cursor: pointer;
1887
- list-style: none;
1888
- }
1889
-
1890
- #mobile-filter-collapse[open] > summary {
1891
- margin-bottom: 10px;
1892
- }
1893
-
1894
- #mobile-filter-collapse h2 {
1895
- display: inline-block;
1896
- margin: 0;
1897
- font-size: 2rem;
1898
- }
1899
-
1900
- #mobile-filter-collapse[open] svg {
1901
- transform: rotate(90deg);
1902
- }
1903
-
1904
- #content-container.mobile {
1905
- display: block;
1906
- }
1907
-
1908
- #right-column {
1909
- flex: 1;
1910
- position: relative;
1911
- min-height: 90vh;
1912
- border-right: 1px solid rgb(232, 232, 232);
1913
- margin-top: var(--rightColumnMarginTop, 0);
1914
- padding-top: 2rem;
1915
- background: #fff;
1916
- }
1917
-
1918
- #left-column:not([hidden]) + #right-column {
1919
- border-left: 1px solid rgb(232, 232, 232);
1920
- }
1921
-
1922
- #right-column.smart-results-spacing {
1923
- padding-top: 0.5rem;
1924
- border-right: none;
1925
- background: transparent;
1926
- min-width: 0;
1927
- }
1928
-
1929
- #results {
1930
- background: #fff;
1931
- padding-left: 1rem;
1932
- padding-right: 1rem;
1933
- }
1934
-
1935
- #right-column.smart-results-spacing #results {
1936
- border-radius: 10px 10px 0px 0px;
1937
- padding-top: 0.5rem;
1938
- margin-top: 1rem;
1939
- }
1940
-
1941
- .mobile #right-column {
1942
- border-left: none;
1943
- }
1944
-
1945
- .mobile #results {
1946
- padding: 5px 5px 0;
1947
- }
1948
-
1949
- #left-column {
1950
- width: var(--leftColumnWidth, 18rem);
1951
- /* Prevents Safari from shrinking col at first draw */
1952
- min-width: var(--leftColumnWidth, 18rem);
1953
- padding-top: var(--leftColumnPaddingTop, 2rem);
1954
- /* Reduced padding by 0.2rem to add the invisible border in the rule below */
1955
- padding-right: calc(var(--leftColumnPaddingRight, 2.5rem) - 0.2rem);
1956
- border-right: 0.2rem solid transparent; /* Pads to the right of the scrollbar a bit */
1957
- z-index: 1;
1958
- }
1959
-
1960
- .desktop #left-column {
1961
- top: 0;
1962
- position: sticky;
1963
- height: calc(100vh - 2rem);
1964
- max-height: calc(100vh - 2rem);
1965
- overflow-x: hidden;
1966
- overflow-y: scroll;
1967
-
1968
- /*
1969
- * Firefox doesn't support any of the -webkit-scrollbar stuff below, but
1970
- * does at least give us a tiny bit of control over width & color.
1971
- */
1972
- scrollbar-width: thin;
1973
- scrollbar-color: transparent transparent;
1974
- }
1975
- .desktop #left-column:hover {
1976
- scrollbar-color: auto;
1977
- }
1978
- .desktop #left-column::-webkit-scrollbar {
1979
- appearance: none;
1980
- width: 6px;
1981
- }
1982
- .desktop #left-column::-webkit-scrollbar-button {
1983
- height: 3px;
1984
- background: transparent;
1985
- }
1986
- .desktop #left-column::-webkit-scrollbar-corner {
1987
- background: transparent;
1988
- }
1989
- .desktop #left-column::-webkit-scrollbar-thumb {
1990
- border-radius: 4px;
1991
- }
1992
- .desktop #left-column:hover::-webkit-scrollbar-thumb {
1993
- background: rgba(0, 0, 0, 0.15);
1994
- }
1995
- .desktop #left-column:hover::-webkit-scrollbar-thumb:hover {
1996
- background: rgba(0, 0, 0, 0.2);
1997
- }
1998
- .desktop #left-column:hover::-webkit-scrollbar-thumb:active {
1999
- background: rgba(0, 0, 0, 0.3);
2000
- }
2001
-
2002
- #facets-bottom-fade {
2003
- background: linear-gradient(
2004
- to bottom,
2005
- #f5f5f700 0%,
2006
- #f5f5f7c0 50%,
2007
- #f5f5f7 80%,
2008
- #f5f5f7 100%
2009
- );
2010
- position: fixed;
2011
- bottom: 0;
2012
- height: 50px;
2013
- /* Wide enough to cover the content, but leave the scrollbar uncovered */
2014
- width: calc(
2015
- var(--leftColumnWidth) + var(--leftColumnPaddingRight) - 10px
2016
- );
2017
- z-index: 2;
2018
- pointer-events: none;
2019
- transition: height 0.1s ease;
2020
- }
2021
- #facets-bottom-fade.hidden {
2022
- height: 0;
2023
- }
2024
-
2025
- .facets-message {
2026
- font-size: 1.4rem;
2027
- }
2028
-
2029
- .desktop-facets-dropdown > summary {
2030
- cursor: pointer;
2031
- list-style: none;
2032
- }
2033
-
2034
- .desktop-facets-dropdown h2 {
2035
- display: inline-block;
2036
- margin: 0;
2037
- font-size: 1.6rem;
2038
- }
2039
-
2040
- .desktop-facets-dropdown[open] > summary {
2041
- margin-bottom: 10px;
2042
- }
2043
-
2044
- .desktop-facets-dropdown[open] svg {
2045
- transform: rotate(90deg);
2046
- }
2047
-
2048
- .desktop #left-column-scroll-sentinel {
2049
- width: 1px;
2050
- height: 100vh;
2051
- background: transparent;
2052
- }
2053
-
2054
- .desktop #facets-scroll-sentinel {
2055
- width: 1px;
2056
- height: 1px;
2057
- background: transparent;
2058
- }
2059
-
2060
- #facets-header-container {
2061
- display: flex;
2062
- justify-content: space-between;
2063
- align-items: flex-start;
2064
- clear: both;
2065
- }
2066
-
2067
- .desktop #facets-header-container {
2068
- flex-wrap: wrap;
2069
- }
2070
-
2071
- .mobile #left-column {
2072
- width: 100%;
2073
- min-width: 0;
2074
- padding: 5px 0;
2075
- border: 0;
2076
- }
2077
-
2078
- .clear-filters-btn-row {
2079
- display: inline-block;
2080
- }
2081
-
2082
- .desktop .clear-filters-btn-row {
2083
- width: 100%;
2084
- }
2085
-
2086
- .clear-filters-btn {
2087
- display: inline-block;
2088
- appearance: none;
2089
- margin: 0;
2090
- padding: 0;
2091
- border: 0;
2092
- background: none;
2093
- color: var(--ia-theme-link-color);
2094
- font-size: 1.4rem;
2095
- font-family: inherit;
2096
- cursor: pointer;
2097
- }
2098
-
2099
- .clear-filters-btn:hover {
2100
- text-decoration: underline;
2101
- }
2102
-
2103
- .clear-filters-btn-separator {
2104
- display: inline-block;
2105
- margin-left: 5px;
2106
- border-left: 1px solid #2c2c2c;
2107
- font-size: 1.4rem;
2108
- line-height: 1.3rem;
2109
- }
2110
-
2111
- #facets-container {
2112
- position: relative;
2113
- max-height: 0;
2114
- transition: max-height 0.2s ease-in-out;
2115
- z-index: 1;
2116
- margin-top: 5rem;
2117
- padding-bottom: 2rem;
2118
- }
2119
-
2120
- .desktop #facets-container {
2121
- width: 18rem;
2122
- }
2123
-
2124
- .mobile #facets-container {
2125
- overflow: hidden;
2126
- padding-bottom: 0;
2127
- padding-left: 10px;
2128
- padding-right: 10px;
2129
- }
2130
-
2131
- #facets-container.expanded {
2132
- max-height: 2000px;
2133
- }
2134
-
2135
- .results-section-heading {
2136
- margin: 0.5rem 0.3rem;
2137
- font-size: 2rem;
2138
- line-height: 25px;
2139
- }
2140
-
2141
- #results-total {
2142
- display: flex;
2143
- align-items: baseline;
2144
- }
2145
-
2146
- .mobile #results-total {
2147
- position: absolute;
2148
- right: 10px;
2149
- }
2150
-
2151
- #big-results-count {
2152
- font-size: 2.4rem;
2153
- font-weight: 500;
2154
- margin-right: 5px;
2155
- }
2156
-
2157
- .mobile #big-results-count {
2158
- font-size: 2rem;
2159
- }
2160
-
2161
- #big-results-label {
2162
- font-size: 1.4rem;
2163
- font-weight: 200;
2164
- }
2165
-
2166
- #list-header {
2167
- max-height: 4.2rem;
2168
- }
2169
-
2170
- .loading-cover {
2171
- position: absolute;
2172
- top: 0;
2173
- left: 0;
2174
- width: 100%;
2175
- height: 100%;
2176
- display: flex;
2177
- justify-content: center;
2178
- z-index: 1;
2179
- padding-top: 50px;
2180
- }
2181
-
2182
- #tile-blur-label {
2183
- display: flex;
2184
- align-items: center;
2185
- column-gap: 5px;
2186
- }
2187
-
2188
- #tile-blur-check {
2189
- margin: 0 5px 0 0;
2190
- }
2191
-
2192
- circular-activity-indicator {
2193
- width: 30px;
2194
- height: 30px;
2195
- }
2196
-
2197
- sort-filter-bar {
2198
- display: block;
2199
- margin-bottom: 4rem;
2200
- }
2201
-
2202
- infinite-scroller {
2203
- display: block;
2204
- --infiniteScrollerRowGap: var(--collectionBrowserRowGap, 1.7rem);
2205
- --infiniteScrollerColGap: var(--collectionBrowserColGap, 1.7rem);
2206
- }
2207
-
2208
- infinite-scroller.list-compact {
2209
- --infiniteScrollerCellMinWidth: var(
2210
- --collectionBrowserCellMinWidth,
2211
- 100%
2212
- );
2213
- --infiniteScrollerCellMinHeight: 45px; /* override infinite scroller component */
2214
- --infiniteScrollerCellMaxHeight: 56px;
2215
- --infiniteScrollerRowGap: 10px;
2216
- }
2217
-
2218
- infinite-scroller.list-detail {
2219
- --infiniteScrollerCellMinWidth: var(
2220
- --collectionBrowserCellMinWidth,
2221
- 100%
2222
- );
2223
- --infiniteScrollerCellMinHeight: var(
2224
- --collectionBrowserCellMinHeight,
2225
- 5rem
2226
- );
2227
- /*
2228
- 30px in spec, compensating for a -4px margin
2229
- to align title with top of item image
2230
- src/tiles/list/tile-list.ts
2231
- */
2232
- --infiniteScrollerRowGap: 34px;
2233
- }
2234
-
2235
- .mobile infinite-scroller.list-detail {
2236
- --infiniteScrollerRowGap: 24px;
2237
- }
2238
-
2239
- infinite-scroller.grid {
2240
- --infiniteScrollerCellMinWidth: var(
2241
- --collectionBrowserCellMinWidth,
2242
- 17rem
2243
- );
2244
- --infiniteScrollerCellMaxWidth: var(
2245
- --collectionBrowserCellMaxWidth,
2246
- 1fr
2247
- );
2248
- }
2249
-
2250
- /* Allow tiles to shrink a bit further at smaller viewport widths */
2251
- @media screen and (max-width: 880px) {
2252
- infinite-scroller.grid {
2253
- --infiniteScrollerCellMinWidth: var(
2254
- --collectionBrowserCellMinWidth,
2255
- 15rem
2256
- );
2257
- }
2258
- }
2259
- /* At very small widths, maintain a 2-tile layout as far as it can reasonably go */
2260
- @media screen and (max-width: 360px) {
2261
- infinite-scroller.grid {
2262
- --infiniteScrollerCellMinWidth: var(
2263
- --collectionBrowserCellMinWidth,
2264
- 12rem
2265
- );
2266
- }
2267
- }
2268
-
2269
- infinite-scroller.hidden {
2270
- display: none;
2271
- }
1841
+ css `
1842
+ :host {
1843
+ display: block;
1844
+ --leftColumnWidth: 18rem;
1845
+ --leftColumnPaddingTop: 2rem;
1846
+ --leftColumnPaddingRight: 2.5rem;
1847
+ }
1848
+
1849
+ #facet-top-view {
1850
+ display: flex;
1851
+ }
1852
+
1853
+ /**
1854
+ * When page width resizes from desktop to mobile, use this class to
1855
+ * disable expand/collapse transition when loading.
1856
+ */
1857
+ .preload * {
1858
+ transition: none !important;
1859
+ -webkit-transition: none !important;
1860
+ -moz-transition: none !important;
1861
+ -ms-transition: none !important;
1862
+ -o-transition: none !important;
1863
+ }
1864
+
1865
+ #content-container {
1866
+ display: flex;
1867
+ }
1868
+
1869
+ empty-placeholder {
1870
+ margin-top: var(--placeholderMarginTop, 0);
1871
+ }
1872
+
1873
+ .collapser-icon {
1874
+ display: inline-block;
1875
+ }
1876
+
1877
+ .collapser-icon svg {
1878
+ display: inline-block;
1879
+ width: 12px;
1880
+ height: 12px;
1881
+ transition: transform 0.2s ease-out;
1882
+ }
1883
+
1884
+ #mobile-filter-collapse {
1885
+ width: 100%;
1886
+ }
1887
+
1888
+ #mobile-filter-collapse > summary {
1889
+ cursor: pointer;
1890
+ list-style: none;
1891
+ }
1892
+
1893
+ #mobile-filter-collapse[open] > summary {
1894
+ margin-bottom: 10px;
1895
+ }
1896
+
1897
+ #mobile-filter-collapse h2 {
1898
+ display: inline-block;
1899
+ margin: 0;
1900
+ font-size: 2rem;
1901
+ }
1902
+
1903
+ #mobile-filter-collapse[open] svg {
1904
+ transform: rotate(90deg);
1905
+ }
1906
+
1907
+ #content-container.mobile {
1908
+ display: block;
1909
+ }
1910
+
1911
+ #right-column {
1912
+ flex: 1;
1913
+ position: relative;
1914
+ min-height: 90vh;
1915
+ border-right: 1px solid rgb(232, 232, 232);
1916
+ margin-top: var(--rightColumnMarginTop, 0);
1917
+ padding-top: 2rem;
1918
+ background: #fff;
1919
+ }
1920
+
1921
+ #left-column:not([hidden]) + #right-column {
1922
+ border-left: 1px solid rgb(232, 232, 232);
1923
+ }
1924
+
1925
+ #right-column.smart-results-spacing {
1926
+ padding-top: 0.5rem;
1927
+ border-right: none;
1928
+ background: transparent;
1929
+ min-width: 0;
1930
+ }
1931
+
1932
+ #results {
1933
+ background: #fff;
1934
+ padding-left: 1rem;
1935
+ padding-right: 1rem;
1936
+ }
1937
+
1938
+ #right-column.smart-results-spacing #results {
1939
+ border-radius: 10px 10px 0px 0px;
1940
+ padding-top: 0.5rem;
1941
+ margin-top: 1rem;
1942
+ }
1943
+
1944
+ .mobile #right-column {
1945
+ border-left: none;
1946
+ }
1947
+
1948
+ .mobile #results {
1949
+ padding: 5px 5px 0;
1950
+ }
1951
+
1952
+ #left-column {
1953
+ width: var(--leftColumnWidth, 18rem);
1954
+ /* Prevents Safari from shrinking col at first draw */
1955
+ min-width: var(--leftColumnWidth, 18rem);
1956
+ padding-top: var(--leftColumnPaddingTop, 2rem);
1957
+ /* Reduced padding by 0.2rem to add the invisible border in the rule below */
1958
+ padding-right: calc(var(--leftColumnPaddingRight, 2.5rem) - 0.2rem);
1959
+ border-right: 0.2rem solid transparent; /* Pads to the right of the scrollbar a bit */
1960
+ z-index: 1;
1961
+ }
1962
+
1963
+ .desktop #left-column {
1964
+ top: 0;
1965
+ position: sticky;
1966
+ height: calc(100vh - 2rem);
1967
+ max-height: calc(100vh - 2rem);
1968
+ overflow-x: hidden;
1969
+ overflow-y: scroll;
1970
+
1971
+ /*
1972
+ * Firefox doesn't support any of the -webkit-scrollbar stuff below, but
1973
+ * does at least give us a tiny bit of control over width & color.
1974
+ */
1975
+ scrollbar-width: thin;
1976
+ scrollbar-color: transparent transparent;
1977
+ }
1978
+ .desktop #left-column:hover {
1979
+ scrollbar-color: auto;
1980
+ }
1981
+ .desktop #left-column::-webkit-scrollbar {
1982
+ appearance: none;
1983
+ width: 6px;
1984
+ }
1985
+ .desktop #left-column::-webkit-scrollbar-button {
1986
+ height: 3px;
1987
+ background: transparent;
1988
+ }
1989
+ .desktop #left-column::-webkit-scrollbar-corner {
1990
+ background: transparent;
1991
+ }
1992
+ .desktop #left-column::-webkit-scrollbar-thumb {
1993
+ border-radius: 4px;
1994
+ }
1995
+ .desktop #left-column:hover::-webkit-scrollbar-thumb {
1996
+ background: rgba(0, 0, 0, 0.15);
1997
+ }
1998
+ .desktop #left-column:hover::-webkit-scrollbar-thumb:hover {
1999
+ background: rgba(0, 0, 0, 0.2);
2000
+ }
2001
+ .desktop #left-column:hover::-webkit-scrollbar-thumb:active {
2002
+ background: rgba(0, 0, 0, 0.3);
2003
+ }
2004
+
2005
+ #facets-bottom-fade {
2006
+ background: linear-gradient(
2007
+ to bottom,
2008
+ #f5f5f700 0%,
2009
+ #f5f5f7c0 50%,
2010
+ #f5f5f7 80%,
2011
+ #f5f5f7 100%
2012
+ );
2013
+ position: fixed;
2014
+ bottom: 0;
2015
+ height: 50px;
2016
+ /* Wide enough to cover the content, but leave the scrollbar uncovered */
2017
+ width: calc(
2018
+ var(--leftColumnWidth) + var(--leftColumnPaddingRight) - 10px
2019
+ );
2020
+ z-index: 2;
2021
+ pointer-events: none;
2022
+ transition: height 0.1s ease;
2023
+ }
2024
+ #facets-bottom-fade.hidden {
2025
+ height: 0;
2026
+ }
2027
+
2028
+ .facets-message {
2029
+ font-size: 1.4rem;
2030
+ }
2031
+
2032
+ .desktop-facets-dropdown > summary {
2033
+ cursor: pointer;
2034
+ list-style: none;
2035
+ }
2036
+
2037
+ .desktop-facets-dropdown h2 {
2038
+ display: inline-block;
2039
+ margin: 0;
2040
+ font-size: 1.6rem;
2041
+ }
2042
+
2043
+ .desktop-facets-dropdown[open] > summary {
2044
+ margin-bottom: 10px;
2045
+ }
2046
+
2047
+ .desktop-facets-dropdown[open] svg {
2048
+ transform: rotate(90deg);
2049
+ }
2050
+
2051
+ .desktop #left-column-scroll-sentinel {
2052
+ width: 1px;
2053
+ height: 100vh;
2054
+ background: transparent;
2055
+ }
2056
+
2057
+ .desktop #facets-scroll-sentinel {
2058
+ width: 1px;
2059
+ height: 1px;
2060
+ background: transparent;
2061
+ }
2062
+
2063
+ #facets-header-container {
2064
+ display: flex;
2065
+ justify-content: space-between;
2066
+ align-items: flex-start;
2067
+ clear: both;
2068
+ }
2069
+
2070
+ .desktop #facets-header-container {
2071
+ flex-wrap: wrap;
2072
+ }
2073
+
2074
+ .mobile #left-column {
2075
+ width: 100%;
2076
+ min-width: 0;
2077
+ padding: 5px 0;
2078
+ border: 0;
2079
+ }
2080
+
2081
+ .clear-filters-btn-row {
2082
+ display: inline-block;
2083
+ }
2084
+
2085
+ .desktop .clear-filters-btn-row {
2086
+ width: 100%;
2087
+ }
2088
+
2089
+ .clear-filters-btn {
2090
+ display: inline-block;
2091
+ appearance: none;
2092
+ margin: 0;
2093
+ padding: 0;
2094
+ border: 0;
2095
+ background: none;
2096
+ color: var(--ia-theme-link-color);
2097
+ font-size: 1.4rem;
2098
+ font-family: inherit;
2099
+ cursor: pointer;
2100
+ }
2101
+
2102
+ .clear-filters-btn:hover {
2103
+ text-decoration: underline;
2104
+ }
2105
+
2106
+ .clear-filters-btn-separator {
2107
+ display: inline-block;
2108
+ margin-left: 5px;
2109
+ border-left: 1px solid #2c2c2c;
2110
+ font-size: 1.4rem;
2111
+ line-height: 1.3rem;
2112
+ }
2113
+
2114
+ #facets-container {
2115
+ position: relative;
2116
+ max-height: 0;
2117
+ transition: max-height 0.2s ease-in-out;
2118
+ z-index: 1;
2119
+ margin-top: 5rem;
2120
+ padding-bottom: 2rem;
2121
+ }
2122
+
2123
+ .desktop #facets-container {
2124
+ width: 18rem;
2125
+ }
2126
+
2127
+ .mobile #facets-container {
2128
+ overflow: hidden;
2129
+ padding-bottom: 0;
2130
+ padding-left: 10px;
2131
+ padding-right: 10px;
2132
+ }
2133
+
2134
+ #facets-container.expanded {
2135
+ max-height: 2000px;
2136
+ }
2137
+
2138
+ .results-section-heading {
2139
+ margin: 0.5rem 0.3rem;
2140
+ font-size: 2rem;
2141
+ line-height: 25px;
2142
+ }
2143
+
2144
+ #results-total {
2145
+ display: flex;
2146
+ align-items: baseline;
2147
+ }
2148
+
2149
+ .mobile #results-total {
2150
+ position: absolute;
2151
+ right: 10px;
2152
+ }
2153
+
2154
+ #big-results-count {
2155
+ font-size: 2.4rem;
2156
+ font-weight: 500;
2157
+ margin-right: 5px;
2158
+ }
2159
+
2160
+ .mobile #big-results-count {
2161
+ font-size: 2rem;
2162
+ }
2163
+
2164
+ #big-results-label {
2165
+ font-size: 1.4rem;
2166
+ font-weight: 200;
2167
+ }
2168
+
2169
+ #list-header {
2170
+ max-height: 4.2rem;
2171
+ }
2172
+
2173
+ .loading-cover {
2174
+ position: absolute;
2175
+ top: 0;
2176
+ left: 0;
2177
+ width: 100%;
2178
+ height: 100%;
2179
+ display: flex;
2180
+ justify-content: center;
2181
+ z-index: 1;
2182
+ padding-top: 50px;
2183
+ }
2184
+
2185
+ #tile-blur-label {
2186
+ display: flex;
2187
+ align-items: center;
2188
+ column-gap: 5px;
2189
+ }
2190
+
2191
+ #tile-blur-check {
2192
+ margin: 0 5px 0 0;
2193
+ }
2194
+
2195
+ circular-activity-indicator {
2196
+ width: 30px;
2197
+ height: 30px;
2198
+ }
2199
+
2200
+ sort-filter-bar {
2201
+ display: block;
2202
+ margin-bottom: 4rem;
2203
+ }
2204
+
2205
+ infinite-scroller {
2206
+ display: block;
2207
+ --infiniteScrollerRowGap: var(--collectionBrowserRowGap, 1.7rem);
2208
+ --infiniteScrollerColGap: var(--collectionBrowserColGap, 1.7rem);
2209
+ }
2210
+
2211
+ infinite-scroller.list-compact {
2212
+ --infiniteScrollerCellMinWidth: var(
2213
+ --collectionBrowserCellMinWidth,
2214
+ 100%
2215
+ );
2216
+ --infiniteScrollerCellMinHeight: 45px; /* override infinite scroller component */
2217
+ --infiniteScrollerCellMaxHeight: 56px;
2218
+ --infiniteScrollerRowGap: 10px;
2219
+ }
2220
+
2221
+ infinite-scroller.list-detail {
2222
+ --infiniteScrollerCellMinWidth: var(
2223
+ --collectionBrowserCellMinWidth,
2224
+ 100%
2225
+ );
2226
+ --infiniteScrollerCellMinHeight: var(
2227
+ --collectionBrowserCellMinHeight,
2228
+ 5rem
2229
+ );
2230
+ /*
2231
+ 30px in spec, compensating for a -4px margin
2232
+ to align title with top of item image
2233
+ src/tiles/list/tile-list.ts
2234
+ */
2235
+ --infiniteScrollerRowGap: 34px;
2236
+ }
2237
+
2238
+ .mobile infinite-scroller.list-detail {
2239
+ --infiniteScrollerRowGap: 24px;
2240
+ }
2241
+
2242
+ infinite-scroller.grid {
2243
+ --infiniteScrollerCellMinWidth: var(
2244
+ --collectionBrowserCellMinWidth,
2245
+ 17rem
2246
+ );
2247
+ --infiniteScrollerCellMaxWidth: var(
2248
+ --collectionBrowserCellMaxWidth,
2249
+ 1fr
2250
+ );
2251
+ }
2252
+
2253
+ /* Allow tiles to shrink a bit further at smaller viewport widths */
2254
+ @media screen and (max-width: 880px) {
2255
+ infinite-scroller.grid {
2256
+ --infiniteScrollerCellMinWidth: var(
2257
+ --collectionBrowserCellMinWidth,
2258
+ 15rem
2259
+ );
2260
+ }
2261
+ }
2262
+ /* At very small widths, maintain a 2-tile layout as far as it can reasonably go */
2263
+ @media screen and (max-width: 360px) {
2264
+ infinite-scroller.grid {
2265
+ --infiniteScrollerCellMinWidth: var(
2266
+ --collectionBrowserCellMinWidth,
2267
+ 12rem
2268
+ );
2269
+ }
2270
+ }
2271
+
2272
+ infinite-scroller.hidden {
2273
+ display: none;
2274
+ }
2272
2275
  `,
2273
2276
  ];
2274
2277
  }