@internetarchive/collection-browser 0.2.15-0 → 0.2.16-alpha1

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 (55) hide show
  1. package/dist/src/app-root.d.ts +1 -0
  2. package/dist/src/app-root.js +29 -2
  3. package/dist/src/app-root.js.map +1 -1
  4. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -0
  5. package/dist/src/assets/img/icons/arrow-left.js +10 -0
  6. package/dist/src/assets/img/icons/arrow-left.js.map +1 -0
  7. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -0
  8. package/dist/src/assets/img/icons/arrow-right.js +10 -0
  9. package/dist/src/assets/img/icons/arrow-right.js.map +1 -0
  10. package/dist/src/collection-browser.d.ts +2 -0
  11. package/dist/src/collection-browser.js +9 -13
  12. package/dist/src/collection-browser.js.map +1 -1
  13. package/dist/src/collection-facets/more-facets-content.d.ts +56 -0
  14. package/dist/src/collection-facets/more-facets-content.js +374 -0
  15. package/dist/src/collection-facets/more-facets-content.js.map +1 -0
  16. package/dist/src/collection-facets/more-facets-pagination.d.ts +27 -0
  17. package/dist/src/collection-facets/more-facets-pagination.js +193 -0
  18. package/dist/src/collection-facets/more-facets-pagination.js.map +1 -0
  19. package/dist/src/collection-facets.d.ts +19 -2
  20. package/dist/src/collection-facets.js +102 -0
  21. package/dist/src/collection-facets.js.map +1 -1
  22. package/dist/src/models.d.ts +3 -2
  23. package/dist/src/models.js +8 -4
  24. package/dist/src/models.js.map +1 -1
  25. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +23 -1
  26. package/dist/src/sort-filter-bar/sort-filter-bar.js +96 -12
  27. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  28. package/dist/test/collection-browser.test.js +35 -0
  29. package/dist/test/collection-browser.test.js.map +1 -1
  30. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -0
  31. package/dist/test/collection-facets/more-facets-content.test.js +75 -0
  32. package/dist/test/collection-facets/more-facets-content.test.js.map +1 -0
  33. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -0
  34. package/dist/test/collection-facets/more-facets-pagination.test.js +38 -0
  35. package/dist/test/collection-facets/more-facets-pagination.test.js.map +1 -0
  36. package/dist/test/mocks/mock-search-responses.js +13 -0
  37. package/dist/test/mocks/mock-search-responses.js.map +1 -1
  38. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -0
  39. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +122 -0
  40. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -0
  41. package/package.json +3 -1
  42. package/src/app-root.ts +29 -2
  43. package/src/assets/img/icons/arrow-left.ts +10 -0
  44. package/src/assets/img/icons/arrow-right.ts +10 -0
  45. package/src/collection-browser.ts +8 -13
  46. package/src/collection-facets/more-facets-content.ts +393 -0
  47. package/src/collection-facets/more-facets-pagination.ts +201 -0
  48. package/src/collection-facets.ts +117 -1
  49. package/src/models.ts +9 -4
  50. package/src/sort-filter-bar/sort-filter-bar.ts +98 -12
  51. package/test/collection-browser.test.ts +43 -0
  52. package/test/collection-facets/more-facets-content.test.ts +113 -0
  53. package/test/collection-facets/more-facets-pagination.test.ts +70 -0
  54. package/test/mocks/mock-search-responses.ts +13 -0
  55. package/test/sort-filter-bar/sort-filter-bar.test.ts +187 -0
@@ -21,6 +21,19 @@ export const mockSuccessResponse: Result<SearchResponse, SearchServiceError> = {
21
21
  }),
22
22
  ],
23
23
  start: 0,
24
+ aggregations: {
25
+ 'user_aggs__terms__field:mediatypeSorter__size:100': {
26
+ buckets: [
27
+ { key: 'audio', doc_count: 121 },
28
+ { key: 'movies', doc_count: 2195 },
29
+ { key: 'texts', doc_count: 1392 },
30
+ { key: 'data', doc_count: 605 },
31
+ { key: 'web', doc_count: 301 },
32
+ { key: 'collection', doc_count: 167 },
33
+ { key: 'account', doc_count: 167 },
34
+ ],
35
+ },
36
+ },
24
37
  },
25
38
  responseHeader: {
26
39
  status: 0,
@@ -0,0 +1,187 @@
1
+ /* eslint-disable import/no-duplicates */
2
+ import { expect, fixture } from '@open-wc/testing';
3
+ import { html } from 'lit';
4
+ import type { SortFilterBar } from '../../src/sort-filter-bar/sort-filter-bar';
5
+ import type { SortField } from '../../src/models';
6
+
7
+ import '../../src/sort-filter-bar/sort-filter-bar';
8
+
9
+ describe('Sort direction buttons', () => {
10
+ it('should render sort direction button', async () => {
11
+ const el = await fixture<SortFilterBar>(html`
12
+ <sort-filter-bar> </sort-filter-bar>
13
+ `);
14
+
15
+ el.sortDirection = 'asc'; // selected sort
16
+ await el.updateComplete;
17
+
18
+ const sortDirectionButtonList = el.shadowRoot?.querySelector(
19
+ '#sort-direction-selector'
20
+ );
21
+
22
+ const sortByAscButton = sortDirectionButtonList?.querySelector(
23
+ '#sort-ascending-btn'
24
+ );
25
+ expect(sortByAscButton).to.exist;
26
+ // ascending order button is selected
27
+ expect(sortByAscButton?.getAttribute('class')).to.equal(
28
+ 'sort-button selected'
29
+ );
30
+
31
+ const sortByDescButton = sortDirectionButtonList?.querySelector(
32
+ '#sort-descending-btn'
33
+ );
34
+ expect(sortByDescButton).to.exist;
35
+ // descending order button is not selected
36
+ expect(sortByDescButton?.getAttribute('class')).to.not.equal(
37
+ 'sort-button selected'
38
+ );
39
+ });
40
+ });
41
+
42
+ describe('Sort selector default buttons', async () => {
43
+ const el = await fixture<SortFilterBar>(html`
44
+ <sort-filter-bar> </sort-filter-bar>
45
+ `);
46
+ const sortSelectorContainer = el.shadowRoot?.querySelector(
47
+ '#desktop-sort-selector'
48
+ );
49
+
50
+ it('should render sort-by label', async () => {
51
+ expect(sortSelectorContainer?.children.item(0)?.textContent).to.equal(
52
+ 'Sort By'
53
+ );
54
+ });
55
+
56
+ it('should render default relevance-sort selector', async () => {
57
+ const defaultSortSelector = sortSelectorContainer?.children
58
+ .item(1)
59
+ ?.querySelector('a');
60
+ expect(defaultSortSelector?.textContent).to.contain('Relevance');
61
+ expect(defaultSortSelector?.getAttribute('class')).to.equal('selected');
62
+ });
63
+
64
+ it('should render default view-sort selector', async () => {
65
+ const defaultSortSelector = sortSelectorContainer?.children
66
+ .item(2)
67
+ ?.querySelector('a');
68
+ expect(defaultSortSelector?.textContent).to.contain('Weekly Views');
69
+ });
70
+
71
+ it('should render active view-sort selectors', async () => {
72
+ el.selectedSort = 'alltimeview' as SortField;
73
+ await el.updateComplete;
74
+
75
+ const defaultSortSelector =
76
+ sortSelectorContainer?.querySelector('a.selected');
77
+ expect(defaultSortSelector?.textContent).to.contain('All-time Views');
78
+ });
79
+
80
+ it('should render default title-sort selector', async () => {
81
+ const defaultSortSelector = sortSelectorContainer?.children
82
+ .item(3)
83
+ ?.querySelector('a');
84
+ expect(defaultSortSelector?.textContent).to.contain('Title');
85
+ });
86
+
87
+ it('should render default date-sort selector', async () => {
88
+ const defaultSortSelector = sortSelectorContainer?.children
89
+ .item(4)
90
+ ?.querySelector('a');
91
+ expect(defaultSortSelector?.textContent).to.contain('Date Published');
92
+ });
93
+
94
+ it('should render active date-sort selectors', async () => {
95
+ el.selectedSort = 'datereviewed' as SortField;
96
+ await el.updateComplete;
97
+
98
+ const defaultSortSelector =
99
+ sortSelectorContainer?.querySelector('a.selected');
100
+ expect(defaultSortSelector?.textContent).to.contain('Date Reviewed');
101
+ });
102
+
103
+ it('should render default creator-sort selector', async () => {
104
+ const defaultSortSelector = sortSelectorContainer?.children
105
+ .item(5)
106
+ ?.querySelector('a');
107
+ expect(defaultSortSelector?.textContent).to.contain('Creator');
108
+ });
109
+
110
+ it('click event on view-sort selector', async () => {
111
+ const defaultSortSelector = sortSelectorContainer?.children
112
+ .item(2)
113
+ ?.querySelector('a');
114
+
115
+ await defaultSortSelector?.click();
116
+ expect(el.selectedSort).to.equal('weeklyview');
117
+ });
118
+
119
+ it('click event on title selector', async () => {
120
+ const defaultSortSelector = sortSelectorContainer?.children
121
+ .item(3)
122
+ ?.querySelector('a');
123
+
124
+ await defaultSortSelector?.click();
125
+ expect(el.selectedSort).to.equal('title');
126
+ });
127
+
128
+ it('click event on date-sort selector', async () => {
129
+ const defaultSortSelector = sortSelectorContainer?.children
130
+ .item(4)
131
+ ?.querySelector('a');
132
+
133
+ await defaultSortSelector?.click();
134
+ expect(el.selectedSort).to.equal('date');
135
+ });
136
+
137
+ it('click event on creator selector', async () => {
138
+ const defaultSortSelector = sortSelectorContainer?.children
139
+ .item(5)
140
+ ?.querySelector('a');
141
+
142
+ await defaultSortSelector?.click();
143
+ expect(el.selectedSort).to.equal('creator');
144
+ });
145
+ });
146
+
147
+ describe('Display mode/style buttons', () => {
148
+ it('should render all display mode buttons', async () => {
149
+ const el = await fixture<SortFilterBar>(html`
150
+ <sort-filter-bar> </sort-filter-bar>
151
+ `);
152
+
153
+ const displayModeButtonList = el.shadowRoot
154
+ ?.querySelector('#display-style-selector')
155
+ ?.querySelector('ul');
156
+
157
+ const gridButton = displayModeButtonList?.children
158
+ .item(0)
159
+ ?.querySelector('#grid-button');
160
+ expect(gridButton).to.exist;
161
+
162
+ const detailListButton = displayModeButtonList?.children
163
+ .item(1)
164
+ ?.querySelector('#list-detail-button');
165
+ expect(detailListButton).to.exist;
166
+
167
+ const compactListButton = displayModeButtonList?.children
168
+ .item(2)
169
+ ?.querySelector('#list-compact-button');
170
+ expect(compactListButton).to.exist;
171
+ });
172
+
173
+ it('should active current display mode', async () => {
174
+ const el = await fixture<SortFilterBar>(html`
175
+ <sort-filter-bar> </sort-filter-bar>
176
+ `);
177
+
178
+ el.displayMode = 'grid';
179
+ await el.updateComplete;
180
+
181
+ const displayModeTitle = el.shadowRoot
182
+ ?.querySelector('#display-style-selector')
183
+ ?.querySelector('button.active')
184
+ ?.getAttribute('title');
185
+ expect(displayModeTitle).to.equal('Tile view');
186
+ });
187
+ });