@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
@@ -15,6 +15,19 @@ export const mockSuccessResponse = {
15
15
  }),
16
16
  ],
17
17
  start: 0,
18
+ aggregations: {
19
+ 'user_aggs__terms__field:mediatypeSorter__size:100': {
20
+ buckets: [
21
+ { key: 'audio', doc_count: 121 },
22
+ { key: 'movies', doc_count: 2195 },
23
+ { key: 'texts', doc_count: 1392 },
24
+ { key: 'data', doc_count: 605 },
25
+ { key: 'web', doc_count: 301 },
26
+ { key: 'collection', doc_count: 167 },
27
+ { key: 'account', doc_count: 167 },
28
+ ],
29
+ },
30
+ },
18
31
  },
19
32
  responseHeader: {
20
33
  status: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"mock-search-responses.js","sourceRoot":"","sources":["../../../test/mocks/mock-search-responses.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,GAGT,MAAM,iCAAiC,CAAC;AAEzC,MAAM,CAAC,MAAM,mBAAmB,GAA+C;IAC7E,OAAO,EAAE;QACP,WAAW,EAAE,EAAE;QACf,QAAQ,EAAE;YACR,QAAQ,EAAE,CAAC;YACX,IAAI,EAAE;gBACJ,IAAI,QAAQ,CAAC;oBACX,UAAU,EAAE,KAAK;oBACjB,eAAe,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;iBAChC,CAAC;gBACF,IAAI,QAAQ,CAAC;oBACX,UAAU,EAAE,KAAK;oBACjB,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;iBACjC,CAAC;aACH;YACD,KAAK,EAAE,CAAC;SACT;QACD,cAAc,EAAE;YACd,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,CAAC;YACR,MAAM,EAAE;gBACN,KAAK,EAAE,gBAAgB;gBACvB,GAAG,EAAE,gBAAgB;gBACrB,MAAM,EAAE,6BAA6B;gBACrC,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,CAAC;aACT;SACF;KACF;CACF,CAAC","sourcesContent":["import type { Result } from '@internetarchive/result-type';\nimport {\n Metadata,\n SearchResponse,\n SearchServiceError,\n} from '@internetarchive/search-service';\n\nexport const mockSuccessResponse: Result<SearchResponse, SearchServiceError> = {\n success: {\n rawResponse: {},\n response: {\n numFound: 2,\n docs: [\n new Metadata({\n identifier: 'foo',\n collections_raw: ['foo', 'bar'],\n }),\n new Metadata({\n identifier: 'bar',\n collections_raw: ['baz', 'boop'],\n }),\n ],\n start: 0,\n },\n responseHeader: {\n status: 0,\n QTime: 0,\n params: {\n query: 'collection:foo',\n qin: 'collection:foo',\n fields: 'identifier, collections_raw',\n wt: 'foo',\n start: 0,\n },\n },\n },\n};\n"]}
1
+ {"version":3,"file":"mock-search-responses.js","sourceRoot":"","sources":["../../../test/mocks/mock-search-responses.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,GAGT,MAAM,iCAAiC,CAAC;AAEzC,MAAM,CAAC,MAAM,mBAAmB,GAA+C;IAC7E,OAAO,EAAE;QACP,WAAW,EAAE,EAAE;QACf,QAAQ,EAAE;YACR,QAAQ,EAAE,CAAC;YACX,IAAI,EAAE;gBACJ,IAAI,QAAQ,CAAC;oBACX,UAAU,EAAE,KAAK;oBACjB,eAAe,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;iBAChC,CAAC;gBACF,IAAI,QAAQ,CAAC;oBACX,UAAU,EAAE,KAAK;oBACjB,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;iBACjC,CAAC;aACH;YACD,KAAK,EAAE,CAAC;YACR,YAAY,EAAE;gBACZ,mDAAmD,EAAE;oBACnD,OAAO,EAAE;wBACP,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE;wBAChC,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE;wBAClC,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;wBACjC,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE;wBAC/B,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE;wBAC9B,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE;wBACrC,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE;qBACnC;iBACF;aACF;SACF;QACD,cAAc,EAAE;YACd,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,CAAC;YACR,MAAM,EAAE;gBACN,KAAK,EAAE,gBAAgB;gBACvB,GAAG,EAAE,gBAAgB;gBACrB,MAAM,EAAE,6BAA6B;gBACrC,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,CAAC;aACT;SACF;KACF;CACF,CAAC","sourcesContent":["import type { Result } from '@internetarchive/result-type';\nimport {\n Metadata,\n SearchResponse,\n SearchServiceError,\n} from '@internetarchive/search-service';\n\nexport const mockSuccessResponse: Result<SearchResponse, SearchServiceError> = {\n success: {\n rawResponse: {},\n response: {\n numFound: 2,\n docs: [\n new Metadata({\n identifier: 'foo',\n collections_raw: ['foo', 'bar'],\n }),\n new Metadata({\n identifier: 'bar',\n collections_raw: ['baz', 'boop'],\n }),\n ],\n start: 0,\n aggregations: {\n 'user_aggs__terms__field:mediatypeSorter__size:100': {\n buckets: [\n { key: 'audio', doc_count: 121 },\n { key: 'movies', doc_count: 2195 },\n { key: 'texts', doc_count: 1392 },\n { key: 'data', doc_count: 605 },\n { key: 'web', doc_count: 301 },\n { key: 'collection', doc_count: 167 },\n { key: 'account', doc_count: 167 },\n ],\n },\n },\n },\n responseHeader: {\n status: 0,\n QTime: 0,\n params: {\n query: 'collection:foo',\n qin: 'collection:foo',\n fields: 'identifier, collections_raw',\n wt: 'foo',\n start: 0,\n },\n },\n },\n};\n"]}
@@ -0,0 +1 @@
1
+ import '../../src/sort-filter-bar/sort-filter-bar';
@@ -0,0 +1,122 @@
1
+ /* eslint-disable import/no-duplicates */
2
+ import { expect, fixture } from '@open-wc/testing';
3
+ import { html } from 'lit';
4
+ import '../../src/sort-filter-bar/sort-filter-bar';
5
+ describe('Sort direction buttons', () => {
6
+ it('should render sort direction button', async () => {
7
+ var _a;
8
+ const el = await fixture(html `
9
+ <sort-filter-bar> </sort-filter-bar>
10
+ `);
11
+ el.sortDirection = 'asc'; // selected sort
12
+ await el.updateComplete;
13
+ const sortDirectionButtonList = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#sort-direction-selector');
14
+ const sortByAscButton = sortDirectionButtonList === null || sortDirectionButtonList === void 0 ? void 0 : sortDirectionButtonList.querySelector('#sort-ascending-btn');
15
+ expect(sortByAscButton).to.exist;
16
+ // ascending order button is selected
17
+ expect(sortByAscButton === null || sortByAscButton === void 0 ? void 0 : sortByAscButton.getAttribute('class')).to.equal('sort-button selected');
18
+ const sortByDescButton = sortDirectionButtonList === null || sortDirectionButtonList === void 0 ? void 0 : sortDirectionButtonList.querySelector('#sort-descending-btn');
19
+ expect(sortByDescButton).to.exist;
20
+ // descending order button is not selected
21
+ expect(sortByDescButton === null || sortByDescButton === void 0 ? void 0 : sortByDescButton.getAttribute('class')).to.not.equal('sort-button selected');
22
+ });
23
+ });
24
+ describe('Sort selector default buttons', async () => {
25
+ var _a;
26
+ const el = await fixture(html `
27
+ <sort-filter-bar> </sort-filter-bar>
28
+ `);
29
+ const sortSelectorContainer = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#desktop-sort-selector');
30
+ it('should render sort-by label', async () => {
31
+ var _a;
32
+ expect((_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(0)) === null || _a === void 0 ? void 0 : _a.textContent).to.equal('Sort By');
33
+ });
34
+ it('should render default relevance-sort selector', async () => {
35
+ var _a;
36
+ const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(1)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
37
+ expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent).to.contain('Relevance');
38
+ expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.getAttribute('class')).to.equal('selected');
39
+ });
40
+ it('should render default view-sort selector', async () => {
41
+ var _a;
42
+ const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(2)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
43
+ expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent).to.contain('Weekly Views');
44
+ });
45
+ it('should render active view-sort selectors', async () => {
46
+ el.selectedSort = 'alltimeview';
47
+ await el.updateComplete;
48
+ const defaultSortSelector = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.querySelector('a.selected');
49
+ expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent).to.contain('All-time Views');
50
+ });
51
+ it('should render default title-sort selector', async () => {
52
+ var _a;
53
+ const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(3)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
54
+ expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent).to.contain('Title');
55
+ });
56
+ it('should render default date-sort selector', async () => {
57
+ var _a;
58
+ const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(4)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
59
+ expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent).to.contain('Date Published');
60
+ });
61
+ it('should render active date-sort selectors', async () => {
62
+ el.selectedSort = 'datereviewed';
63
+ await el.updateComplete;
64
+ const defaultSortSelector = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.querySelector('a.selected');
65
+ expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent).to.contain('Date Reviewed');
66
+ });
67
+ it('should render default creator-sort selector', async () => {
68
+ var _a;
69
+ const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(5)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
70
+ expect(defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.textContent).to.contain('Creator');
71
+ });
72
+ it('click event on view-sort selector', async () => {
73
+ var _a;
74
+ const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(2)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
75
+ await (defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.click());
76
+ expect(el.selectedSort).to.equal('weeklyview');
77
+ });
78
+ it('click event on title selector', async () => {
79
+ var _a;
80
+ const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(3)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
81
+ await (defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.click());
82
+ expect(el.selectedSort).to.equal('title');
83
+ });
84
+ it('click event on date-sort selector', async () => {
85
+ var _a;
86
+ const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(4)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
87
+ await (defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.click());
88
+ expect(el.selectedSort).to.equal('date');
89
+ });
90
+ it('click event on creator selector', async () => {
91
+ var _a;
92
+ const defaultSortSelector = (_a = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.children.item(5)) === null || _a === void 0 ? void 0 : _a.querySelector('a');
93
+ await (defaultSortSelector === null || defaultSortSelector === void 0 ? void 0 : defaultSortSelector.click());
94
+ expect(el.selectedSort).to.equal('creator');
95
+ });
96
+ });
97
+ describe('Display mode/style buttons', () => {
98
+ it('should render all display mode buttons', async () => {
99
+ var _a, _b, _c, _d, _e;
100
+ const el = await fixture(html `
101
+ <sort-filter-bar> </sort-filter-bar>
102
+ `);
103
+ const displayModeButtonList = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#display-style-selector')) === null || _b === void 0 ? void 0 : _b.querySelector('ul');
104
+ const gridButton = (_c = displayModeButtonList === null || displayModeButtonList === void 0 ? void 0 : displayModeButtonList.children.item(0)) === null || _c === void 0 ? void 0 : _c.querySelector('#grid-button');
105
+ expect(gridButton).to.exist;
106
+ const detailListButton = (_d = displayModeButtonList === null || displayModeButtonList === void 0 ? void 0 : displayModeButtonList.children.item(1)) === null || _d === void 0 ? void 0 : _d.querySelector('#list-detail-button');
107
+ expect(detailListButton).to.exist;
108
+ const compactListButton = (_e = displayModeButtonList === null || displayModeButtonList === void 0 ? void 0 : displayModeButtonList.children.item(2)) === null || _e === void 0 ? void 0 : _e.querySelector('#list-compact-button');
109
+ expect(compactListButton).to.exist;
110
+ });
111
+ it('should active current display mode', async () => {
112
+ var _a, _b, _c;
113
+ const el = await fixture(html `
114
+ <sort-filter-bar> </sort-filter-bar>
115
+ `);
116
+ el.displayMode = 'grid';
117
+ await el.updateComplete;
118
+ const displayModeTitle = (_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#display-style-selector')) === null || _b === void 0 ? void 0 : _b.querySelector('button.active')) === null || _c === void 0 ? void 0 : _c.getAttribute('title');
119
+ expect(displayModeTitle).to.equal('Tile view');
120
+ });
121
+ });
122
+ //# sourceMappingURL=sort-filter-bar.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-filter-bar.test.js","sourceRoot":"","sources":["../../../test/sort-filter-bar/sort-filter-bar.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-duplicates */\nimport { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport type { SortFilterBar } from '../../src/sort-filter-bar/sort-filter-bar';\nimport type { SortField } from '../../src/models';\n\nimport '../../src/sort-filter-bar/sort-filter-bar';\n\ndescribe('Sort direction buttons', () => {\n it('should render sort direction button', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar> </sort-filter-bar>\n `);\n\n el.sortDirection = 'asc'; // selected sort\n await el.updateComplete;\n\n const sortDirectionButtonList = el.shadowRoot?.querySelector(\n '#sort-direction-selector'\n );\n\n const sortByAscButton = sortDirectionButtonList?.querySelector(\n '#sort-ascending-btn'\n );\n expect(sortByAscButton).to.exist;\n // ascending order button is selected\n expect(sortByAscButton?.getAttribute('class')).to.equal(\n 'sort-button selected'\n );\n\n const sortByDescButton = sortDirectionButtonList?.querySelector(\n '#sort-descending-btn'\n );\n expect(sortByDescButton).to.exist;\n // descending order button is not selected\n expect(sortByDescButton?.getAttribute('class')).to.not.equal(\n 'sort-button selected'\n );\n });\n});\n\ndescribe('Sort selector default buttons', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar> </sort-filter-bar>\n `);\n const sortSelectorContainer = el.shadowRoot?.querySelector(\n '#desktop-sort-selector'\n );\n\n it('should render sort-by label', async () => {\n expect(sortSelectorContainer?.children.item(0)?.textContent).to.equal(\n 'Sort By'\n );\n });\n\n it('should render default relevance-sort selector', async () => {\n const defaultSortSelector = sortSelectorContainer?.children\n .item(1)\n ?.querySelector('a');\n expect(defaultSortSelector?.textContent).to.contain('Relevance');\n expect(defaultSortSelector?.getAttribute('class')).to.equal('selected');\n });\n\n it('should render default view-sort selector', async () => {\n const defaultSortSelector = sortSelectorContainer?.children\n .item(2)\n ?.querySelector('a');\n expect(defaultSortSelector?.textContent).to.contain('Weekly Views');\n });\n\n it('should render active view-sort selectors', async () => {\n el.selectedSort = 'alltimeview' as SortField;\n await el.updateComplete;\n\n const defaultSortSelector =\n sortSelectorContainer?.querySelector('a.selected');\n expect(defaultSortSelector?.textContent).to.contain('All-time Views');\n });\n\n it('should render default title-sort selector', async () => {\n const defaultSortSelector = sortSelectorContainer?.children\n .item(3)\n ?.querySelector('a');\n expect(defaultSortSelector?.textContent).to.contain('Title');\n });\n\n it('should render default date-sort selector', async () => {\n const defaultSortSelector = sortSelectorContainer?.children\n .item(4)\n ?.querySelector('a');\n expect(defaultSortSelector?.textContent).to.contain('Date Published');\n });\n\n it('should render active date-sort selectors', async () => {\n el.selectedSort = 'datereviewed' as SortField;\n await el.updateComplete;\n\n const defaultSortSelector =\n sortSelectorContainer?.querySelector('a.selected');\n expect(defaultSortSelector?.textContent).to.contain('Date Reviewed');\n });\n\n it('should render default creator-sort selector', async () => {\n const defaultSortSelector = sortSelectorContainer?.children\n .item(5)\n ?.querySelector('a');\n expect(defaultSortSelector?.textContent).to.contain('Creator');\n });\n\n it('click event on view-sort selector', async () => {\n const defaultSortSelector = sortSelectorContainer?.children\n .item(2)\n ?.querySelector('a');\n\n await defaultSortSelector?.click();\n expect(el.selectedSort).to.equal('weeklyview');\n });\n\n it('click event on title selector', async () => {\n const defaultSortSelector = sortSelectorContainer?.children\n .item(3)\n ?.querySelector('a');\n\n await defaultSortSelector?.click();\n expect(el.selectedSort).to.equal('title');\n });\n\n it('click event on date-sort selector', async () => {\n const defaultSortSelector = sortSelectorContainer?.children\n .item(4)\n ?.querySelector('a');\n\n await defaultSortSelector?.click();\n expect(el.selectedSort).to.equal('date');\n });\n\n it('click event on creator selector', async () => {\n const defaultSortSelector = sortSelectorContainer?.children\n .item(5)\n ?.querySelector('a');\n\n await defaultSortSelector?.click();\n expect(el.selectedSort).to.equal('creator');\n });\n});\n\ndescribe('Display mode/style buttons', () => {\n it('should render all display mode buttons', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar> </sort-filter-bar>\n `);\n\n const displayModeButtonList = el.shadowRoot\n ?.querySelector('#display-style-selector')\n ?.querySelector('ul');\n\n const gridButton = displayModeButtonList?.children\n .item(0)\n ?.querySelector('#grid-button');\n expect(gridButton).to.exist;\n\n const detailListButton = displayModeButtonList?.children\n .item(1)\n ?.querySelector('#list-detail-button');\n expect(detailListButton).to.exist;\n\n const compactListButton = displayModeButtonList?.children\n .item(2)\n ?.querySelector('#list-compact-button');\n expect(compactListButton).to.exist;\n });\n\n it('should active current display mode', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar> </sort-filter-bar>\n `);\n\n el.displayMode = 'grid';\n await el.updateComplete;\n\n const displayModeTitle = el.shadowRoot\n ?.querySelector('#display-style-selector')\n ?.querySelector('button.active')\n ?.getAttribute('title');\n expect(displayModeTitle).to.equal('Tile view');\n });\n});\n"]}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "The Internet Archive Collection Browser.",
4
4
  "license": "AGPL-3.0-only",
5
5
  "author": "Internet Archive",
6
- "version": "0.2.15-0",
6
+ "version": "0.2.16-alpha1",
7
7
  "main": "dist/index.js",
8
8
  "module": "dist/index.js",
9
9
  "scripts": {
@@ -26,8 +26,10 @@
26
26
  "@internetarchive/feature-feedback": "^0.1.4",
27
27
  "@internetarchive/field-parsers": "^0.1.3",
28
28
  "@internetarchive/histogram-date-range": "^0.1.7",
29
+ "@internetarchive/ia-activity-indicator": "^0.0.3",
29
30
  "@internetarchive/infinite-scroller": "^0.1.3",
30
31
  "@internetarchive/local-cache": "^0.2.1",
32
+ "@internetarchive/modal-manager": "^0.2.6",
31
33
  "@internetarchive/search-service": "^0.3.4",
32
34
  "@internetarchive/shared-resize-observer": "^0.2.0",
33
35
  "@lit/localize": "^0.11.2",
package/src/app-root.ts CHANGED
@@ -4,6 +4,7 @@ import { html, css, LitElement, PropertyValues } from 'lit';
4
4
  import { customElement, query, state } from 'lit/decorators.js';
5
5
  import { SharedResizeObserver } from '@internetarchive/shared-resize-observer';
6
6
  import { CollectionNameCache } from '@internetarchive/collection-name-cache';
7
+ import type { ModalManagerInterface } from '@internetarchive/modal-manager';
7
8
  import type { CollectionBrowser } from '../src/collection-browser';
8
9
  import '../src/collection-browser';
9
10
 
@@ -40,6 +41,8 @@ export class AppRoot extends LitElement {
40
41
 
41
42
  @query('collection-browser') private collectionBrowser!: CollectionBrowser;
42
43
 
44
+ @query('modal-manager') private modalManager!: ModalManagerInterface;
45
+
43
46
  private searchPressed(e: Event) {
44
47
  e.preventDefault();
45
48
  this.searchQuery = this.baseQueryField.value;
@@ -171,11 +174,13 @@ export class AppRoot extends LitElement {
171
174
  .collectionNameCache=${this.collectionNameCache}
172
175
  .showHistogramDatePicker=${true}
173
176
  .loggedIn=${this.loggedIn}
177
+ .modalManager=${this.modalManager}
174
178
  @visiblePageChanged=${this.visiblePageChanged}
175
179
  @baseQueryChanged=${this.baseQueryChanged}
176
180
  >
177
181
  </collection-browser>
178
182
  </div>
183
+ <modal-manager></modal-manager>
179
184
  `;
180
185
  }
181
186
 
@@ -255,6 +260,28 @@ export class AppRoot extends LitElement {
255
260
  static styles = css`
256
261
  :host {
257
262
  display: block;
263
+ --primaryButtonBGColor: #194880;
264
+ }
265
+
266
+ /* add the following styles to ensure proper modal visibility */
267
+ body.modal-manager-open {
268
+ overflow: hidden;
269
+ }
270
+ modal-manager {
271
+ display: none;
272
+ }
273
+ modal-manager[mode='open'] {
274
+ display: block;
275
+ }
276
+ modal-manager.more-search-facets {
277
+ --modalWidth: 85rem;
278
+ --modalBorder: 2px solid var(--primaryButtonBGColor, #194880);
279
+ --modalTitleLineHeight: 4rem;
280
+ --modalTitleFontSize: 1.8rem;
281
+ --modalCornerRadius: 0;
282
+ --modalBottomPadding: 0;
283
+ --modalScrollOffset: 0;
284
+ --modalCornerRadius: 0.5rem;
258
285
  }
259
286
 
260
287
  input,
@@ -263,7 +290,7 @@ export class AppRoot extends LitElement {
263
290
  }
264
291
 
265
292
  collection-browser {
266
- margin-top: 30rem;
293
+ margin-top: 20rem;
267
294
  }
268
295
 
269
296
  #base-query-field {
@@ -274,7 +301,7 @@ export class AppRoot extends LitElement {
274
301
  position: fixed;
275
302
  top: 0;
276
303
  left: 0;
277
- z-index: 10;
304
+ z-index: 1;
278
305
  -webkit-backdrop-filter: blur(10px);
279
306
  backdrop-filter: blur(10px);
280
307
  padding: 0.5rem 1rem;
@@ -0,0 +1,10 @@
1
+ import { svg } from 'lit';
2
+
3
+ export default svg`
4
+ <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
5
+ <path
6
+ d="m20.1116715 50.0035012-.1116715-.1085359 43.1159942-46.61088155c2.401537-2.18938917 4.6902018-3.28408375 6.8659943-3.28408375s4.1642651.63837733 5.9654178 1.91513199c1.8011528 1.27675467 3.1520173 2.97248092 4.0525937 5.08717877l-39.4020173 42.99768924 39.4020173 42.9976892c-.9005764 2.1146979-2.2514409 3.8104241-4.0525937 5.0871788-1.8011527 1.2767547-3.7896253 1.915132-5.9654178 1.915132-2.1013449 0-4.3900096-1.0573489-6.8659943-3.1720468l-43.1159942-46.7194174z"
7
+ />
8
+ <title>Go left icon</title>
9
+ </svg>
10
+ `;
@@ -0,0 +1,10 @@
1
+ import { svg } from 'lit';
2
+
3
+ export default svg`
4
+ <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
5
+ <path
6
+ d="m79.8883285 50.0035012.1116715-.1085359-43.1159942-46.61088155c-2.401537-2.18938917-4.6902018-3.28408375-6.8659943-3.28408375s-4.1642651.63837733-5.9654178 1.91513199c-1.8011528 1.27675467-3.1520173 2.97248092-4.0525937 5.08717877l39.4020173 42.99768924-39.4020173 42.9976892c.9005764 2.1146979 2.2514409 3.8104241 4.0525937 5.0871788 1.8011527 1.2767547 3.7896253 1.915132 5.9654178 1.915132 2.1013449 0 4.3900096-1.0573489 6.8659943-3.1720468l43.1159942-46.7194174z"
7
+ />
8
+ <title>Go right icon</title>
9
+ </svg>
10
+ `;
@@ -27,6 +27,7 @@ import type {
27
27
  } from '@internetarchive/shared-resize-observer';
28
28
  import '@internetarchive/infinite-scroller';
29
29
  import type { CollectionNameCacheInterface } from '@internetarchive/collection-name-cache';
30
+ import type { ModalManagerInterface } from '@internetarchive/modal-manager';
30
31
  import './tiles/tile-dispatcher';
31
32
  import './tiles/collection-browser-loading-tile';
32
33
  import './sort-filter-bar/sort-filter-bar';
@@ -115,6 +116,8 @@ export class CollectionBrowser
115
116
 
116
117
  @property({ type: Boolean }) loggedIn = false;
117
118
 
119
+ @property({ type: Object }) modalManager?: ModalManagerInterface = undefined;
120
+
118
121
  /**
119
122
  * If item management UI active
120
123
  */
@@ -425,6 +428,7 @@ export class CollectionBrowser
425
428
  <collection-facets
426
429
  @facetsChanged=${this.facetsChanged}
427
430
  @histogramDateRangeUpdated=${this.histogramDateRangeUpdated}
431
+ .searchService=${this.searchService}
428
432
  .aggregations=${this.aggregations}
429
433
  .fullYearsHistogramAggregation=${this.fullYearsHistogramAggregation}
430
434
  .minSelectedDate=${this.minSelectedDate}
@@ -433,6 +437,8 @@ export class CollectionBrowser
433
437
  .collectionNameCache=${this.collectionNameCache}
434
438
  .languageCodeHandler=${this.languageCodeHandler}
435
439
  .showHistogramDatePicker=${this.showHistogramDatePicker}
440
+ .fullQuery=${this.fullQuery}
441
+ .modalManager=${this.modalManager}
436
442
  ?collapsableFacets=${this.mobileView}
437
443
  ?facetsLoading=${this.facetDataLoading}
438
444
  ?fullYearAggregationLoading=${this.fullYearAggregationLoading}
@@ -497,7 +503,8 @@ export class CollectionBrowser
497
503
  if (
498
504
  changed.has('displayMode') ||
499
505
  changed.has('baseNavigationUrl') ||
500
- changed.has('baseImageUrl')
506
+ changed.has('baseImageUrl') ||
507
+ changed.has('loggedIn')
501
508
  ) {
502
509
  this.infiniteScroller?.reload();
503
510
  }
@@ -1208,17 +1215,6 @@ export class CollectionBrowser
1208
1215
  width: 18rem;
1209
1216
  padding-right: 12px;
1210
1217
  padding-right: 1rem;
1211
- padding-bottom: 20px;
1212
- top: 0;
1213
- position: sticky;
1214
- max-height: 100vh;
1215
- overflow: scroll;
1216
- -ms-overflow-style: none; /* hide scrollbar IE and Edge */
1217
- scrollbar-width: none; /* hide scrollbar Firefox */
1218
- }
1219
-
1220
- #left-column::-webkit-scrollbar {
1221
- display: none;
1222
1218
  }
1223
1219
 
1224
1220
  .mobile #left-column {
@@ -1236,7 +1232,6 @@ export class CollectionBrowser
1236
1232
  max-height: 0;
1237
1233
  transition: max-height 0.2s ease-in-out;
1238
1234
  z-index: 1;
1239
- padding-bottom: 2rem;
1240
1235
  }
1241
1236
 
1242
1237
  .mobile #facets-container {