@internetarchive/collection-browser 0.0.1-alpha.2 → 0.0.1-alpha.22
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/demo/app-root.ts +24 -158
- package/dist/demo/app-root.d.ts +2 -16
- package/dist/demo/app-root.js +23 -141
- package/dist/demo/app-root.js.map +1 -1
- package/dist/src/assets/img/icons/chevron.d.ts +2 -0
- package/dist/src/assets/img/icons/chevron.js +4 -0
- package/dist/src/assets/img/icons/chevron.js.map +1 -0
- package/dist/src/assets/img/icons/eye-closed.d.ts +2 -0
- package/dist/src/assets/img/icons/eye-closed.js +5 -0
- package/dist/src/assets/img/icons/eye-closed.js.map +1 -0
- package/dist/src/assets/img/icons/eye.d.ts +2 -0
- package/dist/src/assets/img/icons/eye.js +5 -0
- package/dist/src/assets/img/icons/eye.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -2
- package/dist/src/assets/img/icons/mediatype/account.js +5 -4
- package/dist/src/assets/img/icons/mediatype/account.js.map +1 -1
- package/dist/src/assets/img/icons/mediatype/audio.js +7 -4
- package/dist/src/assets/img/icons/mediatype/audio.js.map +1 -1
- package/dist/src/assets/img/icons/mediatype/collection.js +7 -4
- package/dist/src/assets/img/icons/mediatype/collection.js.map +1 -1
- package/dist/src/assets/img/icons/mediatype/etree.js +10 -5
- package/dist/src/assets/img/icons/mediatype/etree.js.map +1 -1
- package/dist/src/assets/img/icons/mediatype/film.js +2 -1
- package/dist/src/assets/img/icons/mediatype/film.js.map +1 -1
- package/dist/src/assets/img/icons/mediatype/images.js +9 -6
- package/dist/src/assets/img/icons/mediatype/images.js.map +1 -1
- package/dist/src/assets/img/icons/mediatype/software.js +9 -6
- package/dist/src/assets/img/icons/mediatype/software.js.map +1 -1
- package/dist/src/assets/img/icons/mediatype/texts.js +9 -6
- package/dist/src/assets/img/icons/mediatype/texts.js.map +1 -1
- package/dist/src/assets/img/icons/mediatype/tv.js +10 -5
- package/dist/src/assets/img/icons/mediatype/tv.js.map +1 -1
- package/dist/src/assets/img/icons/mediatype/video.js +10 -6
- package/dist/src/assets/img/icons/mediatype/video.js.map +1 -1
- package/dist/src/assets/img/icons/mediatype/web.js +9 -6
- package/dist/src/assets/img/icons/mediatype/web.js.map +1 -1
- package/dist/src/async-collection-name.d.ts +11 -0
- package/dist/src/async-collection-name.js +38 -0
- package/dist/src/async-collection-name.js.map +1 -0
- package/dist/src/collection-browser.d.ts +55 -17
- package/dist/src/collection-browser.js +466 -106
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/collection-facets.d.ts +24 -5
- package/dist/src/collection-facets.js +300 -78
- package/dist/src/collection-facets.js.map +1 -1
- package/dist/src/collection-name-cache.d.ts +18 -0
- package/dist/src/collection-name-cache.js +89 -0
- package/dist/src/collection-name-cache.js.map +1 -0
- package/dist/src/mediatype-icon.js +10 -3
- package/dist/src/mediatype-icon.js.map +1 -1
- package/dist/src/models.d.ts +72 -14
- package/dist/src/models.js +57 -1
- package/dist/src/models.js.map +1 -1
- package/dist/src/restoration-state-handler.d.ts +37 -0
- package/dist/src/restoration-state-handler.js +177 -0
- package/dist/src/restoration-state-handler.js.map +1 -0
- package/dist/src/sort-filter-bar/alpha-bar.d.ts +1 -2
- package/dist/src/sort-filter-bar/alpha-bar.js +19 -9
- package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -1
- package/dist/src/sort-filter-bar/img/compact.d.ts +1 -0
- package/dist/src/sort-filter-bar/img/compact.js +5 -0
- package/dist/src/sort-filter-bar/img/compact.js.map +1 -0
- package/dist/src/sort-filter-bar/img/grid.d.ts +1 -0
- package/dist/src/sort-filter-bar/img/grid.js +5 -0
- package/dist/src/sort-filter-bar/img/grid.js.map +1 -0
- package/dist/src/sort-filter-bar/img/list.d.ts +1 -0
- package/dist/src/sort-filter-bar/img/list.js +5 -0
- package/dist/src/sort-filter-bar/img/list.js.map +1 -0
- package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -0
- package/dist/src/sort-filter-bar/img/sort-triangle.js +5 -0
- package/dist/src/sort-filter-bar/img/sort-triangle.js.map +1 -0
- package/dist/src/sort-filter-bar/img/tile.d.ts +1 -0
- package/dist/src/sort-filter-bar/img/tile.js +5 -0
- package/dist/src/sort-filter-bar/img/tile.js.map +1 -0
- package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +65 -11
- package/dist/src/sort-filter-bar/sort-filter-bar.js +453 -142
- package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
- package/dist/src/tiles/grid/collection-tile.js +1 -2
- package/dist/src/tiles/grid/collection-tile.js.map +1 -1
- package/dist/src/tiles/grid/item-tile.d.ts +4 -0
- package/dist/src/tiles/grid/item-tile.js +134 -45
- package/dist/src/tiles/grid/item-tile.js.map +1 -1
- package/dist/src/tiles/list/tile-list-compact-header.d.ts +11 -0
- package/dist/src/tiles/list/tile-list-compact-header.js +79 -0
- package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -0
- package/dist/src/tiles/list/tile-list-compact.d.ts +1 -0
- package/dist/src/tiles/list/tile-list-compact.js +122 -31
- package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
- package/dist/src/tiles/list/tile-list-detail.d.ts +0 -10
- package/dist/src/tiles/list/tile-list-detail.js +6 -159
- package/dist/src/tiles/list/tile-list-detail.js.map +1 -1
- package/dist/src/tiles/list/tile-list.d.ts +19 -6
- package/dist/src/tiles/list/tile-list.js +240 -108
- package/dist/src/tiles/list/tile-list.js.map +1 -1
- package/dist/src/tiles/tile-dispatcher.d.ts +8 -1
- package/dist/src/tiles/tile-dispatcher.js +46 -11
- package/dist/src/tiles/tile-dispatcher.js.map +1 -1
- package/dist/src/utils/format-date.js +1 -2
- package/dist/src/utils/format-date.js.map +1 -1
- package/dist/test/{utils/format-string.test.d.ts → collection-name-cache.test.d.ts} +0 -0
- package/dist/test/collection-name-cache.test.js +158 -0
- package/dist/test/collection-name-cache.test.js.map +1 -0
- package/dist/test/mocks/mock-search-response.d.ts +5 -0
- package/dist/test/mocks/mock-search-response.js +62 -0
- package/dist/test/mocks/mock-search-response.js.map +1 -0
- package/dist/test/mocks/mock-search-service.d.ts +13 -0
- package/dist/test/mocks/mock-search-service.js +20 -0
- package/dist/test/mocks/mock-search-service.js.map +1 -0
- package/package.json +9 -4
- package/src/assets/img/icons/chevron.ts +4 -0
- package/src/assets/img/icons/eye-closed.ts +5 -0
- package/src/assets/img/icons/eye.ts +5 -0
- package/src/assets/img/icons/mediatype/account.ts +5 -4
- package/src/assets/img/icons/mediatype/audio.ts +7 -4
- package/src/assets/img/icons/mediatype/collection.ts +7 -4
- package/src/assets/img/icons/mediatype/etree.ts +10 -5
- package/src/assets/img/icons/mediatype/film.ts +2 -1
- package/src/assets/img/icons/mediatype/images.ts +9 -6
- package/src/assets/img/icons/mediatype/software.ts +9 -6
- package/src/assets/img/icons/mediatype/texts.ts +9 -6
- package/src/assets/img/icons/mediatype/tv.ts +10 -5
- package/src/assets/img/icons/mediatype/video.ts +10 -6
- package/src/assets/img/icons/mediatype/web.ts +9 -6
- package/src/collection-browser.ts +490 -105
- package/src/collection-facets.ts +325 -109
- package/src/mediatype-icon.ts +10 -3
- package/src/models.ts +139 -14
- package/src/restoration-state-handler.ts +234 -0
- package/src/sort-filter-bar/alpha-bar.ts +19 -9
- package/src/sort-filter-bar/img/compact.ts +5 -0
- package/src/sort-filter-bar/img/list.ts +5 -0
- package/src/sort-filter-bar/img/sort-triangle.ts +5 -0
- package/src/sort-filter-bar/img/tile.ts +5 -0
- package/src/sort-filter-bar/sort-filter-bar.ts +499 -149
- package/src/tiles/grid/collection-tile.ts +1 -2
- package/src/tiles/grid/item-tile.ts +138 -56
- package/src/tiles/list/tile-list-compact-header.ts +75 -0
- package/src/tiles/list/tile-list-compact.ts +209 -0
- package/src/tiles/list/tile-list.ts +261 -110
- package/src/tiles/tile-dispatcher.ts +51 -11
- package/src/utils/format-date.ts +1 -2
- package/dist/src/assets/img/icons/audio.d.ts +0 -1
- package/dist/src/assets/img/icons/audio.js +0 -9
- package/dist/src/assets/img/icons/audio.js.map +0 -1
- package/dist/src/assets/img/icons/collection.d.ts +0 -1
- package/dist/src/assets/img/icons/collection.js +0 -9
- package/dist/src/assets/img/icons/collection.js.map +0 -1
- package/dist/src/assets/img/icons/etree.d.ts +0 -1
- package/dist/src/assets/img/icons/etree.js +0 -9
- package/dist/src/assets/img/icons/etree.js.map +0 -1
- package/dist/src/assets/img/icons/images.d.ts +0 -1
- package/dist/src/assets/img/icons/images.js +0 -10
- package/dist/src/assets/img/icons/images.js.map +0 -1
- package/dist/src/assets/img/icons/mediatype/etree copy.d.ts +0 -1
- package/dist/src/assets/img/icons/mediatype/etree copy.js +0 -9
- package/dist/src/assets/img/icons/mediatype/etree copy.js.map +0 -1
- package/dist/src/assets/img/icons/mediatype/livemusic.d.ts +0 -1
- package/dist/src/assets/img/icons/mediatype/livemusic.js +0 -7
- package/dist/src/assets/img/icons/mediatype/livemusic.js.map +0 -1
- package/dist/src/assets/img/icons/mediatype/photos.d.ts +0 -1
- package/dist/src/assets/img/icons/mediatype/photos.js +0 -7
- package/dist/src/assets/img/icons/mediatype/photos.js.map +0 -1
- package/dist/src/assets/img/icons/software.d.ts +0 -1
- package/dist/src/assets/img/icons/software.js +0 -10
- package/dist/src/assets/img/icons/software.js.map +0 -1
- package/dist/src/assets/img/icons/texts.d.ts +0 -1
- package/dist/src/assets/img/icons/texts.js +0 -10
- package/dist/src/assets/img/icons/texts.js.map +0 -1
- package/dist/src/assets/img/icons/tv.d.ts +0 -1
- package/dist/src/assets/img/icons/tv.js +0 -9
- package/dist/src/assets/img/icons/tv.js.map +0 -1
- package/dist/src/assets/img/icons/video.d.ts +0 -1
- package/dist/src/assets/img/icons/video.js +0 -10
- package/dist/src/assets/img/icons/video.js.map +0 -1
- package/dist/src/assets/img/icons/web.d.ts +0 -1
- package/dist/src/assets/img/icons/web.js +0 -10
- package/dist/src/assets/img/icons/web.js.map +0 -1
- package/dist/src/utils/format-string.d.ts +0 -2
- package/dist/src/utils/format-string.js +0 -7
- package/dist/src/utils/format-string.js.map +0 -1
- package/dist/test/utils/format-string.test.js +0 -17
- package/dist/test/utils/format-string.test.js.map +0 -1
- package/src/assets/img/icons/mediatype/foo.svg +0 -5
|
@@ -2,21 +2,34 @@ import { __decorate } from "tslib";
|
|
|
2
2
|
/* eslint-disable import/no-duplicates */
|
|
3
3
|
import { html, css, LitElement, nothing, } from 'lit';
|
|
4
4
|
import { customElement, property, query, state } from 'lit/decorators.js';
|
|
5
|
+
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
5
6
|
import { SearchParams, } from '@internetarchive/search-service';
|
|
6
|
-
import { AggregateSearchParams, } from '@internetarchive/search-service
|
|
7
|
+
import { AggregateSearchParams, SortParam, } from '@internetarchive/search-service';
|
|
7
8
|
import '@internetarchive/infinite-scroller';
|
|
8
|
-
import '@internetarchive/histogram-date-range';
|
|
9
9
|
import './tiles/tile-dispatcher';
|
|
10
10
|
import './tiles/loading-tile';
|
|
11
11
|
import './sort-filter-bar/sort-filter-bar';
|
|
12
12
|
import './collection-facets';
|
|
13
13
|
import './circular-activity-indicator';
|
|
14
|
+
import './sort-filter-bar/sort-filter-bar';
|
|
15
|
+
import { SortField, SortFieldToMetadataField, defaultSelectedFacets, } from './models';
|
|
16
|
+
import { RestorationStateHandler, } from './restoration-state-handler';
|
|
17
|
+
import chevronIcon from './assets/img/icons/chevron';
|
|
14
18
|
let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
15
19
|
constructor() {
|
|
16
20
|
super(...arguments);
|
|
17
21
|
this.showDeleteButtons = false;
|
|
18
|
-
this.
|
|
22
|
+
this.sortParam = null;
|
|
23
|
+
this.selectedSort = SortField.relevance;
|
|
24
|
+
this.selectedTitleFilter = null;
|
|
25
|
+
this.selectedCreatorFilter = null;
|
|
26
|
+
this.sortDirection = null;
|
|
19
27
|
this.pageSize = 50;
|
|
28
|
+
this.pageContext = 'search';
|
|
29
|
+
this.restorationStateHandler = new RestorationStateHandler({
|
|
30
|
+
context: this.pageContext,
|
|
31
|
+
});
|
|
32
|
+
this.mobileBreakpoint = 530;
|
|
20
33
|
/**
|
|
21
34
|
* The page that the consumer wants to load.
|
|
22
35
|
*/
|
|
@@ -29,9 +42,10 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
29
42
|
*/
|
|
30
43
|
this.pagesToRender = this.initialPageNumber;
|
|
31
44
|
this.searchResultsLoading = false;
|
|
32
|
-
this.selectedFacets = {};
|
|
33
45
|
this.facetsLoading = false;
|
|
34
46
|
this.fullYearAggregationLoading = false;
|
|
47
|
+
this.mobileView = false;
|
|
48
|
+
this.mobileFacetsVisible = false;
|
|
35
49
|
/**
|
|
36
50
|
* When we're animated scrolling to the page, we don't want to fetch
|
|
37
51
|
* all of the pages as it scrolls so this lets us know if we're scrolling
|
|
@@ -74,6 +88,10 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
74
88
|
}
|
|
75
89
|
return model;
|
|
76
90
|
}
|
|
91
|
+
get sortFilterQueries() {
|
|
92
|
+
const queries = [this.titleQuery, this.creatorQuery];
|
|
93
|
+
return queries.filter(q => q).join(' AND ');
|
|
94
|
+
}
|
|
77
95
|
// this is the total number of tiles we expect if
|
|
78
96
|
// the data returned is a full page worth
|
|
79
97
|
// this is useful for putting in placeholders for the expected number of tiles
|
|
@@ -87,9 +105,9 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
87
105
|
return Object.keys(this.dataSource).reduce((acc, page) => acc + this.dataSource[page].length, 0);
|
|
88
106
|
}
|
|
89
107
|
/**
|
|
108
|
+
* Go to the given page of results
|
|
90
109
|
*
|
|
91
110
|
* @param pageNumber
|
|
92
|
-
* @param scroll
|
|
93
111
|
*/
|
|
94
112
|
goToPage(pageNumber) {
|
|
95
113
|
this.initialPageNumber = pageNumber;
|
|
@@ -97,36 +115,72 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
97
115
|
this.scrollToPage(pageNumber);
|
|
98
116
|
}
|
|
99
117
|
render() {
|
|
100
|
-
var _a, _b;
|
|
101
118
|
return html `
|
|
102
|
-
<
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
119
|
+
<div id="content-container" class=${this.mobileView ? 'mobile' : ''}>
|
|
120
|
+
<div id="left-column" class="column">
|
|
121
|
+
<div id="mobile-header-container">
|
|
122
|
+
${this.mobileView
|
|
123
|
+
? html `
|
|
124
|
+
<div id="mobile-filter-collapse">
|
|
125
|
+
<h1
|
|
126
|
+
@click=${() => {
|
|
127
|
+
this.mobileFacetsVisible = !this.mobileFacetsVisible;
|
|
128
|
+
}}
|
|
129
|
+
@keyup=${() => {
|
|
130
|
+
this.mobileFacetsVisible = !this.mobileFacetsVisible;
|
|
131
|
+
}}
|
|
132
|
+
>
|
|
133
|
+
<span
|
|
134
|
+
class="collapser ${this.mobileFacetsVisible
|
|
135
|
+
? 'open'
|
|
136
|
+
: ''}"
|
|
137
|
+
>
|
|
138
|
+
${chevronIcon}
|
|
139
|
+
</span>
|
|
140
|
+
Filters
|
|
141
|
+
</h1>
|
|
142
|
+
</div>
|
|
143
|
+
`
|
|
144
|
+
: nothing}
|
|
145
|
+
<div id="results-total">
|
|
146
|
+
<span id="big-results-count"
|
|
147
|
+
>${this.totalResults
|
|
148
|
+
? this.totalResults.toLocaleString()
|
|
149
|
+
: '-'}</span
|
|
150
|
+
>
|
|
151
|
+
<span id="big-results-label">Results</span>
|
|
152
|
+
</div>
|
|
153
|
+
</div>
|
|
154
|
+
<div
|
|
155
|
+
id="facets-container"
|
|
156
|
+
class=${!this.mobileView || this.mobileFacetsVisible
|
|
157
|
+
? 'expanded'
|
|
158
|
+
: ''}
|
|
159
|
+
>
|
|
160
|
+
${this.facetsTemplate}
|
|
124
161
|
</div>
|
|
125
162
|
</div>
|
|
126
|
-
<div id="right-column">
|
|
163
|
+
<div id="right-column" class="column">
|
|
127
164
|
${this.searchResultsLoading ? this.loadingTemplate : nothing}
|
|
165
|
+
<sort-filter-bar
|
|
166
|
+
.selectedSort=${this.selectedSort}
|
|
167
|
+
.sortDirection=${this.sortDirection}
|
|
168
|
+
.displayMode=${this.displayMode}
|
|
169
|
+
.selectedTitleFilter=${this.selectedTitleFilter}
|
|
170
|
+
.selectedCreatorFilter=${this.selectedCreatorFilter}
|
|
171
|
+
.resizeObserver=${this.resizeObserver}
|
|
172
|
+
@sortChanged=${this.userChangedSort}
|
|
173
|
+
@displayModeChanged=${this.displayModeChanged}
|
|
174
|
+
@titleLetterChanged=${this.titleLetterSelected}
|
|
175
|
+
@creatorLetterChanged=${this.creatorLetterSelected}
|
|
176
|
+
></sort-filter-bar>
|
|
177
|
+
|
|
178
|
+
${this.displayMode === `list-compact`
|
|
179
|
+
? this.listHeaderTemplate
|
|
180
|
+
: nothing}
|
|
181
|
+
|
|
128
182
|
<infinite-scroller
|
|
129
|
-
class="${this.displayMode}"
|
|
183
|
+
class="${ifDefined(this.displayMode)}"
|
|
130
184
|
.cellProvider=${this}
|
|
131
185
|
.placeholderCellTemplate=${this.placeholderCellTemplate}
|
|
132
186
|
@scrollThresholdReached=${this.scrollThresholdReached}
|
|
@@ -137,6 +191,66 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
137
191
|
</div>
|
|
138
192
|
`;
|
|
139
193
|
}
|
|
194
|
+
userChangedSort(e) {
|
|
195
|
+
var _a;
|
|
196
|
+
const { selectedSort, sortDirection } = e.detail;
|
|
197
|
+
this.selectedSort = selectedSort;
|
|
198
|
+
this.sortDirection = sortDirection;
|
|
199
|
+
if (((_a = this.currentPage) !== null && _a !== void 0 ? _a : 1) > 1) {
|
|
200
|
+
this.goToPage(1);
|
|
201
|
+
}
|
|
202
|
+
this.currentPage = 1;
|
|
203
|
+
}
|
|
204
|
+
selectedSortChanged() {
|
|
205
|
+
if (this.selectedSort === 'relevance' || this.sortDirection === null) {
|
|
206
|
+
this.sortParam = null;
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
const sortField = SortFieldToMetadataField[this.selectedSort];
|
|
210
|
+
if (!sortField)
|
|
211
|
+
return;
|
|
212
|
+
this.sortParam = new SortParam(sortField, this.sortDirection);
|
|
213
|
+
}
|
|
214
|
+
displayModeChanged(e) {
|
|
215
|
+
this.displayMode = e.detail.displayMode;
|
|
216
|
+
}
|
|
217
|
+
selectedTitleLetterChanged() {
|
|
218
|
+
this.titleQuery = this.selectedTitleFilter
|
|
219
|
+
? `firstTitle:${this.selectedTitleFilter}`
|
|
220
|
+
: undefined;
|
|
221
|
+
}
|
|
222
|
+
selectedCreatorLetterChanged() {
|
|
223
|
+
this.creatorQuery = this.selectedCreatorFilter
|
|
224
|
+
? `firstCreator:${this.selectedCreatorFilter}`
|
|
225
|
+
: undefined;
|
|
226
|
+
}
|
|
227
|
+
titleLetterSelected(e) {
|
|
228
|
+
this.selectedTitleFilter = e.detail.selectedLetter;
|
|
229
|
+
}
|
|
230
|
+
creatorLetterSelected(e) {
|
|
231
|
+
this.selectedCreatorFilter = e.detail.selectedLetter;
|
|
232
|
+
}
|
|
233
|
+
get facetDataLoading() {
|
|
234
|
+
return this.facetsLoading || this.fullYearAggregationLoading;
|
|
235
|
+
}
|
|
236
|
+
get facetsTemplate() {
|
|
237
|
+
return html `
|
|
238
|
+
${this.facetsLoading ? this.loadingTemplate : nothing}
|
|
239
|
+
<collection-facets
|
|
240
|
+
@facetsChanged=${this.facetsChanged}
|
|
241
|
+
@histogramDateRangeUpdated=${this.histogramDateRangeUpdated}
|
|
242
|
+
.aggregations=${this.aggregations}
|
|
243
|
+
.fullYearsHistogramAggregation=${this.fullYearsHistogramAggregation}
|
|
244
|
+
.minSelectedDate=${this.minSelectedDate}
|
|
245
|
+
.maxSelectedDate=${this.maxSelectedDate}
|
|
246
|
+
.selectedFacets=${this.selectedFacets}
|
|
247
|
+
.collectionNameCache=${this.collectionNameCache}
|
|
248
|
+
?collapsableFacets=${this.mobileView}
|
|
249
|
+
?facetsLoading=${this.facetDataLoading}
|
|
250
|
+
?fullYearAggregationLoading=${this.fullYearAggregationLoading}
|
|
251
|
+
></collection-facets>
|
|
252
|
+
`;
|
|
253
|
+
}
|
|
140
254
|
get loadingTemplate() {
|
|
141
255
|
return html `
|
|
142
256
|
<div class="loading-cover">
|
|
@@ -144,53 +258,102 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
144
258
|
</div>
|
|
145
259
|
`;
|
|
146
260
|
}
|
|
147
|
-
get
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
261
|
+
get listHeaderTemplate() {
|
|
262
|
+
return html `
|
|
263
|
+
<div id="list-header">
|
|
264
|
+
<tile-dispatcher
|
|
265
|
+
.displayMode=${'list-header'}
|
|
266
|
+
.resizeObserver=${this.resizeObserver}
|
|
267
|
+
.sortParam=${this.sortParam}
|
|
268
|
+
>
|
|
269
|
+
</tile-dispatcher>
|
|
270
|
+
</div>
|
|
271
|
+
`;
|
|
153
272
|
}
|
|
154
|
-
get
|
|
155
|
-
|
|
273
|
+
get queryDebuggingTemplate() {
|
|
274
|
+
var _a, _b;
|
|
156
275
|
return html `
|
|
157
|
-
<
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
@histogramDateRangeUpdated=${this.histogramDateRangeUpdated}
|
|
168
|
-
></histogram-date-range>
|
|
276
|
+
<div>
|
|
277
|
+
<ul>
|
|
278
|
+
<li>Base Query: ${this.baseQuery}</li>
|
|
279
|
+
<li>Facet Query: ${this.facetQuery}</li>
|
|
280
|
+
<li>Sort Filter Query: ${this.sortFilterQueries}</li>
|
|
281
|
+
<li>Date Range Query: ${this.dateRangeQueryClause}</li>
|
|
282
|
+
<li>Sort: ${(_a = this.sortParam) === null || _a === void 0 ? void 0 : _a.field} ${(_b = this.sortParam) === null || _b === void 0 ? void 0 : _b.direction}</li>
|
|
283
|
+
<li>Full Query: ${this.fullQuery}</li>
|
|
284
|
+
</ul>
|
|
285
|
+
</div>
|
|
169
286
|
`;
|
|
170
287
|
}
|
|
171
288
|
histogramDateRangeUpdated(e) {
|
|
172
289
|
const { minDate, maxDate } = e.detail;
|
|
173
290
|
this.dateRangeQueryClause = `year:[${minDate} TO ${maxDate}]`;
|
|
174
291
|
}
|
|
292
|
+
firstUpdated() {
|
|
293
|
+
this.restoreState();
|
|
294
|
+
}
|
|
175
295
|
updated(changed) {
|
|
176
296
|
if (changed.has('displayMode') ||
|
|
177
297
|
changed.has('showDeleteButtons') ||
|
|
178
298
|
changed.has('baseNavigationUrl')) {
|
|
179
299
|
this.infiniteScroller.reload();
|
|
180
300
|
}
|
|
301
|
+
if (changed.has('currentPage') || changed.has('displayMode')) {
|
|
302
|
+
this.persistState();
|
|
303
|
+
}
|
|
181
304
|
if (changed.has('baseQuery') ||
|
|
182
|
-
changed.has('
|
|
305
|
+
changed.has('titleQuery') ||
|
|
306
|
+
changed.has('creatorQuery') ||
|
|
183
307
|
changed.has('dateRangeQueryClause') ||
|
|
184
308
|
changed.has('sortParam') ||
|
|
185
309
|
changed.has('selectedFacets') ||
|
|
186
310
|
changed.has('searchService')) {
|
|
187
311
|
this.handleQueryChange();
|
|
188
312
|
}
|
|
313
|
+
if (changed.has('selectedSort') || changed.has('sortDirection')) {
|
|
314
|
+
this.selectedSortChanged();
|
|
315
|
+
}
|
|
316
|
+
if (changed.has('selectedTitleFilter')) {
|
|
317
|
+
this.selectedTitleLetterChanged();
|
|
318
|
+
}
|
|
319
|
+
if (changed.has('selectedCreatorFilter')) {
|
|
320
|
+
this.selectedCreatorLetterChanged();
|
|
321
|
+
}
|
|
189
322
|
if (changed.has('pagesToRender')) {
|
|
190
323
|
if (!this.endOfDataReached) {
|
|
191
324
|
this.infiniteScroller.itemCount = this.estimatedTileCount;
|
|
192
325
|
}
|
|
193
326
|
}
|
|
327
|
+
if (changed.has('resizeObserver')) {
|
|
328
|
+
const oldObserver = changed.get('resizeObserver');
|
|
329
|
+
if (oldObserver)
|
|
330
|
+
this.disconnectResizeObserver(oldObserver);
|
|
331
|
+
this.setupResizeObserver();
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
disconnectedCallback() {
|
|
335
|
+
if (this.resizeObserver) {
|
|
336
|
+
this.disconnectResizeObserver(this.resizeObserver);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
handleResize(entry) {
|
|
340
|
+
if (entry.target === this.contentContainer) {
|
|
341
|
+
this.mobileView = entry.contentRect.width < 600;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
disconnectResizeObserver(resizeObserver) {
|
|
345
|
+
resizeObserver.removeObserver({
|
|
346
|
+
target: this.contentContainer,
|
|
347
|
+
handler: this,
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
setupResizeObserver() {
|
|
351
|
+
if (!this.resizeObserver)
|
|
352
|
+
return;
|
|
353
|
+
this.resizeObserver.addObserver({
|
|
354
|
+
target: this.contentContainer,
|
|
355
|
+
handler: this,
|
|
356
|
+
});
|
|
194
357
|
}
|
|
195
358
|
/**
|
|
196
359
|
* When the visible cells change from the infinite scroller, we want to emit
|
|
@@ -207,6 +370,9 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
207
370
|
return;
|
|
208
371
|
const lastVisibleCellIndex = visibleCellIndices[visibleCellIndices.length - 1];
|
|
209
372
|
const lastVisibleCellPage = Math.floor(lastVisibleCellIndex / this.pageSize) + 1;
|
|
373
|
+
if (this.currentPage !== lastVisibleCellPage) {
|
|
374
|
+
this.currentPage = lastVisibleCellPage;
|
|
375
|
+
}
|
|
210
376
|
const event = new CustomEvent('visiblePageChanged', {
|
|
211
377
|
detail: {
|
|
212
378
|
pageNumber: lastVisibleCellPage,
|
|
@@ -216,7 +382,7 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
216
382
|
}
|
|
217
383
|
async handleQueryChange() {
|
|
218
384
|
// only reset if the query has actually changed
|
|
219
|
-
if (this.pageFetchQueryKey === this.previousQueryKey)
|
|
385
|
+
if (!this.searchService || this.pageFetchQueryKey === this.previousQueryKey)
|
|
220
386
|
return;
|
|
221
387
|
this.previousQueryKey = this.pageFetchQueryKey;
|
|
222
388
|
this.dataSource = {};
|
|
@@ -227,12 +393,54 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
227
393
|
this.scrollToPage(this.initialPageNumber);
|
|
228
394
|
}
|
|
229
395
|
this.initialQueryChangeHappened = true;
|
|
396
|
+
this.persistState();
|
|
230
397
|
await Promise.all([
|
|
231
398
|
this.doInitialPageFetch(),
|
|
232
399
|
this.fetchFacets(),
|
|
233
400
|
this.fetchFullYearHistogram(),
|
|
234
401
|
]);
|
|
235
402
|
}
|
|
403
|
+
restoreState() {
|
|
404
|
+
var _a, _b, _c, _d, _e, _f;
|
|
405
|
+
const restorationState = this.restorationStateHandler.getRestorationState();
|
|
406
|
+
this.displayMode = restorationState.displayMode;
|
|
407
|
+
this.selectedSort = (_a = restorationState.selectedSort) !== null && _a !== void 0 ? _a : SortField.relevance;
|
|
408
|
+
this.sortDirection = (_b = restorationState.sortDirection) !== null && _b !== void 0 ? _b : null;
|
|
409
|
+
this.selectedTitleFilter = (_c = restorationState.selectedTitleFilter) !== null && _c !== void 0 ? _c : null;
|
|
410
|
+
this.selectedCreatorFilter = (_d = restorationState.selectedCreatorFilter) !== null && _d !== void 0 ? _d : null;
|
|
411
|
+
this.selectedFacets = restorationState.selectedFacets;
|
|
412
|
+
this.baseQuery = restorationState.baseQuery;
|
|
413
|
+
this.titleQuery = restorationState.titleQuery;
|
|
414
|
+
this.creatorQuery = restorationState.creatorQuery;
|
|
415
|
+
this.dateRangeQueryClause = restorationState.dateRangeQueryClause;
|
|
416
|
+
this.sortParam = (_e = restorationState.sortParam) !== null && _e !== void 0 ? _e : null;
|
|
417
|
+
this.currentPage = (_f = restorationState.currentPage) !== null && _f !== void 0 ? _f : 1;
|
|
418
|
+
this.minSelectedDate = restorationState.minSelectedDate;
|
|
419
|
+
this.maxSelectedDate = restorationState.maxSelectedDate;
|
|
420
|
+
if (this.currentPage > 1) {
|
|
421
|
+
this.goToPage(this.currentPage);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
persistState() {
|
|
425
|
+
var _a, _b, _c, _d, _e;
|
|
426
|
+
const restorationState = {
|
|
427
|
+
displayMode: this.displayMode,
|
|
428
|
+
sortParam: (_a = this.sortParam) !== null && _a !== void 0 ? _a : undefined,
|
|
429
|
+
selectedSort: this.selectedSort,
|
|
430
|
+
sortDirection: (_b = this.sortDirection) !== null && _b !== void 0 ? _b : undefined,
|
|
431
|
+
selectedFacets: (_c = this.selectedFacets) !== null && _c !== void 0 ? _c : defaultSelectedFacets,
|
|
432
|
+
baseQuery: this.baseQuery,
|
|
433
|
+
currentPage: this.currentPage,
|
|
434
|
+
dateRangeQueryClause: this.dateRangeQueryClause,
|
|
435
|
+
titleQuery: this.titleQuery,
|
|
436
|
+
creatorQuery: this.creatorQuery,
|
|
437
|
+
minSelectedDate: this.minSelectedDate,
|
|
438
|
+
maxSelectedDate: this.maxSelectedDate,
|
|
439
|
+
selectedTitleFilter: (_d = this.selectedTitleFilter) !== null && _d !== void 0 ? _d : undefined,
|
|
440
|
+
selectedCreatorFilter: (_e = this.selectedCreatorFilter) !== null && _e !== void 0 ? _e : undefined,
|
|
441
|
+
};
|
|
442
|
+
this.restorationStateHandler.persistState(restorationState);
|
|
443
|
+
}
|
|
236
444
|
async doInitialPageFetch() {
|
|
237
445
|
this.searchResultsLoading = true;
|
|
238
446
|
await this.fetchPage(this.initialPageNumber);
|
|
@@ -250,24 +458,35 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
250
458
|
if (!this.baseQuery)
|
|
251
459
|
return undefined;
|
|
252
460
|
let fullQuery = this.baseQuery;
|
|
253
|
-
const { facetQuery,
|
|
461
|
+
const { facetQuery, sortFilterQueries } = this;
|
|
254
462
|
if (facetQuery) {
|
|
255
463
|
fullQuery += ` AND ${facetQuery}`;
|
|
256
464
|
}
|
|
257
|
-
if (
|
|
258
|
-
fullQuery += ` AND ${
|
|
465
|
+
if (sortFilterQueries) {
|
|
466
|
+
fullQuery += ` AND ${sortFilterQueries}`;
|
|
259
467
|
}
|
|
260
468
|
return fullQuery;
|
|
261
469
|
}
|
|
470
|
+
/**
|
|
471
|
+
* Generates a query string for the given facets
|
|
472
|
+
*
|
|
473
|
+
* Example: `mediatype:("collection" OR "audio" OR -"etree") AND year:("2000" OR "2001")`
|
|
474
|
+
*/
|
|
262
475
|
get facetQuery() {
|
|
476
|
+
if (!this.selectedFacets)
|
|
477
|
+
return undefined;
|
|
263
478
|
const facetQuery = [];
|
|
264
|
-
for (const [facetName,
|
|
265
|
-
const
|
|
266
|
-
|
|
267
|
-
|
|
479
|
+
for (const [facetName, facetValues] of Object.entries(this.selectedFacets)) {
|
|
480
|
+
const facetEntries = Object.entries(facetValues);
|
|
481
|
+
// eslint-disable-next-line no-continue
|
|
482
|
+
if (facetEntries.length === 0)
|
|
483
|
+
continue;
|
|
484
|
+
const facetValuesArray = [];
|
|
485
|
+
for (const [key, facetState] of facetEntries) {
|
|
486
|
+
facetValuesArray.push(`${facetState === 'hidden' ? '-' : ''}"${key}"`);
|
|
268
487
|
}
|
|
269
|
-
const valueQuery =
|
|
270
|
-
facetQuery.push(
|
|
488
|
+
const valueQuery = facetValuesArray.join(` OR `);
|
|
489
|
+
facetQuery.push(`${facetName}:(${valueQuery})`);
|
|
271
490
|
}
|
|
272
491
|
return facetQuery.length > 0 ? `(${facetQuery.join(' AND ')})` : undefined;
|
|
273
492
|
}
|
|
@@ -403,23 +622,25 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
403
622
|
const params = new SearchParams({
|
|
404
623
|
query: this.fullQuery,
|
|
405
624
|
fields: [
|
|
625
|
+
'addeddate',
|
|
626
|
+
'avg_rating',
|
|
627
|
+
'collections_raw',
|
|
628
|
+
'creator',
|
|
629
|
+
'date',
|
|
630
|
+
'description',
|
|
631
|
+
'downloads',
|
|
406
632
|
'identifier',
|
|
407
|
-
'
|
|
633
|
+
'issue',
|
|
634
|
+
'item_count',
|
|
408
635
|
'mediatype',
|
|
409
|
-
'downloads',
|
|
410
|
-
'avg_rating',
|
|
411
636
|
'num_favorites',
|
|
412
637
|
'num_reviews',
|
|
413
|
-
'item_count',
|
|
414
|
-
'description',
|
|
415
|
-
'date',
|
|
416
|
-
'addeddate',
|
|
417
638
|
'publicdate',
|
|
418
639
|
'reviewdate',
|
|
419
|
-
'creator',
|
|
420
|
-
'subject',
|
|
421
640
|
'source',
|
|
422
|
-
'
|
|
641
|
+
'subject',
|
|
642
|
+
'title',
|
|
643
|
+
'volume',
|
|
423
644
|
],
|
|
424
645
|
page: pageNumber,
|
|
425
646
|
rows: this.pageSize,
|
|
@@ -429,6 +650,7 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
429
650
|
const success = results === null || results === void 0 ? void 0 : results.success;
|
|
430
651
|
if (!success)
|
|
431
652
|
return;
|
|
653
|
+
this.totalResults = success.response.numFound;
|
|
432
654
|
// this is checking to see if the query has changed since the data was fetched
|
|
433
655
|
// if so, we just want to discard the data since there should be a new query
|
|
434
656
|
// right behind it
|
|
@@ -439,6 +661,7 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
439
661
|
return;
|
|
440
662
|
const { docs } = success.response;
|
|
441
663
|
if (docs && docs.length > 0) {
|
|
664
|
+
this.preloadCollectionNames(docs);
|
|
442
665
|
this.updateDataSource(pageNumber, docs);
|
|
443
666
|
}
|
|
444
667
|
if (docs.length < this.pageSize) {
|
|
@@ -449,6 +672,12 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
449
672
|
(_d = this.pageFetchesInProgress[pageFetchQueryKey]) === null || _d === void 0 ? void 0 : _d.delete(pageNumber);
|
|
450
673
|
this.searchResultsLoading = false;
|
|
451
674
|
}
|
|
675
|
+
preloadCollectionNames(docs) {
|
|
676
|
+
var _a;
|
|
677
|
+
const collectionIds = docs.map(doc => { var _a; return (_a = doc.collections_raw) === null || _a === void 0 ? void 0 : _a.values; }).flat();
|
|
678
|
+
const collectionIdsArray = Array.from(new Set(collectionIds));
|
|
679
|
+
(_a = this.collectionNameCache) === null || _a === void 0 ? void 0 : _a.preloadIdentifiers(collectionIdsArray);
|
|
680
|
+
}
|
|
452
681
|
/**
|
|
453
682
|
* This is useful for determining whether we need to reload the scroller.
|
|
454
683
|
*
|
|
@@ -477,27 +706,30 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
477
706
|
const datasource = { ...this.dataSource };
|
|
478
707
|
const tiles = [];
|
|
479
708
|
docs === null || docs === void 0 ? void 0 : docs.forEach(doc => {
|
|
480
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;
|
|
709
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4;
|
|
481
710
|
if (!doc.identifier)
|
|
482
711
|
return;
|
|
483
712
|
tiles.push({
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
713
|
+
averageRating: (_a = doc.avg_rating) === null || _a === void 0 ? void 0 : _a.value,
|
|
714
|
+
collections: (_c = (_b = doc.collections_raw) === null || _b === void 0 ? void 0 : _b.values) !== null && _c !== void 0 ? _c : [],
|
|
715
|
+
commentCount: (_e = (_d = doc.num_reviews) === null || _d === void 0 ? void 0 : _d.value) !== null && _e !== void 0 ? _e : 0,
|
|
716
|
+
creator: (_f = doc.creator) === null || _f === void 0 ? void 0 : _f.value,
|
|
717
|
+
creators: (_h = (_g = doc.creator) === null || _g === void 0 ? void 0 : _g.values) !== null && _h !== void 0 ? _h : [],
|
|
718
|
+
dateAdded: (_j = doc.addeddate) === null || _j === void 0 ? void 0 : _j.value,
|
|
719
|
+
dateArchived: (_k = doc.publicdate) === null || _k === void 0 ? void 0 : _k.value,
|
|
720
|
+
datePublished: (_l = doc.date) === null || _l === void 0 ? void 0 : _l.value,
|
|
721
|
+
dateReviewed: (_m = doc.reviewdate) === null || _m === void 0 ? void 0 : _m.value,
|
|
491
722
|
description: (_o = doc.description) === null || _o === void 0 ? void 0 : _o.value,
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
averageRating: (_u = doc.avg_rating) === null || _u === void 0 ? void 0 : _u.value,
|
|
498
|
-
subject: (_v = doc.subject) === null || _v === void 0 ? void 0 : _v.value,
|
|
723
|
+
favCount: (_q = (_p = doc.num_favorites) === null || _p === void 0 ? void 0 : _p.value) !== null && _q !== void 0 ? _q : 0,
|
|
724
|
+
identifier: doc.identifier,
|
|
725
|
+
issue: (_r = doc.issue) === null || _r === void 0 ? void 0 : _r.value,
|
|
726
|
+
itemCount: (_t = (_s = doc.item_count) === null || _s === void 0 ? void 0 : _s.value) !== null && _t !== void 0 ? _t : 0,
|
|
727
|
+
mediatype: (_v = (_u = doc.mediatype) === null || _u === void 0 ? void 0 : _u.value) !== null && _v !== void 0 ? _v : 'data',
|
|
499
728
|
source: (_w = doc.source) === null || _w === void 0 ? void 0 : _w.value,
|
|
500
|
-
|
|
729
|
+
subjects: (_y = (_x = doc.subject) === null || _x === void 0 ? void 0 : _x.values) !== null && _y !== void 0 ? _y : [],
|
|
730
|
+
title: this.etreeTitle((_z = doc.title) === null || _z === void 0 ? void 0 : _z.value, (_0 = doc.mediatype) === null || _0 === void 0 ? void 0 : _0.value, (_1 = doc.collection) === null || _1 === void 0 ? void 0 : _1.values),
|
|
731
|
+
volume: (_2 = doc.volume) === null || _2 === void 0 ? void 0 : _2.value,
|
|
732
|
+
viewCount: (_4 = (_3 = doc.downloads) === null || _3 === void 0 ? void 0 : _3.value) !== null && _4 !== void 0 ? _4 : 0,
|
|
501
733
|
});
|
|
502
734
|
});
|
|
503
735
|
datasource[pageNumber] = tiles;
|
|
@@ -515,9 +747,8 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
515
747
|
* Todo: Check collection(s) for etree, need to get as array.
|
|
516
748
|
* Current search-service only returns first collection as string.
|
|
517
749
|
*/
|
|
518
|
-
etreeTitle(title, mediatype) {
|
|
519
|
-
if (mediatype === 'etree') {
|
|
520
|
-
// || collections.includes('etree')) {
|
|
750
|
+
etreeTitle(title, mediatype, collections) {
|
|
751
|
+
if (mediatype === 'etree' || (collections === null || collections === void 0 ? void 0 : collections.includes('etree'))) {
|
|
521
752
|
const regex = /^(.*) Live at (.*) on (\d\d\d\d-\d\d-\d\d)$/;
|
|
522
753
|
const newTitle = title === null || title === void 0 ? void 0 : title.replace(regex, '$3: $2');
|
|
523
754
|
if (newTitle) {
|
|
@@ -536,6 +767,7 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
536
767
|
.displayMode=${this.displayMode}
|
|
537
768
|
.resizeObserver=${this.resizeObserver}
|
|
538
769
|
.sortParam=${this.sortParam}
|
|
770
|
+
.collectionNameCache=${this.collectionNameCache}
|
|
539
771
|
?showDeleteButton=${this.showDeleteButtons}
|
|
540
772
|
></tile-dispatcher>`;
|
|
541
773
|
}
|
|
@@ -557,17 +789,99 @@ CollectionBrowser.styles = css `
|
|
|
557
789
|
display: flex;
|
|
558
790
|
}
|
|
559
791
|
|
|
792
|
+
.collapser {
|
|
793
|
+
display: inline-block;
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
.collapser svg {
|
|
797
|
+
width: 10px;
|
|
798
|
+
height: 10px;
|
|
799
|
+
transition: transform 0.2s ease-out;
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
.collapser.open svg {
|
|
803
|
+
transform: rotate(90deg);
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
#mobile-filter-collapse h1 {
|
|
807
|
+
cursor: pointer;
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
#content-container.mobile {
|
|
811
|
+
display: block;
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
.column {
|
|
815
|
+
padding-top: 2rem;
|
|
816
|
+
}
|
|
817
|
+
|
|
560
818
|
#right-column {
|
|
561
819
|
flex: 1;
|
|
562
820
|
position: relative;
|
|
821
|
+
border-left: 1px solid rgb(232, 232, 232);
|
|
822
|
+
padding-left: 1rem;
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
.mobile #right-column {
|
|
826
|
+
border-left: none;
|
|
827
|
+
padding: 0;
|
|
563
828
|
}
|
|
564
829
|
|
|
565
830
|
#left-column {
|
|
566
|
-
width:
|
|
831
|
+
width: 18rem;
|
|
832
|
+
padding-right: 12px;
|
|
833
|
+
padding-right: 1rem;
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
.mobile #left-column {
|
|
837
|
+
width: 100%;
|
|
838
|
+
padding: 0;
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
#mobile-header-container {
|
|
842
|
+
display: flex;
|
|
843
|
+
justify-content: space-between;
|
|
567
844
|
}
|
|
568
845
|
|
|
569
846
|
#facets-container {
|
|
570
847
|
position: relative;
|
|
848
|
+
max-height: 0;
|
|
849
|
+
transition: max-height 0.2s ease-in-out;
|
|
850
|
+
z-index: 1;
|
|
851
|
+
}
|
|
852
|
+
|
|
853
|
+
.mobile #facets-container {
|
|
854
|
+
overflow: hidden;
|
|
855
|
+
}
|
|
856
|
+
|
|
857
|
+
#facets-container.expanded {
|
|
858
|
+
max-height: 2000px;
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
#results-total {
|
|
862
|
+
display: flex;
|
|
863
|
+
align-items: center;
|
|
864
|
+
margin-bottom: 5rem;
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
.mobile #results-total {
|
|
868
|
+
margin-bottom: 0;
|
|
869
|
+
}
|
|
870
|
+
|
|
871
|
+
#big-results-count {
|
|
872
|
+
font-size: 2.4rem;
|
|
873
|
+
font-weight: 500;
|
|
874
|
+
margin-right: 5px;
|
|
875
|
+
}
|
|
876
|
+
|
|
877
|
+
#big-results-label {
|
|
878
|
+
font-size: 1rem;
|
|
879
|
+
font-weight: 200;
|
|
880
|
+
text-transform: uppercase;
|
|
881
|
+
}
|
|
882
|
+
|
|
883
|
+
#list-header {
|
|
884
|
+
max-height: 3rem;
|
|
571
885
|
}
|
|
572
886
|
|
|
573
887
|
.loading-cover {
|
|
@@ -576,7 +890,6 @@ CollectionBrowser.styles = css `
|
|
|
576
890
|
left: 0;
|
|
577
891
|
width: 100%;
|
|
578
892
|
height: 100%;
|
|
579
|
-
background-color: rgba(255, 255, 255, 0.75);
|
|
580
893
|
display: flex;
|
|
581
894
|
justify-content: center;
|
|
582
895
|
z-index: 1;
|
|
@@ -588,6 +901,11 @@ CollectionBrowser.styles = css `
|
|
|
588
901
|
height: 30px;
|
|
589
902
|
}
|
|
590
903
|
|
|
904
|
+
sort-filter-bar {
|
|
905
|
+
display: block;
|
|
906
|
+
margin-bottom: 4rem;
|
|
907
|
+
}
|
|
908
|
+
|
|
591
909
|
infinite-scroller {
|
|
592
910
|
display: block;
|
|
593
911
|
--infiniteScrollerRowGap: var(--collectionBrowserRowGap, 1.7rem);
|
|
@@ -599,14 +917,9 @@ CollectionBrowser.styles = css `
|
|
|
599
917
|
--collectionBrowserCellMinWidth,
|
|
600
918
|
100%
|
|
601
919
|
);
|
|
602
|
-
--infiniteScrollerCellMinHeight:
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
);
|
|
606
|
-
--infiniteScrollerCellMaxHeight: var(
|
|
607
|
-
--collectionBrowserCellMaxHeight,
|
|
608
|
-
2rem
|
|
609
|
-
);
|
|
920
|
+
--infiniteScrollerCellMinHeight: 34px; /* override infinite scroller component */
|
|
921
|
+
--infiniteScrollerCellMaxHeight: 56px;
|
|
922
|
+
--infiniteScrollerRowGap: 0px;
|
|
610
923
|
}
|
|
611
924
|
|
|
612
925
|
infinite-scroller.list-detail {
|
|
@@ -618,6 +931,8 @@ CollectionBrowser.styles = css `
|
|
|
618
931
|
--collectionBrowserCellMinHeight,
|
|
619
932
|
5rem
|
|
620
933
|
);
|
|
934
|
+
/* 30px, but compensating for a -5px margin */
|
|
935
|
+
--infiniteScrollerRowGap: 35px;
|
|
621
936
|
}
|
|
622
937
|
|
|
623
938
|
infinite-scroller.grid {
|
|
@@ -656,7 +971,16 @@ __decorate([
|
|
|
656
971
|
], CollectionBrowser.prototype, "sortParam", void 0);
|
|
657
972
|
__decorate([
|
|
658
973
|
property({ type: String })
|
|
659
|
-
], CollectionBrowser.prototype, "
|
|
974
|
+
], CollectionBrowser.prototype, "selectedSort", void 0);
|
|
975
|
+
__decorate([
|
|
976
|
+
property({ type: String })
|
|
977
|
+
], CollectionBrowser.prototype, "selectedTitleFilter", void 0);
|
|
978
|
+
__decorate([
|
|
979
|
+
property({ type: String })
|
|
980
|
+
], CollectionBrowser.prototype, "selectedCreatorFilter", void 0);
|
|
981
|
+
__decorate([
|
|
982
|
+
property({ type: String })
|
|
983
|
+
], CollectionBrowser.prototype, "sortDirection", void 0);
|
|
660
984
|
__decorate([
|
|
661
985
|
property({ type: String })
|
|
662
986
|
], CollectionBrowser.prototype, "dateRangeQueryClause", void 0);
|
|
@@ -667,17 +991,41 @@ __decorate([
|
|
|
667
991
|
property({ type: Object })
|
|
668
992
|
], CollectionBrowser.prototype, "resizeObserver", void 0);
|
|
669
993
|
__decorate([
|
|
670
|
-
|
|
671
|
-
], CollectionBrowser.prototype, "
|
|
994
|
+
property({ type: String })
|
|
995
|
+
], CollectionBrowser.prototype, "titleQuery", void 0);
|
|
996
|
+
__decorate([
|
|
997
|
+
property({ type: String })
|
|
998
|
+
], CollectionBrowser.prototype, "creatorQuery", void 0);
|
|
999
|
+
__decorate([
|
|
1000
|
+
property({ type: Number })
|
|
1001
|
+
], CollectionBrowser.prototype, "currentPage", void 0);
|
|
1002
|
+
__decorate([
|
|
1003
|
+
property({ type: String })
|
|
1004
|
+
], CollectionBrowser.prototype, "minSelectedDate", void 0);
|
|
1005
|
+
__decorate([
|
|
1006
|
+
property({ type: String })
|
|
1007
|
+
], CollectionBrowser.prototype, "maxSelectedDate", void 0);
|
|
1008
|
+
__decorate([
|
|
1009
|
+
property({ type: Object })
|
|
1010
|
+
], CollectionBrowser.prototype, "selectedFacets", void 0);
|
|
1011
|
+
__decorate([
|
|
1012
|
+
property({ type: Object })
|
|
1013
|
+
], CollectionBrowser.prototype, "collectionNameCache", void 0);
|
|
1014
|
+
__decorate([
|
|
1015
|
+
property({ type: String })
|
|
1016
|
+
], CollectionBrowser.prototype, "pageContext", void 0);
|
|
1017
|
+
__decorate([
|
|
1018
|
+
property({ type: Object })
|
|
1019
|
+
], CollectionBrowser.prototype, "restorationStateHandler", void 0);
|
|
1020
|
+
__decorate([
|
|
1021
|
+
property({ type: Number })
|
|
1022
|
+
], CollectionBrowser.prototype, "mobileBreakpoint", void 0);
|
|
672
1023
|
__decorate([
|
|
673
1024
|
state()
|
|
674
1025
|
], CollectionBrowser.prototype, "pagesToRender", void 0);
|
|
675
1026
|
__decorate([
|
|
676
1027
|
state()
|
|
677
1028
|
], CollectionBrowser.prototype, "searchResultsLoading", void 0);
|
|
678
|
-
__decorate([
|
|
679
|
-
state()
|
|
680
|
-
], CollectionBrowser.prototype, "selectedFacets", void 0);
|
|
681
1029
|
__decorate([
|
|
682
1030
|
state()
|
|
683
1031
|
], CollectionBrowser.prototype, "facetsLoading", void 0);
|
|
@@ -690,6 +1038,18 @@ __decorate([
|
|
|
690
1038
|
__decorate([
|
|
691
1039
|
state()
|
|
692
1040
|
], CollectionBrowser.prototype, "fullYearsHistogramAggregation", void 0);
|
|
1041
|
+
__decorate([
|
|
1042
|
+
state()
|
|
1043
|
+
], CollectionBrowser.prototype, "totalResults", void 0);
|
|
1044
|
+
__decorate([
|
|
1045
|
+
state()
|
|
1046
|
+
], CollectionBrowser.prototype, "mobileView", void 0);
|
|
1047
|
+
__decorate([
|
|
1048
|
+
state()
|
|
1049
|
+
], CollectionBrowser.prototype, "mobileFacetsVisible", void 0);
|
|
1050
|
+
__decorate([
|
|
1051
|
+
query('#content-container')
|
|
1052
|
+
], CollectionBrowser.prototype, "contentContainer", void 0);
|
|
693
1053
|
__decorate([
|
|
694
1054
|
query('infinite-scroller')
|
|
695
1055
|
], CollectionBrowser.prototype, "infiniteScroller", void 0);
|