@internetarchive/collection-browser 0.4.18-alpha.6 → 0.4.19

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.
Files changed (63) hide show
  1. package/dist/src/collection-browser.d.ts +10 -9
  2. package/dist/src/collection-browser.js +331 -328
  3. package/dist/src/collection-browser.js.map +1 -1
  4. package/dist/src/collection-facets/facets-template.js +0 -2
  5. package/dist/src/collection-facets/facets-template.js.map +1 -1
  6. package/dist/src/collection-facets/more-facets-content.js +70 -63
  7. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  8. package/dist/src/collection-facets/more-facets-pagination.js +55 -49
  9. package/dist/src/collection-facets/more-facets-pagination.js.map +1 -1
  10. package/dist/src/collection-facets/toggle-switch.js +56 -46
  11. package/dist/src/collection-facets/toggle-switch.js.map +1 -1
  12. package/dist/src/collection-facets.d.ts +1 -1
  13. package/dist/src/collection-facets.js +84 -94
  14. package/dist/src/collection-facets.js.map +1 -1
  15. package/dist/src/sort-filter-bar/alpha-bar.d.ts +1 -2
  16. package/dist/src/sort-filter-bar/alpha-bar.js +25 -33
  17. package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -1
  18. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +1 -1
  19. package/dist/src/sort-filter-bar/sort-filter-bar.js +186 -198
  20. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  21. package/dist/src/tiles/grid/account-tile.js +1 -1
  22. package/dist/src/tiles/grid/account-tile.js.map +1 -1
  23. package/dist/src/tiles/grid/collection-tile.js +2 -2
  24. package/dist/src/tiles/grid/collection-tile.js.map +1 -1
  25. package/dist/src/tiles/grid/item-tile.js +2 -2
  26. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  27. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +15 -5
  28. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js.map +1 -1
  29. package/dist/src/tiles/grid/tile-stats.js +65 -58
  30. package/dist/src/tiles/grid/tile-stats.js.map +1 -1
  31. package/dist/src/tiles/tile-dispatcher.js +2 -3
  32. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  33. package/dist/test/collection-browser.test.js +2 -2
  34. package/dist/test/collection-browser.test.js.map +1 -1
  35. package/dist/test/collection-facets.test.js +5 -8
  36. package/dist/test/collection-facets.test.js.map +1 -1
  37. package/dist/test/sort-filter-bar/alpha-bar.test.js +12 -12
  38. package/dist/test/sort-filter-bar/alpha-bar.test.js.map +1 -1
  39. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +2 -2
  40. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -1
  41. package/package.json +5 -5
  42. package/src/collection-browser.ts +339 -330
  43. package/src/collection-facets/facets-template.ts +0 -2
  44. package/src/collection-facets/more-facets-content.ts +70 -63
  45. package/src/collection-facets/more-facets-pagination.ts +55 -49
  46. package/src/collection-facets/toggle-switch.ts +61 -51
  47. package/src/collection-facets.ts +85 -96
  48. package/src/sort-filter-bar/alpha-bar.ts +18 -26
  49. package/src/sort-filter-bar/sort-filter-bar.ts +186 -200
  50. package/src/tiles/grid/account-tile.ts +1 -1
  51. package/src/tiles/grid/collection-tile.ts +2 -2
  52. package/src/tiles/grid/item-tile.ts +2 -2
  53. package/src/tiles/grid/styles/tile-grid-shared-styles.ts +15 -5
  54. package/src/tiles/grid/tile-stats.ts +73 -66
  55. package/src/tiles/tile-dispatcher.ts +0 -1
  56. package/test/collection-browser.test.ts +2 -2
  57. package/test/collection-facets.test.ts +2 -10
  58. package/test/sort-filter-bar/alpha-bar.test.ts +12 -16
  59. package/test/sort-filter-bar/sort-filter-bar.test.ts +2 -2
  60. package/dist/src/styles/sr-only.d.ts +0 -1
  61. package/dist/src/styles/sr-only.js +0 -18
  62. package/dist/src/styles/sr-only.js.map +0 -1
  63. package/src/styles/sr-only.ts +0 -18
@@ -70,7 +70,6 @@ import {
70
70
  analyticsActions,
71
71
  analyticsCategories,
72
72
  } from './utils/analytics-events';
73
- import { srOnlyStyle } from './styles/sr-only';
74
73
 
75
74
  @customElement('collection-browser')
76
75
  export class CollectionBrowser
@@ -378,9 +377,7 @@ export class CollectionBrowser
378
377
  class="column${this.isResizeToMobile ? ' preload' : ''}"
379
378
  >
380
379
  <div id="mobile-header-container">
381
- ${this.mobileView
382
- ? this.mobileFacetsTemplate
383
- : html`<h2 id="facets-header" class="sr-only">Filters</h2>`}
380
+ ${this.mobileView ? this.mobileFacetsTemplate : nothing}
384
381
  <div id="results-total">
385
382
  <span id="big-results-count">
386
383
  ${shouldShowSearching ? html`Searching&hellip;` : resultsCount}
@@ -390,12 +387,15 @@ export class CollectionBrowser
390
387
  </span>
391
388
  </div>
392
389
  </div>
393
- ${this.mobileView
394
- ? nothing
395
- : html`<div id="facets-container" aria-labelledby="facets-header">
396
- ${this.facetsTemplate}
397
- <div id="facets-scroll-sentinel"></div>
398
- </div>`}
390
+ <div
391
+ id="facets-container"
392
+ class=${!this.mobileView || this.mobileFacetsVisible
393
+ ? 'expanded'
394
+ : ''}
395
+ >
396
+ ${this.facetsTemplate}
397
+ <div id="facets-scroll-sentinel"></div>
398
+ </div>
399
399
  ${this.mobileView ? nothing : html`<div id="facets-bottom-fade"></div>`}
400
400
  </div>
401
401
  <div id="right-column" class="column">
@@ -411,7 +411,6 @@ export class CollectionBrowser
411
411
  return html`<infinite-scroller
412
412
  class=${this.infiniteScrollerClasses}
413
413
  itemCount=${this.placeholderType ? 0 : nothing}
414
- ariaLandmarkLabel="Search results"
415
414
  .cellProvider=${this}
416
415
  .placeholderCellTemplate=${this.placeholderCellTemplate}
417
416
  @scrollThresholdReached=${this.scrollThresholdReached}
@@ -582,34 +581,28 @@ export class CollectionBrowser
582
581
  this.selectedCreatorFilter = e.detail.selectedLetter;
583
582
  }
584
583
 
585
- /**
586
- * The full template for how the facets should be structured in mobile view,
587
- * including the collapsible container (with header) and the facets themselves.
588
- */
589
- private get mobileFacetsTemplate(): TemplateResult {
590
- const toggleFacetsVisible = () => {
591
- this.isResizeToMobile = false;
592
- this.mobileFacetsVisible = !this.mobileFacetsVisible;
593
- };
594
-
584
+ private get mobileFacetsTemplate() {
595
585
  return html`
596
- <details
597
- id="mobile-filter-collapse"
598
- @click=${toggleFacetsVisible}
599
- @keyup=${toggleFacetsVisible}
600
- >
601
- <summary>
602
- <span class="collapser-icon">${chevronIcon}</span>
603
- <h2>Filters</h2>
604
- </summary>
605
- ${this.facetsTemplate}
606
- </details>
586
+ <div id="mobile-filter-collapse">
587
+ <h1
588
+ @click=${() => {
589
+ this.isResizeToMobile = false;
590
+ this.mobileFacetsVisible = !this.mobileFacetsVisible;
591
+ }}
592
+ @keyup=${() => {
593
+ this.isResizeToMobile = false;
594
+ this.mobileFacetsVisible = !this.mobileFacetsVisible;
595
+ }}
596
+ >
597
+ <span class="collapser ${this.mobileFacetsVisible ? 'open' : ''}">
598
+ ${chevronIcon}
599
+ </span>
600
+ Filters
601
+ </h1>
602
+ </div>
607
603
  `;
608
604
  }
609
605
 
610
- /**
611
- * The template for the facets component alone, without any surrounding wrappers.
612
- */
613
606
  private get facetsTemplate() {
614
607
  return html`
615
608
  <collection-facets
@@ -984,12 +977,18 @@ export class CollectionBrowser
984
977
  this.fullYearsHistogramAggregation = undefined;
985
978
  this.pageFetchesInProgress = {};
986
979
  this.endOfDataReached = false;
987
- this.pagesToRender = this.initialPageNumber;
980
+ this.pagesToRender =
981
+ this.initialPageNumber === 1
982
+ ? 2 // First two pages are batched into one request when starting from page 1
983
+ : this.initialPageNumber;
988
984
  this.queryErrorMessage = undefined;
989
985
 
990
986
  // Reset the infinite scroller's item count, so that it
991
987
  // shows tile placeholders until the new query's results load in
992
- this.infiniteScroller?.reload();
988
+ if (this.infiniteScroller) {
989
+ this.infiniteScroller.itemCount = this.estimatedTileCount;
990
+ this.infiniteScroller.reload();
991
+ }
993
992
 
994
993
  if (!this.initialQueryChangeHappened && this.initialPageNumber > 1) {
995
994
  this.scrollToPage(this.initialPageNumber);
@@ -1061,7 +1060,8 @@ export class CollectionBrowser
1061
1060
 
1062
1061
  private async doInitialPageFetch(): Promise<void> {
1063
1062
  this.searchResultsLoading = true;
1064
- await this.fetchPage(this.initialPageNumber);
1063
+ // Try to batch 2 initial page requests when possible
1064
+ await this.fetchPage(this.initialPageNumber, 2);
1065
1065
  this.searchResultsLoading = false;
1066
1066
  }
1067
1067
 
@@ -1393,7 +1393,15 @@ export class CollectionBrowser
1393
1393
  // this maps the query to the pages being fetched for that query
1394
1394
  private pageFetchesInProgress: Record<string, Set<number>> = {};
1395
1395
 
1396
- async fetchPage(pageNumber: number) {
1396
+ /**
1397
+ * Fetches one or more pages of results and updates the data source.
1398
+ *
1399
+ * @param pageNumber The page number to fetch
1400
+ * @param numInitialPages If this is an initial page fetch (`pageNumber = 1`),
1401
+ * specifies how many pages to batch together in one request. Ignored
1402
+ * if `pageNumber != 1`, defaulting to a single page.
1403
+ */
1404
+ async fetchPage(pageNumber: number, numInitialPages = 1) {
1397
1405
  const trimmedQuery = this.baseQuery?.trim();
1398
1406
  if (!trimmedQuery) return;
1399
1407
  if (!this.searchService) return;
@@ -1403,19 +1411,26 @@ export class CollectionBrowser
1403
1411
 
1404
1412
  if (this.endOfDataReached) return;
1405
1413
 
1414
+ // Batch multiple initial page requests together if needed (e.g., can request
1415
+ // pages 1 and 2 together in a single request).
1416
+ const numPages = pageNumber === 1 ? numInitialPages : 1;
1417
+ const numRows = this.pageSize * numPages;
1418
+
1406
1419
  // if a fetch is already in progress for this query and page, don't fetch again
1407
1420
  const { pageFetchQueryKey } = this;
1408
1421
  const pageFetches =
1409
1422
  this.pageFetchesInProgress[pageFetchQueryKey] ?? new Set();
1410
1423
  if (pageFetches.has(pageNumber)) return;
1411
- pageFetches.add(pageNumber);
1424
+ for (let i = 0; i < numPages; i += 1) {
1425
+ pageFetches.add(pageNumber + i);
1426
+ }
1412
1427
  this.pageFetchesInProgress[pageFetchQueryKey] = pageFetches;
1413
1428
 
1414
1429
  const sortParams = this.sortParam ? [this.sortParam] : [];
1415
1430
  const params: SearchParams = {
1416
1431
  query: trimmedQuery,
1417
1432
  page: pageNumber,
1418
- rows: this.pageSize,
1433
+ rows: numRows,
1419
1434
  sort: sortParams,
1420
1435
  filters: this.filterMap,
1421
1436
  aggregations: { omit: true },
@@ -1447,7 +1462,10 @@ export class CollectionBrowser
1447
1462
  window?.Sentry?.captureMessage?.(this.queryErrorMessage, 'error');
1448
1463
  }
1449
1464
 
1450
- this.pageFetchesInProgress[pageFetchQueryKey]?.delete(pageNumber);
1465
+ for (let i = 0; i < numPages; i += 1) {
1466
+ this.pageFetchesInProgress[pageFetchQueryKey]?.delete(pageNumber + i);
1467
+ }
1468
+
1451
1469
  this.searchResultsLoading = false;
1452
1470
  return;
1453
1471
  }
@@ -1456,12 +1474,22 @@ export class CollectionBrowser
1456
1474
 
1457
1475
  const { results, collectionTitles } = success.response;
1458
1476
  if (results && results.length > 0) {
1477
+ // Load any collection titles present on the response into the cache,
1478
+ // or queue up preload fetches for them if none were present.
1459
1479
  if (collectionTitles) {
1460
1480
  this.collectionNameCache?.addKnownTitles(collectionTitles);
1461
1481
  } else {
1462
1482
  this.preloadCollectionNames(results);
1463
1483
  }
1464
- this.updateDataSource(pageNumber, results);
1484
+
1485
+ // Update the data source for each returned page
1486
+ for (let i = 0; i < numPages; i += 1) {
1487
+ const pageStartIndex = this.pageSize * i;
1488
+ this.updateDataSource(
1489
+ pageNumber + i,
1490
+ results.slice(pageStartIndex, pageStartIndex + this.pageSize)
1491
+ );
1492
+ }
1465
1493
  }
1466
1494
 
1467
1495
  // When we reach the end of the data, we can set the infinite scroller's
@@ -1474,7 +1502,9 @@ export class CollectionBrowser
1474
1502
  }
1475
1503
  }
1476
1504
 
1477
- this.pageFetchesInProgress[pageFetchQueryKey]?.delete(pageNumber);
1505
+ for (let i = 0; i < numPages; i += 1) {
1506
+ this.pageFetchesInProgress[pageFetchQueryKey]?.delete(pageNumber + i);
1507
+ }
1478
1508
  }
1479
1509
 
1480
1510
  private preloadCollectionNames(results: SearchResult[]) {
@@ -1703,327 +1733,306 @@ export class CollectionBrowser
1703
1733
  }
1704
1734
  }
1705
1735
 
1706
- static get styles() {
1707
- return [
1708
- srOnlyStyle,
1709
- css`
1710
- :host {
1711
- display: block;
1712
-
1713
- --leftColumnWidth: 18rem;
1714
- --leftColumnPaddingRight: 2.5rem;
1715
- }
1736
+ static styles = css`
1737
+ :host {
1738
+ display: block;
1716
1739
 
1717
- /**
1718
- * When page width resizes from desktop to mobile, use this class to
1719
- * disable expand/collapse transition when loading.
1720
- */
1721
- .preload * {
1722
- transition: none !important;
1723
- -webkit-transition: none !important;
1724
- -moz-transition: none !important;
1725
- -ms-transition: none !important;
1726
- -o-transition: none !important;
1727
- }
1728
-
1729
- #content-container {
1730
- display: flex;
1731
- }
1740
+ --leftColumnWidth: 18rem;
1741
+ --leftColumnPaddingRight: 2.5rem;
1742
+ }
1732
1743
 
1733
- .collapser-icon {
1734
- display: inline-block;
1735
- }
1744
+ /**
1745
+ * When page width resizes from desktop to mobile, use this class to
1746
+ * disable expand/collapse transition when loading.
1747
+ */
1748
+ .preload * {
1749
+ transition: none !important;
1750
+ -webkit-transition: none !important;
1751
+ -moz-transition: none !important;
1752
+ -ms-transition: none !important;
1753
+ -o-transition: none !important;
1754
+ }
1736
1755
 
1737
- .collapser-icon svg {
1738
- display: inline-block;
1739
- width: 12px;
1740
- height: 12px;
1741
- transition: transform 0.2s ease-out;
1742
- }
1756
+ #content-container {
1757
+ display: flex;
1758
+ }
1743
1759
 
1744
- #mobile-filter-collapse > summary {
1745
- cursor: pointer;
1746
- list-style: none;
1747
- }
1760
+ .collapser {
1761
+ display: inline-block;
1762
+ }
1748
1763
 
1749
- #mobile-filter-collapse[open] > summary {
1750
- margin-bottom: 10px;
1751
- }
1764
+ .collapser svg {
1765
+ width: 10px;
1766
+ height: 10px;
1767
+ transition: transform 0.2s ease-out;
1768
+ }
1752
1769
 
1753
- #mobile-filter-collapse h2 {
1754
- display: inline-block;
1755
- margin: 0;
1756
- font-size: 2rem;
1757
- }
1770
+ .collapser.open svg {
1771
+ transform: rotate(90deg);
1772
+ }
1758
1773
 
1759
- #mobile-filter-collapse[open] svg {
1760
- transform: rotate(90deg);
1761
- }
1774
+ #mobile-filter-collapse h1 {
1775
+ cursor: pointer;
1776
+ }
1762
1777
 
1763
- #content-container.mobile {
1764
- display: block;
1765
- }
1778
+ #content-container.mobile {
1779
+ display: block;
1780
+ }
1766
1781
 
1767
- .column {
1768
- padding-top: 2rem;
1769
- }
1782
+ .column {
1783
+ padding-top: 2rem;
1784
+ }
1770
1785
 
1771
- #right-column {
1772
- flex: 1;
1773
- position: relative;
1774
- border-left: 1px solid rgb(232, 232, 232);
1775
- border-right: 1px solid rgb(232, 232, 232);
1776
- padding-left: 1rem;
1777
- padding-right: 1rem;
1778
- background: #fff;
1779
- }
1786
+ #right-column {
1787
+ flex: 1;
1788
+ position: relative;
1789
+ border-left: 1px solid rgb(232, 232, 232);
1790
+ border-right: 1px solid rgb(232, 232, 232);
1791
+ padding-left: 1rem;
1792
+ padding-right: 1rem;
1793
+ background: #fff;
1794
+ }
1780
1795
 
1781
- .mobile #right-column {
1782
- border-left: none;
1783
- padding: 5px 5px 0;
1784
- }
1796
+ .mobile #right-column {
1797
+ border-left: none;
1798
+ padding: 5px 5px 0;
1799
+ }
1785
1800
 
1786
- #left-column {
1787
- width: var(--leftColumnWidth, 18rem);
1788
- /* Prevents Safari from shrinking col at first draw */
1789
- min-width: var(--leftColumnWidth, 18rem);
1790
- padding-top: 0;
1791
- /* Reduced padding by 0.2rem to add the invisible border in the rule below */
1792
- padding-right: calc(var(--leftColumnPaddingRight, 2.5rem) - 0.2rem);
1793
- border-right: 0.2rem solid transparent; /* Pads to the right of the scrollbar a bit */
1794
- z-index: 1;
1795
- }
1801
+ #left-column {
1802
+ width: var(--leftColumnWidth, 18rem);
1803
+ /* Prevents Safari from shrinking col at first draw */
1804
+ min-width: var(--leftColumnWidth, 18rem);
1805
+ padding-top: 0;
1806
+ /* Reduced padding by 0.2rem to add the invisible border in the rule below */
1807
+ padding-right: calc(var(--leftColumnPaddingRight, 2.5rem) - 0.2rem);
1808
+ border-right: 0.2rem solid transparent; /* Pads to the right of the scrollbar a bit */
1809
+ z-index: 1;
1810
+ }
1796
1811
 
1797
- .desktop #left-column {
1798
- top: 0;
1799
- position: sticky;
1800
- height: calc(100vh - 2rem);
1801
- max-height: calc(100vh - 2rem);
1802
- overflow-x: hidden;
1803
- overflow-y: scroll;
1804
-
1805
- /*
1806
- * Firefox doesn't support any of the -webkit-scrollbar stuff below, but
1807
- * does at least give us a tiny bit of control over width & color.
1808
- */
1809
- scrollbar-width: thin;
1810
- scrollbar-color: transparent transparent;
1811
- }
1812
- .desktop #left-column:hover {
1813
- scrollbar-color: auto;
1814
- }
1815
- .desktop #left-column::-webkit-scrollbar {
1816
- appearance: none;
1817
- width: 6px;
1818
- }
1819
- .desktop #left-column::-webkit-scrollbar-button {
1820
- height: 3px;
1821
- background: transparent;
1822
- }
1823
- .desktop #left-column::-webkit-scrollbar-corner {
1824
- background: transparent;
1825
- }
1826
- .desktop #left-column::-webkit-scrollbar-thumb {
1827
- border-radius: 4px;
1828
- }
1829
- .desktop #left-column:hover::-webkit-scrollbar-thumb {
1830
- background: rgba(0, 0, 0, 0.15);
1831
- }
1832
- .desktop #left-column:hover::-webkit-scrollbar-thumb:hover {
1833
- background: rgba(0, 0, 0, 0.2);
1834
- }
1835
- .desktop #left-column:hover::-webkit-scrollbar-thumb:active {
1836
- background: rgba(0, 0, 0, 0.3);
1837
- }
1812
+ .desktop #left-column {
1813
+ top: 0;
1814
+ position: sticky;
1815
+ height: calc(100vh - 2rem);
1816
+ max-height: calc(100vh - 2rem);
1817
+ overflow-x: hidden;
1818
+ overflow-y: scroll;
1819
+
1820
+ /*
1821
+ * Firefox doesn't support any of the -webkit-scrollbar stuff below, but
1822
+ * does at least give us a tiny bit of control over width & color.
1823
+ */
1824
+ scrollbar-width: thin;
1825
+ scrollbar-color: transparent transparent;
1826
+ }
1827
+ .desktop #left-column:hover {
1828
+ scrollbar-color: auto;
1829
+ }
1830
+ .desktop #left-column::-webkit-scrollbar {
1831
+ appearance: none;
1832
+ width: 6px;
1833
+ }
1834
+ .desktop #left-column::-webkit-scrollbar-button {
1835
+ height: 3px;
1836
+ background: transparent;
1837
+ }
1838
+ .desktop #left-column::-webkit-scrollbar-corner {
1839
+ background: transparent;
1840
+ }
1841
+ .desktop #left-column::-webkit-scrollbar-thumb {
1842
+ border-radius: 4px;
1843
+ }
1844
+ .desktop #left-column:hover::-webkit-scrollbar-thumb {
1845
+ background: rgba(0, 0, 0, 0.15);
1846
+ }
1847
+ .desktop #left-column:hover::-webkit-scrollbar-thumb:hover {
1848
+ background: rgba(0, 0, 0, 0.2);
1849
+ }
1850
+ .desktop #left-column:hover::-webkit-scrollbar-thumb:active {
1851
+ background: rgba(0, 0, 0, 0.3);
1852
+ }
1838
1853
 
1839
- #facets-bottom-fade {
1840
- background: linear-gradient(
1841
- to bottom,
1842
- #f5f5f700 0%,
1843
- #f5f5f7c0 50%,
1844
- #f5f5f7 80%,
1845
- #f5f5f7 100%
1846
- );
1847
- position: fixed;
1848
- bottom: 0;
1849
- height: 50px;
1850
- /* Wide enough to cover the content, but leave the scrollbar uncovered */
1851
- width: calc(
1852
- var(--leftColumnWidth) + var(--leftColumnPaddingRight) - 10px
1853
- );
1854
- z-index: 2;
1855
- pointer-events: none;
1856
- transition: height 0.1s ease;
1857
- }
1858
- #facets-bottom-fade.hidden {
1859
- height: 0;
1860
- }
1854
+ #facets-bottom-fade {
1855
+ background: linear-gradient(
1856
+ to bottom,
1857
+ #f5f5f700 0%,
1858
+ #f5f5f7c0 50%,
1859
+ #f5f5f7 80%,
1860
+ #f5f5f7 100%
1861
+ );
1862
+ position: fixed;
1863
+ bottom: 0;
1864
+ height: 50px;
1865
+ /* Wide enough to cover the content, but leave the scrollbar uncovered */
1866
+ width: calc(
1867
+ var(--leftColumnWidth) + var(--leftColumnPaddingRight) - 10px
1868
+ );
1869
+ z-index: 2;
1870
+ pointer-events: none;
1871
+ transition: height 0.1s ease;
1872
+ }
1873
+ #facets-bottom-fade.hidden {
1874
+ height: 0;
1875
+ }
1861
1876
 
1862
- .desktop #left-column-scroll-sentinel {
1863
- width: 1px;
1864
- height: 100vh;
1865
- background: transparent;
1866
- }
1877
+ .desktop #left-column-scroll-sentinel {
1878
+ width: 1px;
1879
+ height: 100vh;
1880
+ background: transparent;
1881
+ }
1867
1882
 
1868
- .desktop #facets-scroll-sentinel {
1869
- width: 1px;
1870
- height: 1px;
1871
- background: transparent;
1872
- }
1883
+ .desktop #facets-scroll-sentinel {
1884
+ width: 1px;
1885
+ height: 1px;
1886
+ background: transparent;
1887
+ }
1873
1888
 
1874
- .mobile #left-column {
1875
- width: 100%;
1876
- padding: 0;
1877
- }
1889
+ .mobile #left-column {
1890
+ width: 100%;
1891
+ padding: 0;
1892
+ }
1878
1893
 
1879
- #mobile-header-container {
1880
- display: flex;
1881
- justify-content: space-between;
1882
- align-items: flex-start;
1883
- margin: 10px 0;
1884
- }
1894
+ #mobile-header-container {
1895
+ display: flex;
1896
+ justify-content: space-between;
1897
+ align-items: center;
1898
+ }
1885
1899
 
1886
- .desktop #mobile-header-container {
1887
- padding-top: 2rem;
1888
- }
1900
+ .desktop #mobile-header-container {
1901
+ padding-top: 2rem;
1902
+ }
1889
1903
 
1890
- #facets-container {
1891
- position: relative;
1892
- max-height: 0;
1893
- transition: max-height 0.2s ease-in-out;
1894
- z-index: 1;
1895
- padding-bottom: 2rem;
1896
- }
1904
+ #facets-container {
1905
+ position: relative;
1906
+ max-height: 0;
1907
+ transition: max-height 0.2s ease-in-out;
1908
+ z-index: 1;
1909
+ padding-bottom: 2rem;
1910
+ }
1897
1911
 
1898
- .mobile #facets-container {
1899
- overflow: hidden;
1900
- padding-bottom: 0;
1901
- padding-left: 10px;
1902
- padding-right: 10px;
1903
- }
1912
+ .mobile #facets-container {
1913
+ overflow: hidden;
1914
+ padding-bottom: 0;
1915
+ padding-left: 10px;
1916
+ padding-right: 10px;
1917
+ }
1904
1918
 
1905
- #facets-container.expanded {
1906
- max-height: 2000px;
1907
- }
1919
+ #facets-container.expanded {
1920
+ max-height: 2000px;
1921
+ }
1908
1922
 
1909
- #results-total {
1910
- display: flex;
1911
- align-items: baseline;
1912
- margin-bottom: 5rem;
1913
- }
1923
+ #results-total {
1924
+ display: flex;
1925
+ align-items: baseline;
1926
+ margin-bottom: 5rem;
1927
+ }
1914
1928
 
1915
- .mobile #results-total {
1916
- margin-bottom: 0;
1917
- }
1929
+ .mobile #results-total {
1930
+ margin-bottom: 0;
1931
+ }
1918
1932
 
1919
- #big-results-count {
1920
- font-size: 2.4rem;
1921
- font-weight: 500;
1922
- margin-right: 5px;
1923
- }
1933
+ #big-results-count {
1934
+ font-size: 2.4rem;
1935
+ font-weight: 500;
1936
+ margin-right: 5px;
1937
+ }
1924
1938
 
1925
- #big-results-label {
1926
- font-size: 1.4rem;
1927
- font-weight: 200;
1928
- }
1939
+ #big-results-label {
1940
+ font-size: 1.4rem;
1941
+ font-weight: 200;
1942
+ }
1929
1943
 
1930
- #list-header {
1931
- max-height: 4.2rem;
1932
- }
1944
+ #list-header {
1945
+ max-height: 4.2rem;
1946
+ }
1933
1947
 
1934
- .loading-cover {
1935
- position: absolute;
1936
- top: 0;
1937
- left: 0;
1938
- width: 100%;
1939
- height: 100%;
1940
- display: flex;
1941
- justify-content: center;
1942
- z-index: 1;
1943
- padding-top: 50px;
1944
- }
1948
+ .loading-cover {
1949
+ position: absolute;
1950
+ top: 0;
1951
+ left: 0;
1952
+ width: 100%;
1953
+ height: 100%;
1954
+ display: flex;
1955
+ justify-content: center;
1956
+ z-index: 1;
1957
+ padding-top: 50px;
1958
+ }
1945
1959
 
1946
- circular-activity-indicator {
1947
- width: 30px;
1948
- height: 30px;
1949
- }
1960
+ circular-activity-indicator {
1961
+ width: 30px;
1962
+ height: 30px;
1963
+ }
1950
1964
 
1951
- sort-filter-bar {
1952
- display: block;
1953
- margin-bottom: 4rem;
1954
- }
1965
+ sort-filter-bar {
1966
+ display: block;
1967
+ margin-bottom: 4rem;
1968
+ }
1955
1969
 
1956
- infinite-scroller {
1957
- display: block;
1958
- --infiniteScrollerRowGap: var(--collectionBrowserRowGap, 1.7rem);
1959
- --infiniteScrollerColGap: var(--collectionBrowserColGap, 1.7rem);
1960
- }
1970
+ infinite-scroller {
1971
+ display: block;
1972
+ --infiniteScrollerRowGap: var(--collectionBrowserRowGap, 1.7rem);
1973
+ --infiniteScrollerColGap: var(--collectionBrowserColGap, 1.7rem);
1974
+ }
1961
1975
 
1962
- infinite-scroller.list-compact {
1963
- --infiniteScrollerCellMinWidth: var(
1964
- --collectionBrowserCellMinWidth,
1965
- 100%
1966
- );
1967
- --infiniteScrollerCellMinHeight: 34px; /* override infinite scroller component */
1968
- --infiniteScrollerCellMaxHeight: 56px;
1969
- --infiniteScrollerRowGap: 0px;
1970
- }
1976
+ infinite-scroller.list-compact {
1977
+ --infiniteScrollerCellMinWidth: var(
1978
+ --collectionBrowserCellMinWidth,
1979
+ 100%
1980
+ );
1981
+ --infiniteScrollerCellMinHeight: 34px; /* override infinite scroller component */
1982
+ --infiniteScrollerCellMaxHeight: 56px;
1983
+ --infiniteScrollerRowGap: 0px;
1984
+ }
1971
1985
 
1972
- infinite-scroller.list-detail {
1973
- --infiniteScrollerCellMinWidth: var(
1974
- --collectionBrowserCellMinWidth,
1975
- 100%
1976
- );
1977
- --infiniteScrollerCellMinHeight: var(
1978
- --collectionBrowserCellMinHeight,
1979
- 5rem
1980
- );
1981
- /*
1982
- 30px in spec, compensating for a -4px margin
1983
- to align title with top of item image
1984
- src/tiles/list/tile-list.ts
1985
- */
1986
- --infiniteScrollerRowGap: 34px;
1987
- }
1986
+ infinite-scroller.list-detail {
1987
+ --infiniteScrollerCellMinWidth: var(
1988
+ --collectionBrowserCellMinWidth,
1989
+ 100%
1990
+ );
1991
+ --infiniteScrollerCellMinHeight: var(
1992
+ --collectionBrowserCellMinHeight,
1993
+ 5rem
1994
+ );
1995
+ /*
1996
+ 30px in spec, compensating for a -4px margin
1997
+ to align title with top of item image
1998
+ src/tiles/list/tile-list.ts
1999
+ */
2000
+ --infiniteScrollerRowGap: 34px;
2001
+ }
1988
2002
 
1989
- .mobile infinite-scroller.list-detail {
1990
- --infiniteScrollerRowGap: 24px;
1991
- }
2003
+ .mobile infinite-scroller.list-detail {
2004
+ --infiniteScrollerRowGap: 24px;
2005
+ }
1992
2006
 
1993
- infinite-scroller.grid {
1994
- --infiniteScrollerCellMinWidth: var(
1995
- --collectionBrowserCellMinWidth,
1996
- 17rem
1997
- );
1998
- --infiniteScrollerCellMaxWidth: var(
1999
- --collectionBrowserCellMaxWidth,
2000
- 1fr
2001
- );
2002
- }
2007
+ infinite-scroller.grid {
2008
+ --infiniteScrollerCellMinWidth: var(
2009
+ --collectionBrowserCellMinWidth,
2010
+ 17rem
2011
+ );
2012
+ --infiniteScrollerCellMaxWidth: var(--collectionBrowserCellMaxWidth, 1fr);
2013
+ }
2003
2014
 
2004
- /* Allow tiles to shrink a bit further at smaller viewport widths */
2005
- @media screen and (max-width: 880px) {
2006
- infinite-scroller.grid {
2007
- --infiniteScrollerCellMinWidth: var(
2008
- --collectionBrowserCellMinWidth,
2009
- 15rem
2010
- );
2011
- }
2012
- }
2013
- /* At very small widths, maintain a 2-tile layout as far as it can reasonably go */
2014
- @media screen and (max-width: 360px) {
2015
- infinite-scroller.grid {
2016
- --infiniteScrollerCellMinWidth: var(
2017
- --collectionBrowserCellMinWidth,
2018
- 12rem
2019
- );
2020
- }
2021
- }
2015
+ /* Allow tiles to shrink a bit further at smaller viewport widths */
2016
+ @media screen and (max-width: 880px) {
2017
+ infinite-scroller.grid {
2018
+ --infiniteScrollerCellMinWidth: var(
2019
+ --collectionBrowserCellMinWidth,
2020
+ 15rem
2021
+ );
2022
+ }
2023
+ }
2024
+ /* At very small widths, maintain a 2-tile layout as far as it can reasonably go */
2025
+ @media screen and (max-width: 360px) {
2026
+ infinite-scroller.grid {
2027
+ --infiniteScrollerCellMinWidth: var(
2028
+ --collectionBrowserCellMinWidth,
2029
+ 12rem
2030
+ );
2031
+ }
2032
+ }
2022
2033
 
2023
- infinite-scroller.hidden {
2024
- display: none;
2025
- }
2026
- `,
2027
- ];
2028
- }
2034
+ infinite-scroller.hidden {
2035
+ display: none;
2036
+ }
2037
+ `;
2029
2038
  }