@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.
- package/dist/src/collection-browser.d.ts +10 -9
- package/dist/src/collection-browser.js +331 -328
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/collection-facets/facets-template.js +0 -2
- package/dist/src/collection-facets/facets-template.js.map +1 -1
- package/dist/src/collection-facets/more-facets-content.js +70 -63
- package/dist/src/collection-facets/more-facets-content.js.map +1 -1
- package/dist/src/collection-facets/more-facets-pagination.js +55 -49
- package/dist/src/collection-facets/more-facets-pagination.js.map +1 -1
- package/dist/src/collection-facets/toggle-switch.js +56 -46
- package/dist/src/collection-facets/toggle-switch.js.map +1 -1
- package/dist/src/collection-facets.d.ts +1 -1
- package/dist/src/collection-facets.js +84 -94
- package/dist/src/collection-facets.js.map +1 -1
- package/dist/src/sort-filter-bar/alpha-bar.d.ts +1 -2
- package/dist/src/sort-filter-bar/alpha-bar.js +25 -33
- package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -1
- package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +1 -1
- package/dist/src/sort-filter-bar/sort-filter-bar.js +186 -198
- package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
- package/dist/src/tiles/grid/account-tile.js +1 -1
- package/dist/src/tiles/grid/account-tile.js.map +1 -1
- package/dist/src/tiles/grid/collection-tile.js +2 -2
- package/dist/src/tiles/grid/collection-tile.js.map +1 -1
- package/dist/src/tiles/grid/item-tile.js +2 -2
- package/dist/src/tiles/grid/item-tile.js.map +1 -1
- package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +15 -5
- package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js.map +1 -1
- package/dist/src/tiles/grid/tile-stats.js +65 -58
- package/dist/src/tiles/grid/tile-stats.js.map +1 -1
- package/dist/src/tiles/tile-dispatcher.js +2 -3
- package/dist/src/tiles/tile-dispatcher.js.map +1 -1
- package/dist/test/collection-browser.test.js +2 -2
- package/dist/test/collection-browser.test.js.map +1 -1
- package/dist/test/collection-facets.test.js +5 -8
- package/dist/test/collection-facets.test.js.map +1 -1
- package/dist/test/sort-filter-bar/alpha-bar.test.js +12 -12
- package/dist/test/sort-filter-bar/alpha-bar.test.js.map +1 -1
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js +2 -2
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -1
- package/package.json +5 -5
- package/src/collection-browser.ts +339 -330
- package/src/collection-facets/facets-template.ts +0 -2
- package/src/collection-facets/more-facets-content.ts +70 -63
- package/src/collection-facets/more-facets-pagination.ts +55 -49
- package/src/collection-facets/toggle-switch.ts +61 -51
- package/src/collection-facets.ts +85 -96
- package/src/sort-filter-bar/alpha-bar.ts +18 -26
- package/src/sort-filter-bar/sort-filter-bar.ts +186 -200
- package/src/tiles/grid/account-tile.ts +1 -1
- package/src/tiles/grid/collection-tile.ts +2 -2
- package/src/tiles/grid/item-tile.ts +2 -2
- package/src/tiles/grid/styles/tile-grid-shared-styles.ts +15 -5
- package/src/tiles/grid/tile-stats.ts +73 -66
- package/src/tiles/tile-dispatcher.ts +0 -1
- package/test/collection-browser.test.ts +2 -2
- package/test/collection-facets.test.ts +2 -10
- package/test/sort-filter-bar/alpha-bar.test.ts +12 -16
- package/test/sort-filter-bar/sort-filter-bar.test.ts +2 -2
- package/dist/src/styles/sr-only.d.ts +0 -1
- package/dist/src/styles/sr-only.js +0 -18
- package/dist/src/styles/sr-only.js.map +0 -1
- package/src/styles/sr-only.ts +0 -18
|
@@ -16,7 +16,6 @@ import { RestorationStateHandler, } from './restoration-state-handler';
|
|
|
16
16
|
import chevronIcon from './assets/img/icons/chevron';
|
|
17
17
|
import './empty-placeholder';
|
|
18
18
|
import { analyticsActions, analyticsCategories, } from './utils/analytics-events';
|
|
19
|
-
import { srOnlyStyle } from './styles/sr-only';
|
|
20
19
|
let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
21
20
|
constructor() {
|
|
22
21
|
super(...arguments);
|
|
@@ -250,9 +249,7 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
250
249
|
class="column${this.isResizeToMobile ? ' preload' : ''}"
|
|
251
250
|
>
|
|
252
251
|
<div id="mobile-header-container">
|
|
253
|
-
${this.mobileView
|
|
254
|
-
? this.mobileFacetsTemplate
|
|
255
|
-
: html `<h2 id="facets-header" class="sr-only">Filters</h2>`}
|
|
252
|
+
${this.mobileView ? this.mobileFacetsTemplate : nothing}
|
|
256
253
|
<div id="results-total">
|
|
257
254
|
<span id="big-results-count">
|
|
258
255
|
${shouldShowSearching ? html `Searching…` : resultsCount}
|
|
@@ -262,12 +259,15 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
262
259
|
</span>
|
|
263
260
|
</div>
|
|
264
261
|
</div>
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
262
|
+
<div
|
|
263
|
+
id="facets-container"
|
|
264
|
+
class=${!this.mobileView || this.mobileFacetsVisible
|
|
265
|
+
? 'expanded'
|
|
266
|
+
: ''}
|
|
267
|
+
>
|
|
268
|
+
${this.facetsTemplate}
|
|
269
|
+
<div id="facets-scroll-sentinel"></div>
|
|
270
|
+
</div>
|
|
271
271
|
${this.mobileView ? nothing : html `<div id="facets-bottom-fade"></div>`}
|
|
272
272
|
</div>
|
|
273
273
|
<div id="right-column" class="column">
|
|
@@ -282,7 +282,6 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
282
282
|
return html `<infinite-scroller
|
|
283
283
|
class=${this.infiniteScrollerClasses}
|
|
284
284
|
itemCount=${this.placeholderType ? 0 : nothing}
|
|
285
|
-
ariaLandmarkLabel="Search results"
|
|
286
285
|
.cellProvider=${this}
|
|
287
286
|
.placeholderCellTemplate=${this.placeholderCellTemplate}
|
|
288
287
|
@scrollThresholdReached=${this.scrollThresholdReached}
|
|
@@ -426,32 +425,27 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
426
425
|
this.selectedTitleFilter = null;
|
|
427
426
|
this.selectedCreatorFilter = e.detail.selectedLetter;
|
|
428
427
|
}
|
|
429
|
-
/**
|
|
430
|
-
* The full template for how the facets should be structured in mobile view,
|
|
431
|
-
* including the collapsible container (with header) and the facets themselves.
|
|
432
|
-
*/
|
|
433
428
|
get mobileFacetsTemplate() {
|
|
434
|
-
|
|
429
|
+
return html `
|
|
430
|
+
<div id="mobile-filter-collapse">
|
|
431
|
+
<h1
|
|
432
|
+
@click=${() => {
|
|
435
433
|
this.isResizeToMobile = false;
|
|
436
434
|
this.mobileFacetsVisible = !this.mobileFacetsVisible;
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
</
|
|
448
|
-
|
|
449
|
-
</details>
|
|
435
|
+
}}
|
|
436
|
+
@keyup=${() => {
|
|
437
|
+
this.isResizeToMobile = false;
|
|
438
|
+
this.mobileFacetsVisible = !this.mobileFacetsVisible;
|
|
439
|
+
}}
|
|
440
|
+
>
|
|
441
|
+
<span class="collapser ${this.mobileFacetsVisible ? 'open' : ''}">
|
|
442
|
+
${chevronIcon}
|
|
443
|
+
</span>
|
|
444
|
+
Filters
|
|
445
|
+
</h1>
|
|
446
|
+
</div>
|
|
450
447
|
`;
|
|
451
448
|
}
|
|
452
|
-
/**
|
|
453
|
-
* The template for the facets component alone, without any surrounding wrappers.
|
|
454
|
-
*/
|
|
455
449
|
get facetsTemplate() {
|
|
456
450
|
return html `
|
|
457
451
|
<collection-facets
|
|
@@ -717,7 +711,6 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
717
711
|
this.dispatchEvent(event);
|
|
718
712
|
}
|
|
719
713
|
async handleQueryChange() {
|
|
720
|
-
var _a;
|
|
721
714
|
// only reset if the query has actually changed
|
|
722
715
|
if (!this.searchService || this.pageFetchQueryKey === this.previousQueryKey)
|
|
723
716
|
return;
|
|
@@ -728,11 +721,17 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
728
721
|
this.fullYearsHistogramAggregation = undefined;
|
|
729
722
|
this.pageFetchesInProgress = {};
|
|
730
723
|
this.endOfDataReached = false;
|
|
731
|
-
this.pagesToRender =
|
|
724
|
+
this.pagesToRender =
|
|
725
|
+
this.initialPageNumber === 1
|
|
726
|
+
? 2 // First two pages are batched into one request when starting from page 1
|
|
727
|
+
: this.initialPageNumber;
|
|
732
728
|
this.queryErrorMessage = undefined;
|
|
733
729
|
// Reset the infinite scroller's item count, so that it
|
|
734
730
|
// shows tile placeholders until the new query's results load in
|
|
735
|
-
(
|
|
731
|
+
if (this.infiniteScroller) {
|
|
732
|
+
this.infiniteScroller.itemCount = this.estimatedTileCount;
|
|
733
|
+
this.infiniteScroller.reload();
|
|
734
|
+
}
|
|
736
735
|
if (!this.initialQueryChangeHappened && this.initialPageNumber > 1) {
|
|
737
736
|
this.scrollToPage(this.initialPageNumber);
|
|
738
737
|
}
|
|
@@ -797,7 +796,8 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
797
796
|
}
|
|
798
797
|
async doInitialPageFetch() {
|
|
799
798
|
this.searchResultsLoading = true;
|
|
800
|
-
|
|
799
|
+
// Try to batch 2 initial page requests when possible
|
|
800
|
+
await this.fetchPage(this.initialPageNumber, 2);
|
|
801
801
|
this.searchResultsLoading = false;
|
|
802
802
|
}
|
|
803
803
|
emitSearchResultsLoadingChanged() {
|
|
@@ -1054,7 +1054,15 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
1054
1054
|
get facetFetchQueryKey() {
|
|
1055
1055
|
return `${this.fullQuery}-${this.searchType}`;
|
|
1056
1056
|
}
|
|
1057
|
-
|
|
1057
|
+
/**
|
|
1058
|
+
* Fetches one or more pages of results and updates the data source.
|
|
1059
|
+
*
|
|
1060
|
+
* @param pageNumber The page number to fetch
|
|
1061
|
+
* @param numInitialPages If this is an initial page fetch (`pageNumber = 1`),
|
|
1062
|
+
* specifies how many pages to batch together in one request. Ignored
|
|
1063
|
+
* if `pageNumber != 1`, defaulting to a single page.
|
|
1064
|
+
*/
|
|
1065
|
+
async fetchPage(pageNumber, numInitialPages = 1) {
|
|
1058
1066
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
1059
1067
|
const trimmedQuery = (_a = this.baseQuery) === null || _a === void 0 ? void 0 : _a.trim();
|
|
1060
1068
|
if (!trimmedQuery)
|
|
@@ -1066,18 +1074,24 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
1066
1074
|
return;
|
|
1067
1075
|
if (this.endOfDataReached)
|
|
1068
1076
|
return;
|
|
1077
|
+
// Batch multiple initial page requests together if needed (e.g., can request
|
|
1078
|
+
// pages 1 and 2 together in a single request).
|
|
1079
|
+
const numPages = pageNumber === 1 ? numInitialPages : 1;
|
|
1080
|
+
const numRows = this.pageSize * numPages;
|
|
1069
1081
|
// if a fetch is already in progress for this query and page, don't fetch again
|
|
1070
1082
|
const { pageFetchQueryKey } = this;
|
|
1071
1083
|
const pageFetches = (_b = this.pageFetchesInProgress[pageFetchQueryKey]) !== null && _b !== void 0 ? _b : new Set();
|
|
1072
1084
|
if (pageFetches.has(pageNumber))
|
|
1073
1085
|
return;
|
|
1074
|
-
|
|
1086
|
+
for (let i = 0; i < numPages; i += 1) {
|
|
1087
|
+
pageFetches.add(pageNumber + i);
|
|
1088
|
+
}
|
|
1075
1089
|
this.pageFetchesInProgress[pageFetchQueryKey] = pageFetches;
|
|
1076
1090
|
const sortParams = this.sortParam ? [this.sortParam] : [];
|
|
1077
1091
|
const params = {
|
|
1078
1092
|
query: trimmedQuery,
|
|
1079
1093
|
page: pageNumber,
|
|
1080
|
-
rows:
|
|
1094
|
+
rows: numRows,
|
|
1081
1095
|
sort: sortParams,
|
|
1082
1096
|
filters: this.filterMap,
|
|
1083
1097
|
aggregations: { omit: true },
|
|
@@ -1100,20 +1114,28 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
1100
1114
|
// @ts-ignore: Property 'Sentry' does not exist on type 'Window & typeof globalThis'
|
|
1101
1115
|
(_g = (_f = window === null || window === void 0 ? void 0 : window.Sentry) === null || _f === void 0 ? void 0 : _f.captureMessage) === null || _g === void 0 ? void 0 : _g.call(_f, this.queryErrorMessage, 'error');
|
|
1102
1116
|
}
|
|
1103
|
-
(
|
|
1117
|
+
for (let i = 0; i < numPages; i += 1) {
|
|
1118
|
+
(_h = this.pageFetchesInProgress[pageFetchQueryKey]) === null || _h === void 0 ? void 0 : _h.delete(pageNumber + i);
|
|
1119
|
+
}
|
|
1104
1120
|
this.searchResultsLoading = false;
|
|
1105
1121
|
return;
|
|
1106
1122
|
}
|
|
1107
1123
|
this.totalResults = success.response.totalResults;
|
|
1108
1124
|
const { results, collectionTitles } = success.response;
|
|
1109
1125
|
if (results && results.length > 0) {
|
|
1126
|
+
// Load any collection titles present on the response into the cache,
|
|
1127
|
+
// or queue up preload fetches for them if none were present.
|
|
1110
1128
|
if (collectionTitles) {
|
|
1111
1129
|
(_j = this.collectionNameCache) === null || _j === void 0 ? void 0 : _j.addKnownTitles(collectionTitles);
|
|
1112
1130
|
}
|
|
1113
1131
|
else {
|
|
1114
1132
|
this.preloadCollectionNames(results);
|
|
1115
1133
|
}
|
|
1116
|
-
|
|
1134
|
+
// Update the data source for each returned page
|
|
1135
|
+
for (let i = 0; i < numPages; i += 1) {
|
|
1136
|
+
const pageStartIndex = this.pageSize * i;
|
|
1137
|
+
this.updateDataSource(pageNumber + i, results.slice(pageStartIndex, pageStartIndex + this.pageSize));
|
|
1138
|
+
}
|
|
1117
1139
|
}
|
|
1118
1140
|
// When we reach the end of the data, we can set the infinite scroller's
|
|
1119
1141
|
// item count to the real total number of results (rather than the
|
|
@@ -1124,7 +1146,9 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
1124
1146
|
this.infiniteScroller.itemCount = this.totalResults;
|
|
1125
1147
|
}
|
|
1126
1148
|
}
|
|
1127
|
-
(
|
|
1149
|
+
for (let i = 0; i < numPages; i += 1) {
|
|
1150
|
+
(_k = this.pageFetchesInProgress[pageFetchQueryKey]) === null || _k === void 0 ? void 0 : _k.delete(pageNumber + i);
|
|
1151
|
+
}
|
|
1128
1152
|
}
|
|
1129
1153
|
preloadCollectionNames(results) {
|
|
1130
1154
|
var _a;
|
|
@@ -1330,330 +1354,309 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
1330
1354
|
this.fetchPage(this.pagesToRender);
|
|
1331
1355
|
}
|
|
1332
1356
|
}
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
:host {
|
|
1338
|
-
display: block;
|
|
1339
|
-
|
|
1340
|
-
--leftColumnWidth: 18rem;
|
|
1341
|
-
--leftColumnPaddingRight: 2.5rem;
|
|
1342
|
-
}
|
|
1343
|
-
|
|
1344
|
-
/**
|
|
1345
|
-
* When page width resizes from desktop to mobile, use this class to
|
|
1346
|
-
* disable expand/collapse transition when loading.
|
|
1347
|
-
*/
|
|
1348
|
-
.preload * {
|
|
1349
|
-
transition: none !important;
|
|
1350
|
-
-webkit-transition: none !important;
|
|
1351
|
-
-moz-transition: none !important;
|
|
1352
|
-
-ms-transition: none !important;
|
|
1353
|
-
-o-transition: none !important;
|
|
1354
|
-
}
|
|
1357
|
+
};
|
|
1358
|
+
CollectionBrowser.styles = css `
|
|
1359
|
+
:host {
|
|
1360
|
+
display: block;
|
|
1355
1361
|
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1362
|
+
--leftColumnWidth: 18rem;
|
|
1363
|
+
--leftColumnPaddingRight: 2.5rem;
|
|
1364
|
+
}
|
|
1359
1365
|
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1366
|
+
/**
|
|
1367
|
+
* When page width resizes from desktop to mobile, use this class to
|
|
1368
|
+
* disable expand/collapse transition when loading.
|
|
1369
|
+
*/
|
|
1370
|
+
.preload * {
|
|
1371
|
+
transition: none !important;
|
|
1372
|
+
-webkit-transition: none !important;
|
|
1373
|
+
-moz-transition: none !important;
|
|
1374
|
+
-ms-transition: none !important;
|
|
1375
|
+
-o-transition: none !important;
|
|
1376
|
+
}
|
|
1363
1377
|
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
height: 12px;
|
|
1368
|
-
transition: transform 0.2s ease-out;
|
|
1369
|
-
}
|
|
1378
|
+
#content-container {
|
|
1379
|
+
display: flex;
|
|
1380
|
+
}
|
|
1370
1381
|
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
}
|
|
1382
|
+
.collapser {
|
|
1383
|
+
display: inline-block;
|
|
1384
|
+
}
|
|
1375
1385
|
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1386
|
+
.collapser svg {
|
|
1387
|
+
width: 10px;
|
|
1388
|
+
height: 10px;
|
|
1389
|
+
transition: transform 0.2s ease-out;
|
|
1390
|
+
}
|
|
1379
1391
|
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
font-size: 2rem;
|
|
1384
|
-
}
|
|
1392
|
+
.collapser.open svg {
|
|
1393
|
+
transform: rotate(90deg);
|
|
1394
|
+
}
|
|
1385
1395
|
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1396
|
+
#mobile-filter-collapse h1 {
|
|
1397
|
+
cursor: pointer;
|
|
1398
|
+
}
|
|
1389
1399
|
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1400
|
+
#content-container.mobile {
|
|
1401
|
+
display: block;
|
|
1402
|
+
}
|
|
1393
1403
|
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1404
|
+
.column {
|
|
1405
|
+
padding-top: 2rem;
|
|
1406
|
+
}
|
|
1397
1407
|
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1408
|
+
#right-column {
|
|
1409
|
+
flex: 1;
|
|
1410
|
+
position: relative;
|
|
1411
|
+
border-left: 1px solid rgb(232, 232, 232);
|
|
1412
|
+
border-right: 1px solid rgb(232, 232, 232);
|
|
1413
|
+
padding-left: 1rem;
|
|
1414
|
+
padding-right: 1rem;
|
|
1415
|
+
background: #fff;
|
|
1416
|
+
}
|
|
1407
1417
|
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1418
|
+
.mobile #right-column {
|
|
1419
|
+
border-left: none;
|
|
1420
|
+
padding: 5px 5px 0;
|
|
1421
|
+
}
|
|
1412
1422
|
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
+
#left-column {
|
|
1424
|
+
width: var(--leftColumnWidth, 18rem);
|
|
1425
|
+
/* Prevents Safari from shrinking col at first draw */
|
|
1426
|
+
min-width: var(--leftColumnWidth, 18rem);
|
|
1427
|
+
padding-top: 0;
|
|
1428
|
+
/* Reduced padding by 0.2rem to add the invisible border in the rule below */
|
|
1429
|
+
padding-right: calc(var(--leftColumnPaddingRight, 2.5rem) - 0.2rem);
|
|
1430
|
+
border-right: 0.2rem solid transparent; /* Pads to the right of the scrollbar a bit */
|
|
1431
|
+
z-index: 1;
|
|
1432
|
+
}
|
|
1423
1433
|
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1434
|
+
.desktop #left-column {
|
|
1435
|
+
top: 0;
|
|
1436
|
+
position: sticky;
|
|
1437
|
+
height: calc(100vh - 2rem);
|
|
1438
|
+
max-height: calc(100vh - 2rem);
|
|
1439
|
+
overflow-x: hidden;
|
|
1440
|
+
overflow-y: scroll;
|
|
1431
1441
|
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1442
|
+
/*
|
|
1443
|
+
* Firefox doesn't support any of the -webkit-scrollbar stuff below, but
|
|
1444
|
+
* does at least give us a tiny bit of control over width & color.
|
|
1445
|
+
*/
|
|
1446
|
+
scrollbar-width: thin;
|
|
1447
|
+
scrollbar-color: transparent transparent;
|
|
1448
|
+
}
|
|
1449
|
+
.desktop #left-column:hover {
|
|
1450
|
+
scrollbar-color: auto;
|
|
1451
|
+
}
|
|
1452
|
+
.desktop #left-column::-webkit-scrollbar {
|
|
1453
|
+
appearance: none;
|
|
1454
|
+
width: 6px;
|
|
1455
|
+
}
|
|
1456
|
+
.desktop #left-column::-webkit-scrollbar-button {
|
|
1457
|
+
height: 3px;
|
|
1458
|
+
background: transparent;
|
|
1459
|
+
}
|
|
1460
|
+
.desktop #left-column::-webkit-scrollbar-corner {
|
|
1461
|
+
background: transparent;
|
|
1462
|
+
}
|
|
1463
|
+
.desktop #left-column::-webkit-scrollbar-thumb {
|
|
1464
|
+
border-radius: 4px;
|
|
1465
|
+
}
|
|
1466
|
+
.desktop #left-column:hover::-webkit-scrollbar-thumb {
|
|
1467
|
+
background: rgba(0, 0, 0, 0.15);
|
|
1468
|
+
}
|
|
1469
|
+
.desktop #left-column:hover::-webkit-scrollbar-thumb:hover {
|
|
1470
|
+
background: rgba(0, 0, 0, 0.2);
|
|
1471
|
+
}
|
|
1472
|
+
.desktop #left-column:hover::-webkit-scrollbar-thumb:active {
|
|
1473
|
+
background: rgba(0, 0, 0, 0.3);
|
|
1474
|
+
}
|
|
1465
1475
|
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1476
|
+
#facets-bottom-fade {
|
|
1477
|
+
background: linear-gradient(
|
|
1478
|
+
to bottom,
|
|
1479
|
+
#f5f5f700 0%,
|
|
1480
|
+
#f5f5f7c0 50%,
|
|
1481
|
+
#f5f5f7 80%,
|
|
1482
|
+
#f5f5f7 100%
|
|
1483
|
+
);
|
|
1484
|
+
position: fixed;
|
|
1485
|
+
bottom: 0;
|
|
1486
|
+
height: 50px;
|
|
1487
|
+
/* Wide enough to cover the content, but leave the scrollbar uncovered */
|
|
1488
|
+
width: calc(
|
|
1489
|
+
var(--leftColumnWidth) + var(--leftColumnPaddingRight) - 10px
|
|
1490
|
+
);
|
|
1491
|
+
z-index: 2;
|
|
1492
|
+
pointer-events: none;
|
|
1493
|
+
transition: height 0.1s ease;
|
|
1494
|
+
}
|
|
1495
|
+
#facets-bottom-fade.hidden {
|
|
1496
|
+
height: 0;
|
|
1497
|
+
}
|
|
1488
1498
|
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1499
|
+
.desktop #left-column-scroll-sentinel {
|
|
1500
|
+
width: 1px;
|
|
1501
|
+
height: 100vh;
|
|
1502
|
+
background: transparent;
|
|
1503
|
+
}
|
|
1494
1504
|
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1505
|
+
.desktop #facets-scroll-sentinel {
|
|
1506
|
+
width: 1px;
|
|
1507
|
+
height: 1px;
|
|
1508
|
+
background: transparent;
|
|
1509
|
+
}
|
|
1500
1510
|
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1511
|
+
.mobile #left-column {
|
|
1512
|
+
width: 100%;
|
|
1513
|
+
padding: 0;
|
|
1514
|
+
}
|
|
1505
1515
|
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
}
|
|
1516
|
+
#mobile-header-container {
|
|
1517
|
+
display: flex;
|
|
1518
|
+
justify-content: space-between;
|
|
1519
|
+
align-items: center;
|
|
1520
|
+
}
|
|
1512
1521
|
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1522
|
+
.desktop #mobile-header-container {
|
|
1523
|
+
padding-top: 2rem;
|
|
1524
|
+
}
|
|
1516
1525
|
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1526
|
+
#facets-container {
|
|
1527
|
+
position: relative;
|
|
1528
|
+
max-height: 0;
|
|
1529
|
+
transition: max-height 0.2s ease-in-out;
|
|
1530
|
+
z-index: 1;
|
|
1531
|
+
padding-bottom: 2rem;
|
|
1532
|
+
}
|
|
1524
1533
|
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1534
|
+
.mobile #facets-container {
|
|
1535
|
+
overflow: hidden;
|
|
1536
|
+
padding-bottom: 0;
|
|
1537
|
+
padding-left: 10px;
|
|
1538
|
+
padding-right: 10px;
|
|
1539
|
+
}
|
|
1531
1540
|
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1541
|
+
#facets-container.expanded {
|
|
1542
|
+
max-height: 2000px;
|
|
1543
|
+
}
|
|
1535
1544
|
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1545
|
+
#results-total {
|
|
1546
|
+
display: flex;
|
|
1547
|
+
align-items: baseline;
|
|
1548
|
+
margin-bottom: 5rem;
|
|
1549
|
+
}
|
|
1541
1550
|
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1551
|
+
.mobile #results-total {
|
|
1552
|
+
margin-bottom: 0;
|
|
1553
|
+
}
|
|
1545
1554
|
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1555
|
+
#big-results-count {
|
|
1556
|
+
font-size: 2.4rem;
|
|
1557
|
+
font-weight: 500;
|
|
1558
|
+
margin-right: 5px;
|
|
1559
|
+
}
|
|
1551
1560
|
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1561
|
+
#big-results-label {
|
|
1562
|
+
font-size: 1.4rem;
|
|
1563
|
+
font-weight: 200;
|
|
1564
|
+
}
|
|
1556
1565
|
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1566
|
+
#list-header {
|
|
1567
|
+
max-height: 4.2rem;
|
|
1568
|
+
}
|
|
1560
1569
|
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1570
|
+
.loading-cover {
|
|
1571
|
+
position: absolute;
|
|
1572
|
+
top: 0;
|
|
1573
|
+
left: 0;
|
|
1574
|
+
width: 100%;
|
|
1575
|
+
height: 100%;
|
|
1576
|
+
display: flex;
|
|
1577
|
+
justify-content: center;
|
|
1578
|
+
z-index: 1;
|
|
1579
|
+
padding-top: 50px;
|
|
1580
|
+
}
|
|
1572
1581
|
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1582
|
+
circular-activity-indicator {
|
|
1583
|
+
width: 30px;
|
|
1584
|
+
height: 30px;
|
|
1585
|
+
}
|
|
1577
1586
|
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1587
|
+
sort-filter-bar {
|
|
1588
|
+
display: block;
|
|
1589
|
+
margin-bottom: 4rem;
|
|
1590
|
+
}
|
|
1582
1591
|
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1592
|
+
infinite-scroller {
|
|
1593
|
+
display: block;
|
|
1594
|
+
--infiniteScrollerRowGap: var(--collectionBrowserRowGap, 1.7rem);
|
|
1595
|
+
--infiniteScrollerColGap: var(--collectionBrowserColGap, 1.7rem);
|
|
1596
|
+
}
|
|
1588
1597
|
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
+
infinite-scroller.list-compact {
|
|
1599
|
+
--infiniteScrollerCellMinWidth: var(
|
|
1600
|
+
--collectionBrowserCellMinWidth,
|
|
1601
|
+
100%
|
|
1602
|
+
);
|
|
1603
|
+
--infiniteScrollerCellMinHeight: 34px; /* override infinite scroller component */
|
|
1604
|
+
--infiniteScrollerCellMaxHeight: 56px;
|
|
1605
|
+
--infiniteScrollerRowGap: 0px;
|
|
1606
|
+
}
|
|
1598
1607
|
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1608
|
+
infinite-scroller.list-detail {
|
|
1609
|
+
--infiniteScrollerCellMinWidth: var(
|
|
1610
|
+
--collectionBrowserCellMinWidth,
|
|
1611
|
+
100%
|
|
1612
|
+
);
|
|
1613
|
+
--infiniteScrollerCellMinHeight: var(
|
|
1614
|
+
--collectionBrowserCellMinHeight,
|
|
1615
|
+
5rem
|
|
1616
|
+
);
|
|
1617
|
+
/*
|
|
1618
|
+
30px in spec, compensating for a -4px margin
|
|
1619
|
+
to align title with top of item image
|
|
1620
|
+
src/tiles/list/tile-list.ts
|
|
1621
|
+
*/
|
|
1622
|
+
--infiniteScrollerRowGap: 34px;
|
|
1623
|
+
}
|
|
1615
1624
|
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1625
|
+
.mobile infinite-scroller.list-detail {
|
|
1626
|
+
--infiniteScrollerRowGap: 24px;
|
|
1627
|
+
}
|
|
1619
1628
|
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
1fr
|
|
1628
|
-
);
|
|
1629
|
-
}
|
|
1629
|
+
infinite-scroller.grid {
|
|
1630
|
+
--infiniteScrollerCellMinWidth: var(
|
|
1631
|
+
--collectionBrowserCellMinWidth,
|
|
1632
|
+
17rem
|
|
1633
|
+
);
|
|
1634
|
+
--infiniteScrollerCellMaxWidth: var(--collectionBrowserCellMaxWidth, 1fr);
|
|
1635
|
+
}
|
|
1630
1636
|
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1637
|
+
/* Allow tiles to shrink a bit further at smaller viewport widths */
|
|
1638
|
+
@media screen and (max-width: 880px) {
|
|
1639
|
+
infinite-scroller.grid {
|
|
1640
|
+
--infiniteScrollerCellMinWidth: var(
|
|
1641
|
+
--collectionBrowserCellMinWidth,
|
|
1642
|
+
15rem
|
|
1643
|
+
);
|
|
1644
|
+
}
|
|
1645
|
+
}
|
|
1646
|
+
/* At very small widths, maintain a 2-tile layout as far as it can reasonably go */
|
|
1647
|
+
@media screen and (max-width: 360px) {
|
|
1648
|
+
infinite-scroller.grid {
|
|
1649
|
+
--infiniteScrollerCellMinWidth: var(
|
|
1650
|
+
--collectionBrowserCellMinWidth,
|
|
1651
|
+
12rem
|
|
1652
|
+
);
|
|
1653
|
+
}
|
|
1654
|
+
}
|
|
1649
1655
|
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
];
|
|
1655
|
-
}
|
|
1656
|
-
};
|
|
1656
|
+
infinite-scroller.hidden {
|
|
1657
|
+
display: none;
|
|
1658
|
+
}
|
|
1659
|
+
`;
|
|
1657
1660
|
__decorate([
|
|
1658
1661
|
property({ type: String })
|
|
1659
1662
|
], CollectionBrowser.prototype, "baseNavigationUrl", void 0);
|