@internetarchive/collection-browser 2.13.1 → 2.13.2-alpha-webdev7687.1
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/app-root.d.ts +1 -0
- package/dist/src/app-root.js +48 -2
- package/dist/src/app-root.js.map +1 -1
- package/dist/src/collection-browser.d.ts +2 -1
- package/dist/src/collection-browser.js +20 -5
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/collection-facets/facet-row.js +7 -1
- package/dist/src/collection-facets/facet-row.js.map +1 -1
- package/dist/src/collection-facets/more-facets-content.d.ts +1 -0
- package/dist/src/collection-facets/more-facets-content.js +19 -4
- package/dist/src/collection-facets/more-facets-content.js.map +1 -1
- package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +4 -3
- package/dist/src/collection-facets/smart-facets/smart-facet-bar.js.map +1 -1
- package/dist/src/collection-facets.d.ts +3 -1
- package/dist/src/collection-facets.js +37 -7
- package/dist/src/collection-facets.js.map +1 -1
- package/dist/src/data-source/collection-browser-data-source.js +28 -11
- package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
- package/dist/src/data-source/collection-browser-query-state.d.ts +2 -1
- package/dist/src/data-source/collection-browser-query-state.js.map +1 -1
- package/dist/src/expanded-date-picker.d.ts +1 -0
- package/dist/src/expanded-date-picker.js +7 -1
- package/dist/src/expanded-date-picker.js.map +1 -1
- package/dist/src/models.d.ts +27 -5
- package/dist/src/models.js +65 -3
- package/dist/src/models.js.map +1 -1
- package/dist/src/restoration-state-handler.d.ts +2 -1
- package/dist/src/restoration-state-handler.js +38 -3
- package/dist/src/restoration-state-handler.js.map +1 -1
- package/dist/src/utils/facet-utils.js +8 -2
- package/dist/src/utils/facet-utils.js.map +1 -1
- package/dist/test/collection-facets.test.js +27 -0
- package/dist/test/collection-facets.test.js.map +1 -1
- package/dist/test/restoration-state-handler.test.js +17 -10
- package/dist/test/restoration-state-handler.test.js.map +1 -1
- package/dist/test/tiles/{mediatype-icon.test.js → tile-mediatype-icon.test.js} +1 -1
- package/dist/test/tiles/tile-mediatype-icon.test.js.map +1 -0
- package/package.json +1 -1
- package/src/app-root.ts +49 -2
- package/src/collection-browser.ts +21 -3
- package/src/collection-facets/facet-row.ts +8 -1
- package/src/collection-facets/more-facets-content.ts +21 -5
- package/src/collection-facets/smart-facets/smart-facet-bar.ts +2 -2
- package/src/collection-facets.ts +37 -8
- package/src/data-source/collection-browser-data-source.ts +36 -13
- package/src/data-source/collection-browser-query-state.ts +7 -1
- package/src/expanded-date-picker.ts +5 -1
- package/src/models.ts +88 -10
- package/src/restoration-state-handler.ts +39 -1
- package/src/utils/facet-utils.ts +5 -3
- package/test/collection-facets.test.ts +33 -0
- package/test/restoration-state-handler.test.ts +10 -10
- package/dist/test/tiles/mediatype-icon.test.js.map +0 -1
- /package/dist/test/tiles/{mediatype-icon.test.d.ts → tile-mediatype-icon.test.d.ts} +0 -0
- /package/test/tiles/{mediatype-icon.test.ts → tile-mediatype-icon.test.ts} +0 -0
package/src/models.ts
CHANGED
|
@@ -564,18 +564,24 @@ export type FacetOption =
|
|
|
564
564
|
| 'language'
|
|
565
565
|
| 'creator'
|
|
566
566
|
| 'collection'
|
|
567
|
-
| 'year'
|
|
567
|
+
| 'year'
|
|
568
|
+
// TV-specific facet options:
|
|
569
|
+
| 'program'
|
|
570
|
+
| 'person'
|
|
571
|
+
| 'sponsor';
|
|
568
572
|
|
|
569
573
|
export type SelectedFacetState = 'selected' | 'hidden';
|
|
570
574
|
|
|
571
575
|
export type FacetState = SelectedFacetState | 'none';
|
|
572
576
|
|
|
573
577
|
export interface FacetBucket {
|
|
574
|
-
// for some facets, we augment the key with a display value
|
|
575
|
-
displayText?: string;
|
|
576
578
|
key: string;
|
|
577
579
|
count: number;
|
|
578
580
|
state: FacetState;
|
|
581
|
+
// for some facets, we augment the key with a display value
|
|
582
|
+
displayText?: string;
|
|
583
|
+
// for TV channel facets, we add a parenthesized secondary name
|
|
584
|
+
extraNote?: string;
|
|
579
585
|
}
|
|
580
586
|
|
|
581
587
|
export interface FacetGroup {
|
|
@@ -605,12 +611,11 @@ export type FacetEventDetails = {
|
|
|
605
611
|
|
|
606
612
|
export type FacetValue = string;
|
|
607
613
|
|
|
608
|
-
export type SelectedFacets =
|
|
609
|
-
FacetOption,
|
|
610
|
-
Record<FacetValue, FacetBucket>
|
|
614
|
+
export type SelectedFacets = Partial<
|
|
615
|
+
Record<FacetOption, Record<FacetValue, FacetBucket>>
|
|
611
616
|
>;
|
|
612
617
|
|
|
613
|
-
export const getDefaultSelectedFacets = (): SelectedFacets => ({
|
|
618
|
+
export const getDefaultSelectedFacets = (): Required<SelectedFacets> => ({
|
|
614
619
|
subject: {},
|
|
615
620
|
lending: {},
|
|
616
621
|
mediatype: {},
|
|
@@ -618,9 +623,20 @@ export const getDefaultSelectedFacets = (): SelectedFacets => ({
|
|
|
618
623
|
creator: {},
|
|
619
624
|
collection: {},
|
|
620
625
|
year: {},
|
|
626
|
+
program: {},
|
|
627
|
+
person: {},
|
|
628
|
+
sponsor: {},
|
|
621
629
|
});
|
|
622
630
|
|
|
623
|
-
|
|
631
|
+
/**
|
|
632
|
+
* For TV search results, what types of TV clips to restrict the results to.
|
|
633
|
+
*/
|
|
634
|
+
export type TvClipFilterType = 'all' | 'commercials' | 'factchecks' | 'quotes';
|
|
635
|
+
|
|
636
|
+
/**
|
|
637
|
+
* Facet display order when presenting results for all search types *except* TV (see below).
|
|
638
|
+
*/
|
|
639
|
+
export const defaultFacetDisplayOrder: FacetOption[] = [
|
|
624
640
|
'mediatype',
|
|
625
641
|
// 'lending', Commenting this out removes the lending facet from the sidebar for now
|
|
626
642
|
'year',
|
|
@@ -630,6 +646,23 @@ export const facetDisplayOrder: FacetOption[] = [
|
|
|
630
646
|
'language',
|
|
631
647
|
];
|
|
632
648
|
|
|
649
|
+
/**
|
|
650
|
+
* Specialized facet ordering when displaying TV search results
|
|
651
|
+
*/
|
|
652
|
+
export const tvFacetDisplayOrder: FacetOption[] = [
|
|
653
|
+
'program',
|
|
654
|
+
'creator',
|
|
655
|
+
'year',
|
|
656
|
+
'subject',
|
|
657
|
+
'collection',
|
|
658
|
+
'person',
|
|
659
|
+
'sponsor',
|
|
660
|
+
'language',
|
|
661
|
+
];
|
|
662
|
+
|
|
663
|
+
/**
|
|
664
|
+
* Human-readable titles for each facet group.
|
|
665
|
+
*/
|
|
633
666
|
export const facetTitles: Record<FacetOption, string> = {
|
|
634
667
|
subject: 'Subject',
|
|
635
668
|
lending: 'Availability',
|
|
@@ -638,6 +671,9 @@ export const facetTitles: Record<FacetOption, string> = {
|
|
|
638
671
|
creator: 'Creator',
|
|
639
672
|
collection: 'Collection',
|
|
640
673
|
year: 'Year',
|
|
674
|
+
program: 'Program',
|
|
675
|
+
person: 'Person',
|
|
676
|
+
sponsor: 'Sponsor',
|
|
641
677
|
};
|
|
642
678
|
|
|
643
679
|
/**
|
|
@@ -650,7 +686,10 @@ export const defaultFacetSort: Record<FacetOption, AggregationSortType> = {
|
|
|
650
686
|
language: AggregationSortType.COUNT,
|
|
651
687
|
creator: AggregationSortType.COUNT,
|
|
652
688
|
collection: AggregationSortType.COUNT,
|
|
653
|
-
year: AggregationSortType.NUMERIC,
|
|
689
|
+
year: AggregationSortType.NUMERIC, // Year facets are ordered by their numeric value by default
|
|
690
|
+
program: AggregationSortType.COUNT,
|
|
691
|
+
person: AggregationSortType.COUNT,
|
|
692
|
+
sponsor: AggregationSortType.COUNT,
|
|
654
693
|
};
|
|
655
694
|
|
|
656
695
|
/**
|
|
@@ -664,9 +703,48 @@ export const valueFacetSort: Record<FacetOption, AggregationSortType> = {
|
|
|
664
703
|
language: AggregationSortType.ALPHABETICAL,
|
|
665
704
|
creator: AggregationSortType.ALPHABETICAL,
|
|
666
705
|
collection: AggregationSortType.ALPHABETICAL,
|
|
667
|
-
year: AggregationSortType.NUMERIC,
|
|
706
|
+
year: AggregationSortType.NUMERIC, // Year facets' values should be compared numerically, not lexicographically (year 2001 > year 3)
|
|
707
|
+
program: AggregationSortType.ALPHABETICAL,
|
|
708
|
+
person: AggregationSortType.ALPHABETICAL,
|
|
709
|
+
sponsor: AggregationSortType.ALPHABETICAL,
|
|
668
710
|
};
|
|
669
711
|
|
|
712
|
+
/**
|
|
713
|
+
* Extra parenthesized labels to show next to certain TV channel facets
|
|
714
|
+
*
|
|
715
|
+
* TODO: This is only needed until we can receive the appropriate mapping via PPS,
|
|
716
|
+
* and can be removed/replaced once that is set up.
|
|
717
|
+
*/
|
|
718
|
+
export const tvChannelFacetLabels: Record<string, string> = Object.fromEntries(
|
|
719
|
+
// prettier-ignore
|
|
720
|
+
Object.entries({
|
|
721
|
+
'Al Jazeera' : ['ALJAZAM', 'ALJAZ'],
|
|
722
|
+
'Bloomberg' : ['BLOOMBERG'],
|
|
723
|
+
'BBC' : ['BBC', 'BBC1', 'BBC2'],
|
|
724
|
+
'BBC America' : ['BBCAMERICA'],
|
|
725
|
+
'BBC News' : ['BBCNEWS'],
|
|
726
|
+
'GB News' : ['GBN'],
|
|
727
|
+
'BET' : ['BETW'],
|
|
728
|
+
'CNBC' : ['CNBC'],
|
|
729
|
+
'CNN' : ['CNNW', 'CNN'],
|
|
730
|
+
'Comedy Central' : ['COM', 'COMW'],
|
|
731
|
+
'CSPAN' : ['CSPAN', 'CSPAN2', 'CSPAN3'],
|
|
732
|
+
'Current' : ['CURRENT'],
|
|
733
|
+
'Deutsche Welle' : ['DW'],
|
|
734
|
+
'France 24' : ['FRANCE24'],
|
|
735
|
+
'FOX Business' : ['FBC'],
|
|
736
|
+
'FOX News' : ['FOXNEWSW', 'FOXNEWS'],
|
|
737
|
+
'LINKTV' : ['LINKTV'],
|
|
738
|
+
'MSNBC' : ['MSNBCW', 'MSNBC'],
|
|
739
|
+
'NHK World' : ['NHK'],
|
|
740
|
+
'RT' : ['RT'],
|
|
741
|
+
'Sky News' : ['SKY'],
|
|
742
|
+
}).reduce(
|
|
743
|
+
(acc, [label, channels]) => acc.concat(channels.map(ch => [ch, label])),
|
|
744
|
+
[] as [string, string][],
|
|
745
|
+
),
|
|
746
|
+
);
|
|
747
|
+
|
|
670
748
|
export type LendingFacetKey =
|
|
671
749
|
| 'is_lendable'
|
|
672
750
|
| 'is_borrowable'
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
CollectionBrowserContext,
|
|
6
6
|
CollectionDisplayMode,
|
|
7
7
|
SelectedFacets,
|
|
8
|
+
TvClipFilterType,
|
|
8
9
|
SortField,
|
|
9
10
|
FacetBucket,
|
|
10
11
|
FacetState,
|
|
@@ -28,6 +29,7 @@ export interface RestorationState {
|
|
|
28
29
|
maxSelectedDate?: string;
|
|
29
30
|
selectedTitleFilter?: string;
|
|
30
31
|
selectedCreatorFilter?: string;
|
|
32
|
+
tvClipFilter?: TvClipFilterType;
|
|
31
33
|
}
|
|
32
34
|
|
|
33
35
|
export interface RestorationStatePersistOptions {
|
|
@@ -185,10 +187,16 @@ export class RestorationStateHandler
|
|
|
185
187
|
}
|
|
186
188
|
}
|
|
187
189
|
|
|
190
|
+
const dateField =
|
|
191
|
+
state.minSelectedDate?.includes('-') ||
|
|
192
|
+
state.maxSelectedDate?.includes('-')
|
|
193
|
+
? 'date'
|
|
194
|
+
: 'year';
|
|
195
|
+
|
|
188
196
|
if (state.minSelectedDate && state.maxSelectedDate) {
|
|
189
197
|
newParams.append(
|
|
190
198
|
'and[]',
|
|
191
|
-
|
|
199
|
+
`${dateField}:[${state.minSelectedDate} TO ${state.maxSelectedDate}]`,
|
|
192
200
|
);
|
|
193
201
|
}
|
|
194
202
|
|
|
@@ -200,6 +208,21 @@ export class RestorationStateHandler
|
|
|
200
208
|
newParams.append('and[]', state.creatorQuery);
|
|
201
209
|
}
|
|
202
210
|
|
|
211
|
+
// TV clip special filters
|
|
212
|
+
switch (state.tvClipFilter) {
|
|
213
|
+
case 'commercials':
|
|
214
|
+
newParams.append('only_commercials', '1');
|
|
215
|
+
break;
|
|
216
|
+
case 'factchecks':
|
|
217
|
+
newParams.append('only_factchecks', '1');
|
|
218
|
+
break;
|
|
219
|
+
case 'quotes':
|
|
220
|
+
newParams.append('only_quotes', '1');
|
|
221
|
+
break;
|
|
222
|
+
default:
|
|
223
|
+
// Don't add anything to the URL
|
|
224
|
+
}
|
|
225
|
+
|
|
203
226
|
// Ensure we aren't pushing consecutive identical states to the history stack.
|
|
204
227
|
// - If the state has changed, we push a new history entry.
|
|
205
228
|
// - If only the page number has changed, we replace the current history entry.
|
|
@@ -337,6 +360,7 @@ export class RestorationStateHandler
|
|
|
337
360
|
}
|
|
338
361
|
|
|
339
362
|
switch (field) {
|
|
363
|
+
case 'date':
|
|
340
364
|
case 'year': {
|
|
341
365
|
const [minDate, maxDate] = value.split(' TO ');
|
|
342
366
|
// we have two potential ways of filtering by date:
|
|
@@ -391,6 +415,20 @@ export class RestorationStateHandler
|
|
|
391
415
|
});
|
|
392
416
|
}
|
|
393
417
|
|
|
418
|
+
// TV clip special filters (carryovers from legacy page)
|
|
419
|
+
const commercialsParam = url.searchParams.get('only_commercials');
|
|
420
|
+
const factchecksParam = url.searchParams.get('only_factchecks');
|
|
421
|
+
const quotesParam = url.searchParams.get('only_quotes');
|
|
422
|
+
if (commercialsParam) {
|
|
423
|
+
restorationState.tvClipFilter = 'commercials';
|
|
424
|
+
} else if (factchecksParam) {
|
|
425
|
+
restorationState.tvClipFilter = 'factchecks';
|
|
426
|
+
} else if (quotesParam) {
|
|
427
|
+
restorationState.tvClipFilter = 'quotes';
|
|
428
|
+
} else {
|
|
429
|
+
restorationState.tvClipFilter = 'all';
|
|
430
|
+
}
|
|
431
|
+
|
|
394
432
|
return restorationState;
|
|
395
433
|
}
|
|
396
434
|
|
package/src/utils/facet-utils.ts
CHANGED
|
@@ -62,7 +62,7 @@ export function updateSelectedFacetBucket(
|
|
|
62
62
|
omitNoneState = false,
|
|
63
63
|
): SelectedFacets {
|
|
64
64
|
const defaultedSelectedFacets = selectedFacets ?? getDefaultSelectedFacets();
|
|
65
|
-
const newFacets = {
|
|
65
|
+
const newFacets: SelectedFacets = {
|
|
66
66
|
...defaultedSelectedFacets,
|
|
67
67
|
[facetType]: {
|
|
68
68
|
...defaultedSelectedFacets[facetType],
|
|
@@ -71,7 +71,7 @@ export function updateSelectedFacetBucket(
|
|
|
71
71
|
};
|
|
72
72
|
|
|
73
73
|
if (omitNoneState && bucket.state === 'none') {
|
|
74
|
-
delete newFacets[facetType][bucket.key];
|
|
74
|
+
delete newFacets[facetType]?.[bucket.key];
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
return newFacets;
|
|
@@ -93,6 +93,7 @@ export function cloneSelectedFacets(
|
|
|
93
93
|
): SelectedFacets {
|
|
94
94
|
const cloneResult = getDefaultSelectedFacets();
|
|
95
95
|
forEachFacetBucket(selectedFacets, (facetType, bucketKey, bucket) => {
|
|
96
|
+
if (!cloneResult[facetType]) cloneResult[facetType] = {};
|
|
96
97
|
cloneResult[facetType][bucketKey] = bucket;
|
|
97
98
|
});
|
|
98
99
|
return cloneResult;
|
|
@@ -124,13 +125,14 @@ export function mergeSelectedFacets(
|
|
|
124
125
|
): SelectedFacets {
|
|
125
126
|
const mergeResult = cloneSelectedFacets(destination);
|
|
126
127
|
forEachFacetBucket(source, (facetType, bucketKey, bucket) => {
|
|
128
|
+
if (!mergeResult[facetType]) mergeResult[facetType] = {};
|
|
127
129
|
mergeResult[facetType][bucketKey] = bucket;
|
|
128
130
|
});
|
|
129
131
|
|
|
130
132
|
// Normalize any 'none' states on the result (from either source or destination)
|
|
131
133
|
forEachFacetBucket(mergeResult, (facetType, bucketKey, bucket) => {
|
|
132
134
|
if (bucket.state === 'none') {
|
|
133
|
-
delete mergeResult[facetType][bucketKey];
|
|
135
|
+
delete mergeResult[facetType]?.[bucketKey];
|
|
134
136
|
}
|
|
135
137
|
});
|
|
136
138
|
|
|
@@ -629,6 +629,39 @@ describe('Collection Facets', () => {
|
|
|
629
629
|
expect(facetRows?.[7]?.bucket?.key).to.equal('collection');
|
|
630
630
|
});
|
|
631
631
|
|
|
632
|
+
it('uses specified facet display order', async () => {
|
|
633
|
+
const el = await fixture<CollectionFacets>(
|
|
634
|
+
html`<collection-facets
|
|
635
|
+
.facetDisplayOrder=${['language', 'creator'] as FacetOption[]}
|
|
636
|
+
></collection-facets>`,
|
|
637
|
+
);
|
|
638
|
+
|
|
639
|
+
const aggs: Record<string, Aggregation> = {
|
|
640
|
+
mediatype: new Aggregation({
|
|
641
|
+
buckets: [{ key: 'texts', doc_count: 5 }],
|
|
642
|
+
}),
|
|
643
|
+
collection: new Aggregation({
|
|
644
|
+
buckets: [{ key: 'foo', doc_count: 10 }],
|
|
645
|
+
}),
|
|
646
|
+
creator: new Aggregation({
|
|
647
|
+
buckets: [{ key: 'bar', doc_count: 15 }],
|
|
648
|
+
}),
|
|
649
|
+
language: new Aggregation({
|
|
650
|
+
buckets: [{ key: 'baz', doc_count: 20 }],
|
|
651
|
+
}),
|
|
652
|
+
};
|
|
653
|
+
|
|
654
|
+
el.aggregations = aggs;
|
|
655
|
+
await el.updateComplete;
|
|
656
|
+
|
|
657
|
+
const facetHeaders = el.shadowRoot?.querySelectorAll('.facet-group-header');
|
|
658
|
+
|
|
659
|
+
// The only two facet groups should be Language and Creator (in that order)
|
|
660
|
+
expect(facetHeaders?.length).to.equal(2);
|
|
661
|
+
expect(facetHeaders?.[0].textContent).to.contain('Language');
|
|
662
|
+
expect(facetHeaders?.[1].textContent).to.contain('Creator');
|
|
663
|
+
});
|
|
664
|
+
|
|
632
665
|
describe('More Facets', () => {
|
|
633
666
|
it('Does not render < allowedFacetCount', async () => {
|
|
634
667
|
const el = await fixture<CollectionFacets>(
|
|
@@ -100,7 +100,7 @@ describe('Restoration state handler', () => {
|
|
|
100
100
|
window.history.replaceState({ path: url.href }, '', url.href);
|
|
101
101
|
|
|
102
102
|
const restorationState = handler.getRestorationState();
|
|
103
|
-
expect(restorationState.selectedFacets.year['2018'].state).to.equal(
|
|
103
|
+
expect(restorationState.selectedFacets.year?.['2018'].state).to.equal(
|
|
104
104
|
'selected',
|
|
105
105
|
);
|
|
106
106
|
});
|
|
@@ -160,7 +160,7 @@ describe('Restoration state handler', () => {
|
|
|
160
160
|
window.history.replaceState({ path: url.href }, '', url.href);
|
|
161
161
|
|
|
162
162
|
const restorationState = handler.getRestorationState();
|
|
163
|
-
expect(restorationState.selectedFacets.subject
|
|
163
|
+
expect(restorationState.selectedFacets.subject?.foo.state).to.equal(
|
|
164
164
|
'selected',
|
|
165
165
|
);
|
|
166
166
|
});
|
|
@@ -173,7 +173,7 @@ describe('Restoration state handler', () => {
|
|
|
173
173
|
window.history.replaceState({ path: url.href }, '', url.href);
|
|
174
174
|
|
|
175
175
|
const restorationState = handler.getRestorationState();
|
|
176
|
-
expect(restorationState.selectedFacets.year['2018'].state).to.equal(
|
|
176
|
+
expect(restorationState.selectedFacets.year?.['2018'].state).to.equal(
|
|
177
177
|
'hidden',
|
|
178
178
|
);
|
|
179
179
|
});
|
|
@@ -188,17 +188,17 @@ describe('Restoration state handler', () => {
|
|
|
188
188
|
|
|
189
189
|
const restorationState = handler.getRestorationState();
|
|
190
190
|
|
|
191
|
-
expect(restorationState.selectedFacets.collection
|
|
191
|
+
expect(restorationState.selectedFacets.collection?.foo.state).to.equal(
|
|
192
192
|
'selected',
|
|
193
193
|
);
|
|
194
|
-
expect(restorationState.selectedFacets.collection
|
|
194
|
+
expect(restorationState.selectedFacets.collection?.bar.state).to.equal(
|
|
195
195
|
'selected',
|
|
196
196
|
);
|
|
197
197
|
|
|
198
|
-
expect(restorationState.selectedFacets.collection
|
|
198
|
+
expect(restorationState.selectedFacets.collection?.baz.state).to.equal(
|
|
199
199
|
'hidden',
|
|
200
200
|
);
|
|
201
|
-
expect(restorationState.selectedFacets.collection
|
|
201
|
+
expect(restorationState.selectedFacets.collection?.boop.state).to.equal(
|
|
202
202
|
'hidden',
|
|
203
203
|
);
|
|
204
204
|
});
|
|
@@ -211,7 +211,7 @@ describe('Restoration state handler', () => {
|
|
|
211
211
|
window.history.replaceState({ path: url.href }, '', url.href);
|
|
212
212
|
|
|
213
213
|
const restorationState = handler.getRestorationState();
|
|
214
|
-
expect(restorationState.selectedFacets.collection
|
|
214
|
+
expect(restorationState.selectedFacets.collection?.foo.state).to.equal(
|
|
215
215
|
'hidden',
|
|
216
216
|
);
|
|
217
217
|
});
|
|
@@ -224,7 +224,7 @@ describe('Restoration state handler', () => {
|
|
|
224
224
|
window.history.replaceState({ path: url.href }, '', url.href);
|
|
225
225
|
|
|
226
226
|
const restorationState = handler.getRestorationState();
|
|
227
|
-
expect(restorationState.selectedFacets.subject
|
|
227
|
+
expect(restorationState.selectedFacets.subject?.foo.state).to.equal(
|
|
228
228
|
'selected',
|
|
229
229
|
);
|
|
230
230
|
});
|
|
@@ -237,7 +237,7 @@ describe('Restoration state handler', () => {
|
|
|
237
237
|
window.history.replaceState({ path: url.href }, '', url.href);
|
|
238
238
|
|
|
239
239
|
const restorationState = handler.getRestorationState();
|
|
240
|
-
expect(restorationState.selectedFacets.year['2018'].state).to.equal(
|
|
240
|
+
expect(restorationState.selectedFacets.year?.['2018'].state).to.equal(
|
|
241
241
|
'hidden',
|
|
242
242
|
);
|
|
243
243
|
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mediatype-icon.test.js","sourceRoot":"","sources":["../../../test/tiles/mediatype-icon.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport type { TileMediatypeIcon } from '../../src/tiles/tile-mediatype-icon';\n\nimport '../../src/tiles/tile-mediatype-icon';\n\ndescribe('Mediatype Icon', () => {\n it('renders component', async () => {\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon mediatype=\"texts\"></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon');\n expect(iconDiv).to.exist;\n });\n\n it('renders basic mediatype correctly', async () => {\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon mediatype=\"movies\"></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('Movie');\n expect(iconDiv.getAttribute('style')).to.include('#f1644b');\n expect(iconDiv.children[0]).to.be.instanceOf(SVGElement);\n });\n\n it('renders TV mediatype', async () => {\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon\n mediatype=\"movies\"\n .collections=${['tvnews']}\n ></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('TV');\n });\n\n it('renders TV Commercial mediatype', async () => {\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon\n mediatype=\"movies\"\n .collections=${['tvnews', 'tv_ads']}\n ></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('TV Commercial');\n });\n\n it('renders TV Fact Check mediatype for search results', async () => {\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon\n isTvSearchResult\n mediatype=\"movies\"\n .collections=${['tvnews', 'factchecked']}\n ></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('TV Fact Check');\n });\n\n it('does not use TV Fact Check mediatype for non-search results', async () => {\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon\n mediatype=\"movies\"\n .collections=${['tvnews', 'factchecked']}\n ></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('TV');\n });\n\n it('renders radio mediatype', async () => {\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon\n mediatype=\"audio\"\n .collections=${['radio']}\n ></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('Radio');\n });\n\n it('renders no icon if mediatype is unrecognized', async () => {\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon mediatype=\"foobar\"></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon');\n expect(iconDiv).not.to.exist;\n });\n});\n"]}
|
|
File without changes
|
|
File without changes
|