@internetarchive/collection-browser 0.0.1-alpha.13 → 0.0.1-alpha.16

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 (49) hide show
  1. package/demo/app-root.ts +0 -4
  2. package/dist/demo/app-root.js +0 -4
  3. package/dist/demo/app-root.js.map +1 -1
  4. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -0
  5. package/dist/src/assets/img/icons/arrow-right.js +4 -0
  6. package/dist/src/assets/img/icons/arrow-right.js.map +1 -0
  7. package/dist/src/assets/img/icons/chevron.d.ts +2 -0
  8. package/dist/src/assets/img/icons/chevron.js +4 -0
  9. package/dist/src/assets/img/icons/chevron.js.map +1 -0
  10. package/dist/src/collection-browser.d.ts +13 -3
  11. package/dist/src/collection-browser.js +178 -32
  12. package/dist/src/collection-browser.js.map +1 -1
  13. package/dist/src/collection-facets.d.ts +4 -1
  14. package/dist/src/collection-facets.js +88 -9
  15. package/dist/src/collection-facets.js.map +1 -1
  16. package/dist/src/mediatype-icon.js +2 -2
  17. package/dist/src/mediatype-icon.js.map +1 -1
  18. package/dist/src/models.d.ts +14 -2
  19. package/dist/src/models.js +31 -7
  20. package/dist/src/models.js.map +1 -1
  21. package/dist/src/sort-filter-bar/alpha-bar.js +1 -1
  22. package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -1
  23. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +38 -4
  24. package/dist/src/sort-filter-bar/sort-filter-bar.js +297 -200
  25. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  26. package/dist/src/tiles/list/tile-list-compact-header.d.ts +11 -0
  27. package/dist/src/tiles/list/tile-list-compact-header.js +77 -0
  28. package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -0
  29. package/dist/src/tiles/list/tile-list-compact.d.ts +1 -1
  30. package/dist/src/tiles/list/tile-list-compact.js +12 -12
  31. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  32. package/dist/src/tiles/list/tile-list.d.ts +10 -10
  33. package/dist/src/tiles/list/tile-list.js +41 -36
  34. package/dist/src/tiles/list/tile-list.js.map +1 -1
  35. package/dist/src/tiles/tile-dispatcher.d.ts +3 -0
  36. package/dist/src/tiles/tile-dispatcher.js +31 -12
  37. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  38. package/package.json +1 -1
  39. package/src/assets/img/icons/chevron.ts +4 -0
  40. package/src/collection-browser.ts +187 -38
  41. package/src/collection-facets.ts +87 -11
  42. package/src/mediatype-icon.ts +2 -2
  43. package/src/models.ts +35 -17
  44. package/src/sort-filter-bar/alpha-bar.ts +1 -1
  45. package/src/sort-filter-bar/sort-filter-bar.ts +339 -208
  46. package/src/tiles/list/tile-list-compact-header.ts +73 -0
  47. package/src/tiles/list/tile-list-compact.ts +12 -12
  48. package/src/tiles/list/tile-list.ts +41 -39
  49. package/src/tiles/tile-dispatcher.ts +33 -12
@@ -1,28 +1,24 @@
1
1
  import { __decorate } from "tslib";
2
- import { LitElement, html, css, nothing } from 'lit';
3
- import { customElement, property, state } from 'lit/decorators.js';
2
+ import { LitElement, html, css, nothing, } from 'lit';
3
+ import { customElement, property, query, state } from 'lit/decorators.js';
4
+ import { SortField, SortFieldDisplayName, } from '../models';
4
5
  import './alpha-bar';
5
6
  import { sortIcon } from './img/sort-triangle';
6
7
  import { gridIcon } from './img/grid';
7
8
  import { listIcon } from './img/list';
8
- var SortFieldName;
9
- (function (SortFieldName) {
10
- SortFieldName["datearchived"] = "Date Archived";
11
- SortFieldName["datepublished"] = "Date Published";
12
- SortFieldName["datereviewed"] = "Date Reviewed";
13
- SortFieldName["dateadded"] = "Date Added";
14
- })(SortFieldName || (SortFieldName = {}));
15
9
  let SortFilterBar = class SortFilterBar extends LitElement {
16
10
  constructor() {
17
11
  super(...arguments);
18
12
  this.sortDirection = null;
19
- this.selectedSort = 'relevance';
13
+ this.selectedSort = SortField.relevance;
20
14
  this.selectedTitleFilter = null;
21
15
  this.selectedCreatorFilter = null;
22
16
  this.showRelevance = true;
23
17
  this.titleSelectorVisible = false;
24
18
  this.creatorSelectorVisible = false;
25
19
  this.dateSortSelectorVisible = false;
20
+ this.desktopSelectorBarWidth = 0;
21
+ this.selectorBarContainerWidth = 0;
26
22
  }
27
23
  render() {
28
24
  return html `
@@ -35,143 +31,16 @@ let SortFilterBar = class SortFilterBar extends LitElement {
35
31
  : nothing}
36
32
 
37
33
  <div id="sort-bar">
38
- <div id="sort-selector">
39
- <ul>
40
- <li>
41
- <div id="sort-direction-container">
42
- <button
43
- id="sort-ascending-btn"
44
- class="sort-button ${this.sortDirection === 'asc'
45
- ? 'selected'
46
- : ''}"
47
- @click=${() => {
48
- this.sortDirection = 'asc';
49
- }}
50
- >
51
- ${sortIcon}
52
- </button>
53
- <button
54
- id="sort-descending-btn"
55
- class="sort-button ${this.sortDirection === 'desc'
56
- ? 'selected'
57
- : ''}"
58
- @click=${() => {
59
- this.sortDirection = 'desc';
60
- }}
61
- >
62
- ${sortIcon}
63
- </button>
64
- </div>
65
- </li>
66
- <li id="sort-by-text">Sort By</li>
67
- ${this.showRelevance
68
- ? html `
69
- <li>
70
- <a
71
- href="#"
72
- @click=${(e) => {
73
- e.preventDefault();
74
- this.selectedSort = 'relevance';
75
- }}
76
- class=${this.selectedSort === 'relevance'
77
- ? 'selected'
78
- : ''}
79
- >
80
- Relevance
81
- </a>
82
- </li>
83
- `
84
- : nothing}
85
- <li>
86
- <a
87
- href="#"
88
- @click=${(e) => {
89
- e.preventDefault();
90
- this.selectedSort = 'views';
91
- }}
92
- class=${this.selectedSort === 'views' ? 'selected' : ''}
93
- >
94
- Views
95
- </a>
96
- </li>
97
- <li>
98
- <a
99
- href="#"
100
- @click=${(e) => {
101
- e.preventDefault();
102
- this.titleSelectorVisible = !this.titleSelectorVisible;
103
- this.selectedSort = 'title';
104
- }}
105
- class=${this.selectedSort === 'title' ? 'selected' : ''}
106
- >
107
- Title
108
- </a>
109
- </li>
110
- <li>
111
- <a
112
- href="#"
113
- @click=${(e) => {
114
- e.preventDefault();
115
- this.dateSortSelectorVisible =
116
- !this.dateSortSelectorVisible;
117
- this.selectedSort = 'datearchived';
118
- }}
119
- class=${this.dateOptionSelected ? 'selected' : ''}
120
- >
121
- ${this.dateSortField}
122
- </a>
123
- </li>
124
- <li>
125
- <a
126
- href="#"
127
- @click=${(e) => {
128
- e.preventDefault();
129
- this.creatorSelectorVisible = !this.creatorSelectorVisible;
130
- this.selectedSort = 'creator';
131
- }}
132
- class=${this.selectedSort === 'creator' ? 'selected' : ''}
133
- >
134
- Creator
135
- </a>
136
- </li>
137
- </ul>
34
+ <div id="sort-direction-container">
35
+ ${this.sortDirectionSelectorTemplate}
138
36
  </div>
139
37
 
140
- <div id="display-style">
141
- <ul>
142
- ${this.displayMode !== 'grid'
143
- ? html `<li>
144
- <label id="show-details">
145
- <input
146
- type="checkbox"
147
- @click=${this.detailSelected}
148
- ?checked=${this.displayMode === 'list-detail'}
149
- />
150
- Show Details
151
- </label>
152
- </li>`
153
- : nothing}
154
-
155
- <li>
156
- <button
157
- id="grid-button"
158
- @click=${this.gridSelected}
159
- class=${this.displayMode === 'grid' ? 'active' : ''}
160
- >
161
- ${gridIcon}
162
- </button>
163
- </li>
164
- <li>
165
- <button
166
- id="list-button"
167
- @click=${this.listSelected}
168
- class=${this.displayMode !== 'grid' ? 'active' : ''}
169
- >
170
- ${listIcon}
171
- </button>
172
- </li>
173
- </ul>
38
+ <div id="sort-selector-container">
39
+ ${this.mobileSortSelectorTemplate}
40
+ ${this.desktopSortSelectorTemplate}
174
41
  </div>
42
+
43
+ <div id="display-style-selector">${this.displayOptionTemplate}</div>
175
44
  </div>
176
45
 
177
46
  ${this.dateSortSelectorVisible ? this.dateSortSelector : nothing}
@@ -184,10 +53,6 @@ let SortFilterBar = class SortFilterBar extends LitElement {
184
53
  if (changed.has('displayMode')) {
185
54
  this.displayModeChanged();
186
55
  }
187
- if ((changed.has('sortDirection') || changed.has('selectedSort')) &&
188
- this.sortDirection !== null) {
189
- this.sortChanged();
190
- }
191
56
  if (changed.has('selectedSort') && this.sortDirection === null) {
192
57
  this.sortDirection = 'desc';
193
58
  }
@@ -197,55 +62,231 @@ let SortFilterBar = class SortFilterBar extends LitElement {
197
62
  if (changed.has('selectedCreatorFilter') && this.selectedCreatorFilter) {
198
63
  this.creatorSelectorVisible = true;
199
64
  }
65
+ if (changed.has('resizeObserver')) {
66
+ const oldObserver = changed.get('resizeObserver');
67
+ if (oldObserver)
68
+ this.disconnectResizeObserver(oldObserver);
69
+ this.setupResizeObserver();
70
+ }
200
71
  }
201
- get dateSortSelector() {
72
+ disconnectedCallback() {
73
+ if (this.resizeObserver) {
74
+ this.disconnectResizeObserver(this.resizeObserver);
75
+ }
76
+ }
77
+ disconnectResizeObserver(resizeObserver) {
78
+ resizeObserver.removeObserver({
79
+ target: this.sortSelectorContainer,
80
+ handler: this,
81
+ });
82
+ resizeObserver.removeObserver({
83
+ target: this.desktopSortSelector,
84
+ handler: this,
85
+ });
86
+ }
87
+ setupResizeObserver() {
88
+ if (!this.resizeObserver)
89
+ return;
90
+ this.resizeObserver.addObserver({
91
+ target: this.sortSelectorContainer,
92
+ handler: this,
93
+ });
94
+ this.resizeObserver.addObserver({
95
+ target: this.desktopSortSelector,
96
+ handler: this,
97
+ });
98
+ }
99
+ get mobileSelectorVisible() {
100
+ return this.selectorBarContainerWidth - 10 < this.desktopSelectorBarWidth;
101
+ }
102
+ handleResize(entry) {
103
+ if (entry.target === this.desktopSortSelector)
104
+ this.desktopSelectorBarWidth = entry.contentRect.width;
105
+ else if (entry.target === this.sortSelectorContainer)
106
+ this.selectorBarContainerWidth = entry.contentRect.width;
107
+ }
108
+ get sortDirectionSelectorTemplate() {
202
109
  return html `
203
- <div id="date-sort-selector">
204
- <ul>
205
- <li>
206
- <button
207
- @click=${() => {
208
- this.selectedSort = 'datepublished';
209
- this.dateSortSelectorVisible = false;
210
- }}
211
- >
212
- Date Archived
213
- </button>
214
- </li>
215
- <li>
216
- <button
217
- @click=${() => {
218
- this.selectedSort = 'datepublished';
219
- this.dateSortSelectorVisible = false;
110
+ <div id="sort-direction-selector">
111
+ <button
112
+ id="sort-ascending-btn"
113
+ class="sort-button ${this.sortDirection === 'asc' ? 'selected' : ''}"
114
+ ?disabled=${this.selectedSort === 'relevance'}
115
+ @click=${() => {
116
+ this.setSortDirections('asc');
220
117
  }}
221
- >
222
- Date Published
223
- </button>
224
- </li>
225
- <li>
226
- <button
227
- @click=${() => {
228
- this.selectedSort = 'datereviewed';
229
- this.dateSortSelectorVisible = false;
118
+ >
119
+ ${sortIcon}
120
+ </button>
121
+ <button
122
+ id="sort-descending-btn"
123
+ class="sort-button ${this.sortDirection === 'desc' ? 'selected' : ''}"
124
+ ?disabled=${this.selectedSort === 'relevance'}
125
+ @click=${() => {
126
+ this.setSortDirections('desc');
230
127
  }}
231
- >
232
- Date Reviewed
233
- </button>
234
- </li>
235
- <li>
236
- <button
237
- @click=${() => {
238
- this.selectedSort = 'dateadded';
239
- this.dateSortSelectorVisible = false;
128
+ >
129
+ ${sortIcon}
130
+ </button>
131
+ </div>
132
+ `;
133
+ }
134
+ get desktopSortSelectorTemplate() {
135
+ return html `
136
+ <ul
137
+ id="desktop-sort-selector"
138
+ class=${this.mobileSelectorVisible ? 'hidden' : 'visible'}
139
+ >
140
+ <li id="sort-by-text">Sort By</li>
141
+ <li>
142
+ ${this.showRelevance
143
+ ? this.getSortDisplayOption(SortField.relevance)
144
+ : nothing}
145
+ </li>
146
+ <li>${this.getSortDisplayOption(SortField.views)}</li>
147
+ <li>${this.getSortDisplayOption(SortField.title)}</li>
148
+ <li>
149
+ ${this.getSortDisplayOption(SortField.datearchived, {
150
+ additionalClickEvent: () => {
151
+ this.dateSortSelectorVisible = !this.dateSortSelectorVisible;
152
+ },
153
+ displayName: html `${this.dateSortField}`,
154
+ isSelected: () => this.dateOptionSelected,
155
+ })}
156
+ </li>
157
+ <li>
158
+ ${this.getSortDisplayOption(SortField.creator, {
159
+ additionalClickEvent: () => {
160
+ this.creatorSelectorVisible = !this.creatorSelectorVisible;
161
+ },
162
+ })}
163
+ </li>
164
+ </ul>
165
+ `;
166
+ }
167
+ /**
168
+ * This generates each of the sort option links.
169
+ *
170
+ * It manages the display value and the selected state of the option.
171
+ *
172
+ * @param sortField
173
+ * @param options {
174
+ * additionalClickEvent?: () => void; If this is provided, it will also be called when the option is clicked.
175
+ * displayName?: TemplateResult; The name to display for the option. Defaults to the sortField display name.
176
+ * isSelected?: () => boolean; A function that returns true if the option is selected. Defaults to the selectedSort === sortField.
177
+ * }
178
+ * @returns
179
+ */
180
+ getSortDisplayOption(sortField, options) {
181
+ var _a, _b;
182
+ const isSelected = (_a = options === null || options === void 0 ? void 0 : options.isSelected) !== null && _a !== void 0 ? _a : (() => this.selectedSort === sortField);
183
+ const displayName = (_b = options === null || options === void 0 ? void 0 : options.displayName) !== null && _b !== void 0 ? _b : SortFieldDisplayName[sortField];
184
+ return html `
185
+ <a
186
+ href="#"
187
+ @click=${(e) => {
188
+ var _a;
189
+ e.preventDefault();
190
+ this.setSelectedSort(sortField);
191
+ (_a = options === null || options === void 0 ? void 0 : options.additionalClickEvent) === null || _a === void 0 ? void 0 : _a.call(options, e);
240
192
  }}
241
- >
242
- Date Added
243
- </button>
244
- </li>
193
+ class=${isSelected() ? 'selected' : ''}
194
+ >
195
+ ${displayName}
196
+ </a>
197
+ `;
198
+ }
199
+ get mobileSortSelectorTemplate() {
200
+ return html `
201
+ <select
202
+ id="mobile-sort-selector"
203
+ @change=${this.mobileSortChanged}
204
+ class=${this.mobileSelectorVisible ? 'visible' : 'hidden'}
205
+ >
206
+ ${Object.keys(SortField).map(field => html `
207
+ <option value="${field}" ?selected=${this.selectedSort === field}>
208
+ ${SortFieldDisplayName[field]}
209
+ </option>
210
+ `)}
211
+ </select>
212
+ `;
213
+ }
214
+ mobileSortChanged(e) {
215
+ const target = e.target;
216
+ this.setSelectedSort(target.value);
217
+ }
218
+ get displayOptionTemplate() {
219
+ return html `
220
+ <ul>
221
+ ${this.displayMode !== 'grid'
222
+ ? html `<li>
223
+ <label id="show-details">
224
+ <input
225
+ type="checkbox"
226
+ @click=${this.detailSelected}
227
+ ?checked=${this.displayMode === 'list-detail'}
228
+ />
229
+ Show Details
230
+ </label>
231
+ </li>`
232
+ : nothing}
233
+
234
+ <li>
235
+ <button
236
+ id="grid-button"
237
+ @click=${this.gridSelected}
238
+ class=${this.displayMode === 'grid' ? 'active' : ''}
239
+ >
240
+ ${gridIcon}
241
+ </button>
242
+ </li>
243
+ <li>
244
+ <button
245
+ id="list-button"
246
+ @click=${this.listSelected}
247
+ class=${this.displayMode !== 'grid' ? 'active' : ''}
248
+ >
249
+ ${listIcon}
250
+ </button>
251
+ </li>
252
+ </ul>
253
+ `;
254
+ }
255
+ get dateSortSelector() {
256
+ return html `
257
+ <div id="date-sort-selector">
258
+ <ul>
259
+ <li>${this.getDateSortButton(SortField.datearchived)}</li>
260
+ <li>${this.getDateSortButton(SortField.datepublished)}</li>
261
+ <li>${this.getDateSortButton(SortField.datereviewed)}</li>
262
+ <li>${this.getDateSortButton(SortField.dateadded)}</li>
245
263
  </ul>
246
264
  </div>
247
265
  `;
248
266
  }
267
+ getDateSortButton(sortField) {
268
+ return html `
269
+ <button
270
+ @click=${() => {
271
+ this.selectDateSort(sortField);
272
+ }}
273
+ >
274
+ ${SortFieldDisplayName[sortField]}
275
+ </button>
276
+ `;
277
+ }
278
+ selectDateSort(sortField) {
279
+ this.dateSortSelectorVisible = false;
280
+ this.setSelectedSort(sortField);
281
+ }
282
+ setSortDirections(sortDirection) {
283
+ this.sortDirection = sortDirection;
284
+ this.emitSortChangedEvent();
285
+ }
286
+ setSelectedSort(sort) {
287
+ this.selectedSort = sort;
288
+ this.emitSortChangedEvent();
289
+ }
249
290
  /**
250
291
  * There are four date sort options.
251
292
  *
@@ -274,7 +315,7 @@ let SortFilterBar = class SortFilterBar extends LitElement {
274
315
  */
275
316
  get dateSortField() {
276
317
  var _a;
277
- return ((_a = SortFieldName[this.selectedSort]) !== null && _a !== void 0 ? _a : 'Date Archived');
318
+ return (_a = SortFieldDisplayName[this.selectedSort]) !== null && _a !== void 0 ? _a : 'Date Archived';
278
319
  }
279
320
  get titleSelectorBar() {
280
321
  return html ` <alpha-bar
@@ -302,14 +343,17 @@ let SortFilterBar = class SortFilterBar extends LitElement {
302
343
  }
303
344
  gridSelected() {
304
345
  this.displayMode = 'grid';
346
+ this.emitSortChangedEvent();
305
347
  }
306
348
  listSelected() {
307
349
  this.displayMode = 'list-compact';
350
+ this.emitSortChangedEvent();
308
351
  }
309
352
  detailSelected(e) {
310
353
  this.displayMode = e.target.checked
311
354
  ? 'list-detail'
312
355
  : 'list-compact';
356
+ this.emitSortChangedEvent();
313
357
  }
314
358
  displayModeChanged() {
315
359
  const event = new CustomEvent('displayModeChanged', {
@@ -317,7 +361,7 @@ let SortFilterBar = class SortFilterBar extends LitElement {
317
361
  });
318
362
  this.dispatchEvent(event);
319
363
  }
320
- sortChanged() {
364
+ emitSortChangedEvent() {
321
365
  const event = new CustomEvent('sortChanged', {
322
366
  detail: {
323
367
  selectedSort: this.selectedSort,
@@ -340,6 +384,10 @@ SortFilterBar.styles = css `
340
384
  padding: 0.5rem 1.5rem;
341
385
  }
342
386
 
387
+ #sort-direction-container {
388
+ flex: 0;
389
+ }
390
+
343
391
  #sort-by-text {
344
392
  text-transform: uppercase;
345
393
  }
@@ -379,6 +427,11 @@ SortFilterBar.styles = css `
379
427
  opacity: 1;
380
428
  }
381
429
 
430
+ .sort-button:disabled {
431
+ opacity: 0.25;
432
+ cursor: default;
433
+ }
434
+
382
435
  #show-details {
383
436
  text-transform: uppercase;
384
437
  cursor: pointer;
@@ -388,43 +441,72 @@ SortFilterBar.styles = css `
388
441
  transform: rotate(180deg);
389
442
  }
390
443
 
391
- #sort-direction-container {
444
+ #sort-direction-selector {
392
445
  display: flex;
393
446
  flex-direction: column;
394
447
  gap: 3px;
448
+ margin-right: 1rem;
449
+ }
450
+
451
+ #sort-selector-container {
452
+ flex: 1;
453
+ }
454
+
455
+ /*
456
+ we move the desktop sort selector offscreen instead of display: none
457
+ because we need to observe the width of it vs its container to determine
458
+ if it's wide enough to display the desktop version and if you displY: none,
459
+ the width becomes 0
460
+ */
461
+ #desktop-sort-selector.hidden {
462
+ position: absolute;
463
+ top: -9999px;
464
+ left: -9999px;
465
+ }
466
+
467
+ #mobile-sort-selector.hidden {
468
+ display: none;
395
469
  }
396
470
 
397
- #sort-selector li {
471
+ #desktop-sort-selector {
472
+ display: inline-flex;
473
+ }
474
+
475
+ #desktop-sort-selector li {
398
476
  display: flex;
399
477
  align-items: center;
400
478
  }
401
479
 
402
- #sort-selector li a {
480
+ #desktop-sort-selector li a {
403
481
  text-decoration: none;
404
482
  text-transform: uppercase;
405
483
  font-size: 1.4rem;
406
484
  color: #333;
407
485
  }
408
486
 
409
- #sort-selector li a.selected {
487
+ #desktop-sort-selector li a.selected {
410
488
  font-weight: bold;
411
489
  }
412
490
 
413
- #sort-selector li::after {
491
+ #desktop-sort-selector li::after {
414
492
  content: '•';
415
493
  padding-left: 1rem;
416
494
  padding-right: 1rem;
417
495
  }
418
496
 
419
- #sort-selector li:first-child::after {
497
+ #desktop-sort-selector li:first-child::after {
420
498
  content: '';
421
499
  }
422
500
 
423
- #sort-selector li:last-child::after {
501
+ #desktop-sort-selector li:last-child::after {
424
502
  content: '';
425
503
  }
426
504
 
427
- #display-style button {
505
+ #display-style-selector {
506
+ flex: 0;
507
+ }
508
+
509
+ #display-style-selector button {
428
510
  background: none;
429
511
  color: inherit;
430
512
  border: none;
@@ -434,11 +516,11 @@ SortFilterBar.styles = css `
434
516
  opacity: 0.5;
435
517
  }
436
518
 
437
- #display-style button.active {
519
+ #display-style-selector button.active {
438
520
  opacity: 1;
439
521
  }
440
522
 
441
- #display-style button svg {
523
+ #display-style-selector button svg {
442
524
  width: 24px;
443
525
  height: 24px;
444
526
  }
@@ -461,6 +543,9 @@ __decorate([
461
543
  __decorate([
462
544
  property({ type: Boolean })
463
545
  ], SortFilterBar.prototype, "showRelevance", void 0);
546
+ __decorate([
547
+ property({ type: Object })
548
+ ], SortFilterBar.prototype, "resizeObserver", void 0);
464
549
  __decorate([
465
550
  state()
466
551
  ], SortFilterBar.prototype, "titleSelectorVisible", void 0);
@@ -470,6 +555,18 @@ __decorate([
470
555
  __decorate([
471
556
  state()
472
557
  ], SortFilterBar.prototype, "dateSortSelectorVisible", void 0);
558
+ __decorate([
559
+ state()
560
+ ], SortFilterBar.prototype, "desktopSelectorBarWidth", void 0);
561
+ __decorate([
562
+ state()
563
+ ], SortFilterBar.prototype, "selectorBarContainerWidth", void 0);
564
+ __decorate([
565
+ query('#desktop-sort-selector')
566
+ ], SortFilterBar.prototype, "desktopSortSelector", void 0);
567
+ __decorate([
568
+ query('#sort-selector-container')
569
+ ], SortFilterBar.prototype, "sortSelectorContainer", void 0);
473
570
  SortFilterBar = __decorate([
474
571
  customElement('sort-filter-bar')
475
572
  ], SortFilterBar);