@internetarchive/collection-browser 3.5.2-alpha-webdev8160.0 → 3.5.2-alpha-webdev8093.0

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 (58) hide show
  1. package/dist/src/app-root.js +606 -606
  2. package/dist/src/app-root.js.map +1 -1
  3. package/dist/src/collection-browser.js +764 -764
  4. package/dist/src/collection-browser.js.map +1 -1
  5. package/dist/src/collection-facets/facet-row.js +140 -140
  6. package/dist/src/collection-facets/facet-row.js.map +1 -1
  7. package/dist/src/collection-facets/facets-template.js +23 -23
  8. package/dist/src/collection-facets/facets-template.js.map +1 -1
  9. package/dist/src/collection-facets/more-facets-content.d.ts +1 -0
  10. package/dist/src/collection-facets/more-facets-content.js +126 -127
  11. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  12. package/dist/src/collection-facets.js +267 -267
  13. package/dist/src/collection-facets.js.map +1 -1
  14. package/dist/src/data-source/collection-browser-data-source-interface.js.map +1 -1
  15. package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
  16. package/dist/src/data-source/collection-browser-query-state.js.map +1 -1
  17. package/dist/src/data-source/models.js.map +1 -1
  18. package/dist/src/models.d.ts +0 -4
  19. package/dist/src/models.js +0 -8
  20. package/dist/src/models.js.map +1 -1
  21. package/dist/src/restoration-state-handler.js.map +1 -1
  22. package/dist/src/tiles/grid/collection-tile.js +77 -77
  23. package/dist/src/tiles/grid/collection-tile.js.map +1 -1
  24. package/dist/src/tiles/grid/item-tile.js +137 -137
  25. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  26. package/dist/src/tiles/hover/hover-pane-controller.d.ts +8 -0
  27. package/dist/src/tiles/hover/hover-pane-controller.js +13 -1
  28. package/dist/src/tiles/hover/hover-pane-controller.js.map +1 -1
  29. package/dist/src/tiles/models.js.map +1 -1
  30. package/dist/src/tiles/tile-dispatcher.js +215 -215
  31. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  32. package/dist/test/collection-browser.test.js +189 -189
  33. package/dist/test/collection-browser.test.js.map +1 -1
  34. package/dist/test/collection-facets/more-facets-content.test.js +28 -28
  35. package/dist/test/collection-facets/more-facets-content.test.js.map +1 -1
  36. package/dist/test/restoration-state-handler.test.js.map +1 -1
  37. package/package.json +1 -1
  38. package/src/app-root.ts +1140 -1140
  39. package/src/collection-browser.ts +3075 -3075
  40. package/src/collection-facets/facet-row.ts +299 -299
  41. package/src/collection-facets/facets-template.ts +83 -83
  42. package/src/collection-facets/more-facets-content.ts +642 -644
  43. package/src/collection-facets.ts +1010 -1010
  44. package/src/data-source/collection-browser-data-source-interface.ts +345 -345
  45. package/src/data-source/collection-browser-data-source.ts +1441 -1441
  46. package/src/data-source/collection-browser-query-state.ts +59 -59
  47. package/src/data-source/models.ts +56 -56
  48. package/src/models.ts +0 -9
  49. package/src/restoration-state-handler.ts +546 -546
  50. package/src/tiles/grid/collection-tile.ts +163 -163
  51. package/src/tiles/grid/item-tile.ts +340 -340
  52. package/src/tiles/hover/hover-pane-controller.ts +15 -1
  53. package/src/tiles/models.ts +1 -1
  54. package/src/tiles/tile-dispatcher.ts +517 -517
  55. package/test/collection-browser.test.ts +2413 -2413
  56. package/test/collection-facets/more-facets-content.test.ts +231 -231
  57. package/test/restoration-state-handler.test.ts +480 -480
  58. package/vite.config.ts +29 -29
@@ -1,231 +1,231 @@
1
- import { aTimeout, expect, fixture } from '@open-wc/testing';
2
- import { html } from 'lit';
3
- import type { MoreFacetsContent } from '../../src/collection-facets/more-facets-content';
4
- import '../../src/collection-facets/more-facets-content';
5
- import { MockSearchService } from '../mocks/mock-search-service';
6
- import { MockAnalyticsHandler } from '../mocks/mock-analytics-handler';
7
- import type { FacetsTemplate } from '../../src/collection-facets/facets-template';
8
- import type { SelectedFacets } from '../../src/models';
9
-
10
- const selectedFacetsGroup = {
11
- title: 'Media Type',
12
- key: 'mediatype',
13
- buckets: [
14
- { displayText: 'audio', key: 'audio', count: 1001, state: 'none' },
15
- { displayText: 'movies', key: 'movies', count: 901, state: 'none' },
16
- { displayText: 'texts', key: 'texts', count: 2101, state: 'none' },
17
- { displayText: 'data', key: 'data', count: 230, state: 'none' },
18
- { displayText: 'web', key: 'web', count: 453, state: 'none' },
19
- ],
20
- };
21
-
22
- const yearSelectedFacets: SelectedFacets = {
23
- mediatype: {},
24
- lending: {},
25
- year: {
26
- '2000': { key: '2000', count: 5, state: 'selected' },
27
- },
28
- subject: {},
29
- collection: {},
30
- creator: {},
31
- language: {},
32
- };
33
-
34
- describe('More facets content', () => {
35
- it('should render more facets template', async () => {
36
- const el = await fixture<MoreFacetsContent>(
37
- html`<more-facets-content></more-facets-content>`,
38
- );
39
-
40
- el.facetsLoading = false;
41
- await el.updateComplete;
42
-
43
- expect(el.shadowRoot?.querySelector('.facets-content')).to.exist;
44
- });
45
-
46
- it('should render more facets loader template', async () => {
47
- const el = await fixture<MoreFacetsContent>(
48
- html`<more-facets-content></more-facets-content>`,
49
- );
50
-
51
- el.facetsLoading = true;
52
- await el.updateComplete;
53
-
54
- expect(el.shadowRoot?.querySelector('.facets-loader')).to.exist;
55
- });
56
-
57
- it('should render pagination for more facets', async () => {
58
- const searchService = new MockSearchService();
59
-
60
- const el = await fixture<MoreFacetsContent>(
61
- html`<more-facets-content
62
- .searchService=${searchService}
63
- ></more-facets-content>`,
64
- );
65
-
66
- el.facetKey = 'year';
67
- el.query = 'more-facets'; // Produces a response with 40+ aggregations for multiple pages
68
- await el.updateComplete;
69
- await aTimeout(50); // Give it a moment to perform the (mock) search query after the initial update
70
-
71
- expect(el.shadowRoot?.querySelectorAll('more-facets-pagination')).to.exist;
72
- });
73
-
74
- it('query for more facets content using search service', async () => {
75
- const searchService = new MockSearchService();
76
-
77
- const el = await fixture<MoreFacetsContent>(
78
- html`<more-facets-content
79
- .searchService=${searchService}
80
- ></more-facets-content>`,
81
- );
82
-
83
- el.facetKey = 'collection';
84
- el.query = 'collection-aggregations';
85
- await el.updateComplete;
86
-
87
- expect(searchService.searchParams?.query).to.equal(
88
- 'collection-aggregations',
89
- );
90
- });
91
-
92
- it('queries for more facets using search service within a collection (no query)', async () => {
93
- const searchService = new MockSearchService();
94
-
95
- const el = await fixture<MoreFacetsContent>(
96
- html`<more-facets-content
97
- .searchService=${searchService}
98
- .pageSpecifierParams=${{
99
- pageType: 'collection_details',
100
- pageTarget: 'foobar',
101
- }}
102
- ></more-facets-content>`,
103
- );
104
-
105
- el.facetKey = 'subject';
106
- await el.updateComplete;
107
-
108
- expect(searchService.searchParams?.query).to.be.empty;
109
- expect(searchService.searchParams?.pageTarget).to.equal('foobar');
110
- });
111
-
112
- it('queries for more facets using search service within a collection (with query)', async () => {
113
- const searchService = new MockSearchService();
114
-
115
- const el = await fixture<MoreFacetsContent>(
116
- html`<more-facets-content
117
- .searchService=${searchService}
118
- .pageSpecifierParams=${{
119
- pageType: 'collection_details',
120
- pageTarget: 'foobar',
121
- }}
122
- ></more-facets-content>`,
123
- );
124
-
125
- el.facetKey = 'subject';
126
- el.query = 'title:hello';
127
- await el.updateComplete;
128
-
129
- expect(searchService.searchParams?.query).to.equal('title:hello');
130
- expect(searchService.searchParams?.pageTarget).to.equal('foobar');
131
- });
132
-
133
- it('filter raw selectedFacets object', async () => {
134
- const searchService = new MockSearchService();
135
-
136
- const el = await fixture<MoreFacetsContent>(
137
- html`<more-facets-content
138
- .searchService=${searchService}
139
- .selectedFacets=${selectedFacetsGroup}
140
- ></more-facets-content>`,
141
- );
142
-
143
- el.facetKey = 'collection';
144
- el.query = 'title:hello';
145
- await el.updateComplete;
146
-
147
- expect(searchService.searchParams?.query).to.equal('title:hello');
148
- });
149
-
150
- it('combines selectedFacets and aggregationFacets and renders on modal', async () => {
151
- const searchService = new MockSearchService();
152
-
153
- const el = await fixture<MoreFacetsContent>(
154
- html`<more-facets-content
155
- .facetKey=${'year'}
156
- .query=${'more-facets'}
157
- .searchService=${searchService}
158
- .selectedFacets=${yearSelectedFacets}
159
- ></more-facets-content>`,
160
- );
161
-
162
- const facetsTemplate = el.shadowRoot?.querySelector(
163
- 'facets-template',
164
- ) as FacetsTemplate;
165
- expect(facetsTemplate).to.exist;
166
-
167
- const { facetGroup } = facetsTemplate;
168
- expect(facetGroup?.key).to.equal('year');
169
- expect(facetGroup?.title).to.equal('Year');
170
-
171
- // First bucket is the one that was included in the selected facets
172
- const firstBucket = facetGroup?.buckets[0];
173
- expect(firstBucket?.key).to.equal('2000');
174
- expect(firstBucket?.count).to.equal(5);
175
-
176
- // Second bucket is the most recent year, since year facets default to descending order of year
177
- const secondBucket = facetGroup?.buckets[1];
178
- expect(secondBucket?.key).to.equal('2024');
179
- expect(secondBucket?.count).to.equal(5);
180
- });
181
-
182
- it('cancel button clicked event', async () => {
183
- const searchService = new MockSearchService();
184
- const mockAnalyticsHandler = new MockAnalyticsHandler();
185
-
186
- const el = await fixture<MoreFacetsContent>(
187
- html`<more-facets-content
188
- .facetKey=${'collection'}
189
- .query=${'collection-aggregations'}
190
- .searchService=${searchService}
191
- .analyticsHandler=${mockAnalyticsHandler}
192
- ></more-facets-content>`,
193
- );
194
-
195
- // select cancel button
196
- const cancelButton = el.shadowRoot?.querySelector(
197
- '.footer > .btn-cancel',
198
- ) as HTMLButtonElement;
199
- expect(cancelButton).to.exist;
200
- cancelButton?.click();
201
-
202
- expect(mockAnalyticsHandler.callCategory).to.equal('collection-browser');
203
- expect(mockAnalyticsHandler.callAction).to.equal('closeMoreFacetsModal');
204
- expect(mockAnalyticsHandler.callLabel).to.equal('collection');
205
- });
206
-
207
- it('facet apply button clicked event', async () => {
208
- const searchService = new MockSearchService();
209
- const mockAnalyticsHandler = new MockAnalyticsHandler();
210
-
211
- const el = await fixture<MoreFacetsContent>(
212
- html`<more-facets-content
213
- .facetKey=${'collection'}
214
- .query=${'collection-aggregations'}
215
- .searchService=${searchService}
216
- .analyticsHandler=${mockAnalyticsHandler}
217
- ></more-facets-content>`,
218
- );
219
-
220
- // select submit button
221
- const submitButton = el.shadowRoot?.querySelector(
222
- '.footer > .btn-submit',
223
- ) as HTMLButtonElement;
224
- expect(submitButton).to.exist;
225
- submitButton?.click();
226
-
227
- expect(mockAnalyticsHandler.callCategory).to.equal('collection-browser');
228
- expect(mockAnalyticsHandler.callAction).to.equal('applyMoreFacetsModal');
229
- expect(mockAnalyticsHandler.callLabel).to.equal('collection');
230
- });
231
- });
1
+ import { aTimeout, expect, fixture } from '@open-wc/testing';
2
+ import { html } from 'lit';
3
+ import type { MoreFacetsContent } from '../../src/collection-facets/more-facets-content';
4
+ import '../../src/collection-facets/more-facets-content';
5
+ import { MockSearchService } from '../mocks/mock-search-service';
6
+ import { MockAnalyticsHandler } from '../mocks/mock-analytics-handler';
7
+ import type { FacetsTemplate } from '../../src/collection-facets/facets-template';
8
+ import type { SelectedFacets } from '../../src/models';
9
+
10
+ const selectedFacetsGroup = {
11
+ title: 'Media Type',
12
+ key: 'mediatype',
13
+ buckets: [
14
+ { displayText: 'audio', key: 'audio', count: 1001, state: 'none' },
15
+ { displayText: 'movies', key: 'movies', count: 901, state: 'none' },
16
+ { displayText: 'texts', key: 'texts', count: 2101, state: 'none' },
17
+ { displayText: 'data', key: 'data', count: 230, state: 'none' },
18
+ { displayText: 'web', key: 'web', count: 453, state: 'none' },
19
+ ],
20
+ };
21
+
22
+ const yearSelectedFacets: SelectedFacets = {
23
+ mediatype: {},
24
+ lending: {},
25
+ year: {
26
+ '2000': { key: '2000', count: 5, state: 'selected' },
27
+ },
28
+ subject: {},
29
+ collection: {},
30
+ creator: {},
31
+ language: {},
32
+ };
33
+
34
+ describe('More facets content', () => {
35
+ it('should render more facets template', async () => {
36
+ const el = await fixture<MoreFacetsContent>(
37
+ html`<more-facets-content></more-facets-content>`,
38
+ );
39
+
40
+ el.facetsLoading = false;
41
+ await el.updateComplete;
42
+
43
+ expect(el.shadowRoot?.querySelector('.facets-content')).to.exist;
44
+ });
45
+
46
+ it('should render more facets loader template', async () => {
47
+ const el = await fixture<MoreFacetsContent>(
48
+ html`<more-facets-content></more-facets-content>`,
49
+ );
50
+
51
+ el.facetsLoading = true;
52
+ await el.updateComplete;
53
+
54
+ expect(el.shadowRoot?.querySelector('.facets-loader')).to.exist;
55
+ });
56
+
57
+ it('should render pagination for more facets', async () => {
58
+ const searchService = new MockSearchService();
59
+
60
+ const el = await fixture<MoreFacetsContent>(
61
+ html`<more-facets-content
62
+ .searchService=${searchService}
63
+ ></more-facets-content>`,
64
+ );
65
+
66
+ el.facetKey = 'year';
67
+ el.query = 'more-facets'; // Produces a response with 40+ aggregations for multiple pages
68
+ await el.updateComplete;
69
+ await aTimeout(50); // Give it a moment to perform the (mock) search query after the initial update
70
+
71
+ expect(el.shadowRoot?.querySelectorAll('more-facets-pagination')).to.exist;
72
+ });
73
+
74
+ it('query for more facets content using search service', async () => {
75
+ const searchService = new MockSearchService();
76
+
77
+ const el = await fixture<MoreFacetsContent>(
78
+ html`<more-facets-content
79
+ .searchService=${searchService}
80
+ ></more-facets-content>`,
81
+ );
82
+
83
+ el.facetKey = 'collection';
84
+ el.query = 'collection-aggregations';
85
+ await el.updateComplete;
86
+
87
+ expect(searchService.searchParams?.query).to.equal(
88
+ 'collection-aggregations',
89
+ );
90
+ });
91
+
92
+ it('queries for more facets using search service within a collection (no query)', async () => {
93
+ const searchService = new MockSearchService();
94
+
95
+ const el = await fixture<MoreFacetsContent>(
96
+ html`<more-facets-content
97
+ .searchService=${searchService}
98
+ .pageSpecifierParams=${{
99
+ pageType: 'collection_details',
100
+ pageTarget: 'foobar',
101
+ }}
102
+ ></more-facets-content>`,
103
+ );
104
+
105
+ el.facetKey = 'subject';
106
+ await el.updateComplete;
107
+
108
+ expect(searchService.searchParams?.query).to.be.empty;
109
+ expect(searchService.searchParams?.pageTarget).to.equal('foobar');
110
+ });
111
+
112
+ it('queries for more facets using search service within a collection (with query)', async () => {
113
+ const searchService = new MockSearchService();
114
+
115
+ const el = await fixture<MoreFacetsContent>(
116
+ html`<more-facets-content
117
+ .searchService=${searchService}
118
+ .pageSpecifierParams=${{
119
+ pageType: 'collection_details',
120
+ pageTarget: 'foobar',
121
+ }}
122
+ ></more-facets-content>`,
123
+ );
124
+
125
+ el.facetKey = 'subject';
126
+ el.query = 'title:hello';
127
+ await el.updateComplete;
128
+
129
+ expect(searchService.searchParams?.query).to.equal('title:hello');
130
+ expect(searchService.searchParams?.pageTarget).to.equal('foobar');
131
+ });
132
+
133
+ it('filter raw selectedFacets object', async () => {
134
+ const searchService = new MockSearchService();
135
+
136
+ const el = await fixture<MoreFacetsContent>(
137
+ html`<more-facets-content
138
+ .searchService=${searchService}
139
+ .selectedFacets=${selectedFacetsGroup}
140
+ ></more-facets-content>`,
141
+ );
142
+
143
+ el.facetKey = 'collection';
144
+ el.query = 'title:hello';
145
+ await el.updateComplete;
146
+
147
+ expect(searchService.searchParams?.query).to.equal('title:hello');
148
+ });
149
+
150
+ it('combines selectedFacets and aggregationFacets and renders on modal', async () => {
151
+ const searchService = new MockSearchService();
152
+
153
+ const el = await fixture<MoreFacetsContent>(
154
+ html`<more-facets-content
155
+ .facetKey=${'year'}
156
+ .query=${'more-facets'}
157
+ .searchService=${searchService}
158
+ .selectedFacets=${yearSelectedFacets}
159
+ ></more-facets-content>`,
160
+ );
161
+
162
+ const facetsTemplate = el.shadowRoot?.querySelector(
163
+ 'facets-template',
164
+ ) as FacetsTemplate;
165
+ expect(facetsTemplate).to.exist;
166
+
167
+ const { facetGroup } = facetsTemplate;
168
+ expect(facetGroup?.key).to.equal('year');
169
+ expect(facetGroup?.title).to.equal('Year');
170
+
171
+ // First bucket is the one that was included in the selected facets
172
+ const firstBucket = facetGroup?.buckets[0];
173
+ expect(firstBucket?.key).to.equal('2000');
174
+ expect(firstBucket?.count).to.equal(5);
175
+
176
+ // Second bucket is the most recent year, since year facets default to descending order of year
177
+ const secondBucket = facetGroup?.buckets[1];
178
+ expect(secondBucket?.key).to.equal('2024');
179
+ expect(secondBucket?.count).to.equal(5);
180
+ });
181
+
182
+ it('cancel button clicked event', async () => {
183
+ const searchService = new MockSearchService();
184
+ const mockAnalyticsHandler = new MockAnalyticsHandler();
185
+
186
+ const el = await fixture<MoreFacetsContent>(
187
+ html`<more-facets-content
188
+ .facetKey=${'collection'}
189
+ .query=${'collection-aggregations'}
190
+ .searchService=${searchService}
191
+ .analyticsHandler=${mockAnalyticsHandler}
192
+ ></more-facets-content>`,
193
+ );
194
+
195
+ // select cancel button
196
+ const cancelButton = el.shadowRoot?.querySelector(
197
+ '.footer > .btn-cancel',
198
+ ) as HTMLButtonElement;
199
+ expect(cancelButton).to.exist;
200
+ cancelButton?.click();
201
+
202
+ expect(mockAnalyticsHandler.callCategory).to.equal('collection-browser');
203
+ expect(mockAnalyticsHandler.callAction).to.equal('closeMoreFacetsModal');
204
+ expect(mockAnalyticsHandler.callLabel).to.equal('collection');
205
+ });
206
+
207
+ it('facet apply button clicked event', async () => {
208
+ const searchService = new MockSearchService();
209
+ const mockAnalyticsHandler = new MockAnalyticsHandler();
210
+
211
+ const el = await fixture<MoreFacetsContent>(
212
+ html`<more-facets-content
213
+ .facetKey=${'collection'}
214
+ .query=${'collection-aggregations'}
215
+ .searchService=${searchService}
216
+ .analyticsHandler=${mockAnalyticsHandler}
217
+ ></more-facets-content>`,
218
+ );
219
+
220
+ // select submit button
221
+ const submitButton = el.shadowRoot?.querySelector(
222
+ '.footer > .btn-submit',
223
+ ) as HTMLButtonElement;
224
+ expect(submitButton).to.exist;
225
+ submitButton?.click();
226
+
227
+ expect(mockAnalyticsHandler.callCategory).to.equal('collection-browser');
228
+ expect(mockAnalyticsHandler.callAction).to.equal('applyMoreFacetsModal');
229
+ expect(mockAnalyticsHandler.callLabel).to.equal('collection');
230
+ });
231
+ });