@internetarchive/collection-browser 0.3.7 → 0.3.8
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/.editorconfig +29 -29
- package/.github/workflows/ci.yml +26 -26
- package/.github/workflows/gh-pages-main.yml +39 -39
- package/.github/workflows/npm-publish.yml +39 -39
- package/.github/workflows/pr-preview.yml +38 -38
- package/.husky/pre-commit +4 -4
- package/LICENSE +661 -661
- package/README.md +83 -83
- package/dist/index.d.ts +9 -9
- package/dist/index.js +9 -9
- package/dist/src/app-root.d.ts +48 -47
- package/dist/src/app-root.js +271 -250
- package/dist/src/app-root.js.map +1 -1
- package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
- package/dist/src/assets/img/icons/arrow-left.js +2 -2
- package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
- package/dist/src/assets/img/icons/arrow-right.js +2 -2
- package/dist/src/assets/img/icons/chevron.d.ts +2 -2
- package/dist/src/assets/img/icons/chevron.js +2 -2
- package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
- package/dist/src/assets/img/icons/empty-query.js +2 -2
- package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
- package/dist/src/assets/img/icons/eye-closed.js +2 -2
- package/dist/src/assets/img/icons/eye.d.ts +2 -2
- package/dist/src/assets/img/icons/eye.js +2 -2
- package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
- package/dist/src/assets/img/icons/favorite-filled.js +2 -2
- package/dist/src/assets/img/icons/login-required.d.ts +1 -1
- package/dist/src/assets/img/icons/login-required.js +2 -2
- package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/account.js +2 -2
- package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
- package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
- package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/data.js +2 -2
- package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
- package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/film.js +2 -2
- package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/images.js +2 -2
- package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
- package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/software.js +2 -2
- package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
- package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
- package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/video.js +2 -2
- package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/web.js +2 -2
- package/dist/src/assets/img/icons/null-result.d.ts +2 -2
- package/dist/src/assets/img/icons/null-result.js +2 -2
- package/dist/src/assets/img/icons/restricted.d.ts +1 -1
- package/dist/src/assets/img/icons/restricted.js +2 -2
- package/dist/src/assets/img/icons/reviews.d.ts +1 -1
- package/dist/src/assets/img/icons/reviews.js +2 -2
- package/dist/src/assets/img/icons/upload.d.ts +1 -1
- package/dist/src/assets/img/icons/upload.js +2 -2
- package/dist/src/assets/img/icons/views.d.ts +1 -1
- package/dist/src/assets/img/icons/views.js +2 -2
- package/dist/src/circular-activity-indicator.d.ts +5 -5
- package/dist/src/circular-activity-indicator.js +17 -17
- package/dist/src/collection-browser.d.ts +278 -246
- package/dist/src/collection-browser.js +1105 -1031
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
- package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
- package/dist/src/collection-facets/facets-template.d.ts +16 -16
- package/dist/src/collection-facets/facets-template.js +125 -125
- package/dist/src/collection-facets/more-facets-content.d.ts +76 -76
- package/dist/src/collection-facets/more-facets-content.js +353 -353
- package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
- package/dist/src/collection-facets/more-facets-pagination.js +192 -192
- package/dist/src/collection-facets.d.ts +77 -77
- package/dist/src/collection-facets.js +388 -389
- package/dist/src/collection-facets.js.map +1 -1
- package/dist/src/empty-placeholder.d.ts +11 -11
- package/dist/src/empty-placeholder.js +42 -42
- package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
- package/dist/src/language-code-handler/language-code-handler.js +26 -26
- package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
- package/dist/src/language-code-handler/language-code-mapping.js +562 -562
- package/dist/src/mediatype/mediatype-config.d.ts +3 -3
- package/dist/src/mediatype/mediatype-config.js +85 -85
- package/dist/src/models.d.ts +103 -103
- package/dist/src/models.js +117 -117
- package/dist/src/restoration-state-handler.d.ts +46 -46
- package/dist/src/restoration-state-handler.js +230 -230
- package/dist/src/sort-filter-bar/alpha-bar.d.ts +9 -9
- package/dist/src/sort-filter-bar/alpha-bar.js +41 -41
- package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/compact.js +2 -2
- package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/list.js +2 -2
- package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
- package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/tile.js +2 -2
- package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +107 -107
- package/dist/src/sort-filter-bar/sort-filter-bar.js +423 -423
- package/dist/src/styles/item-image-styles.d.ts +8 -8
- package/dist/src/styles/item-image-styles.js +9 -9
- package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
- package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
- package/dist/src/tiles/grid/account-tile.d.ts +8 -8
- package/dist/src/tiles/grid/account-tile.js +20 -20
- package/dist/src/tiles/grid/collection-tile.d.ts +7 -7
- package/dist/src/tiles/grid/collection-tile.js +23 -23
- package/dist/src/tiles/grid/item-tile.d.ts +24 -24
- package/dist/src/tiles/grid/item-tile.js +87 -87
- package/dist/src/tiles/grid/tile-stats.d.ts +10 -10
- package/dist/src/tiles/grid/tile-stats.js +40 -40
- package/dist/src/tiles/image-block.d.ts +17 -17
- package/dist/src/tiles/image-block.js +69 -69
- package/dist/src/tiles/item-image.d.ts +31 -31
- package/dist/src/tiles/item-image.js +103 -103
- package/dist/src/tiles/list/account-label.d.ts +1 -1
- package/dist/src/tiles/list/account-label.js +6 -6
- package/dist/src/tiles/list/date-label.d.ts +1 -1
- package/dist/src/tiles/list/date-label.js +12 -12
- package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
- package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
- package/dist/src/tiles/list/tile-list-compact.d.ts +21 -21
- package/dist/src/tiles/list/tile-list-compact.js +93 -93
- package/dist/src/tiles/list/tile-list.d.ts +50 -50
- package/dist/src/tiles/list/tile-list.js +275 -272
- package/dist/src/tiles/list/tile-list.js.map +1 -1
- package/dist/src/tiles/mediatype-icon.d.ts +9 -9
- package/dist/src/tiles/mediatype-icon.js +47 -47
- package/dist/src/tiles/overlay/icon-overlay.d.ts +7 -7
- package/dist/src/tiles/overlay/icon-overlay.js +30 -30
- package/dist/src/tiles/overlay/text-overlay.d.ts +8 -8
- package/dist/src/tiles/overlay/text-overlay.js +31 -31
- package/dist/src/tiles/text-snippet-block.d.ts +29 -29
- package/dist/src/tiles/text-snippet-block.js +81 -81
- package/dist/src/tiles/tile-dispatcher.d.ts +36 -36
- package/dist/src/tiles/tile-dispatcher.js +128 -128
- package/dist/src/utils/analytics-events.d.ts +22 -22
- package/dist/src/utils/analytics-events.js +24 -24
- package/dist/src/utils/format-count.d.ts +7 -7
- package/dist/src/utils/format-count.js +76 -76
- package/dist/src/utils/format-date.d.ts +2 -2
- package/dist/src/utils/format-date.js +23 -23
- package/dist/test/collection-browser.test.d.ts +1 -1
- package/dist/test/collection-browser.test.js +583 -444
- package/dist/test/collection-browser.test.js.map +1 -1
- package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
- package/dist/test/collection-facets/facets-template.test.js +62 -62
- package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
- package/dist/test/collection-facets/more-facets-content.test.js +114 -114
- package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
- package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
- package/dist/test/collection-facets.test.d.ts +2 -2
- package/dist/test/collection-facets.test.js +544 -498
- package/dist/test/collection-facets.test.js.map +1 -1
- package/dist/test/empty-placeholder.test.d.ts +1 -1
- package/dist/test/empty-placeholder.test.js +33 -33
- package/dist/test/icon-overlay.test.d.ts +1 -1
- package/dist/test/icon-overlay.test.js +24 -24
- package/dist/test/image-block.test.d.ts +1 -1
- package/dist/test/image-block.test.js +48 -48
- package/dist/test/item-image.test.d.ts +1 -1
- package/dist/test/item-image.test.js +56 -56
- package/dist/test/mediatype-config.test.d.ts +1 -1
- package/dist/test/mediatype-config.test.js +16 -16
- package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
- package/dist/test/mocks/mock-analytics-handler.js +15 -15
- package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
- package/dist/test/mocks/mock-collection-name-cache.js +13 -13
- package/dist/test/mocks/mock-search-responses.d.ts +10 -8
- package/dist/test/mocks/mock-search-responses.js +271 -198
- package/dist/test/mocks/mock-search-responses.js.map +1 -1
- package/dist/test/mocks/mock-search-service.d.ts +13 -13
- package/dist/test/mocks/mock-search-service.js +36 -32
- package/dist/test/mocks/mock-search-service.js.map +1 -1
- package/dist/test/restoration-state-handler.test.d.ts +1 -1
- package/dist/test/restoration-state-handler.test.js +126 -126
- package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js +113 -113
- package/dist/test/text-overlay.test.d.ts +1 -1
- package/dist/test/text-overlay.test.js +41 -41
- package/dist/test/text-snippet-block.test.d.ts +1 -1
- package/dist/test/text-snippet-block.test.js +57 -57
- package/dist/test/tile-stats.test.d.ts +1 -1
- package/dist/test/tile-stats.test.js +33 -33
- package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
- package/dist/test/tiles/grid/item-tile.test.js +107 -107
- package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
- package/dist/test/tiles/list/tile-list-compact.test.js +92 -92
- package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
- package/dist/test/tiles/list/tile-list.test.js +96 -67
- package/dist/test/tiles/list/tile-list.test.js.map +1 -1
- package/dist/test/utils/format-count.test.d.ts +1 -1
- package/dist/test/utils/format-count.test.js +23 -23
- package/dist/test/utils/format-date.test.d.ts +1 -1
- package/dist/test/utils/format-date.test.js +17 -17
- package/index.html +24 -24
- package/local.archive.org.cert +86 -86
- package/local.archive.org.key +27 -27
- package/package.json +3 -3
- package/renovate.json +6 -6
- package/src/app-root.ts +32 -9
- package/src/collection-browser.ts +130 -35
- package/src/collection-facets.ts +2 -3
- package/src/tiles/list/tile-list.ts +6 -2
- package/test/collection-browser.test.ts +207 -0
- package/test/collection-facets.test.ts +67 -0
- package/test/mocks/mock-search-responses.ts +82 -0
- package/test/mocks/mock-search-service.ts +6 -0
- package/test/tiles/list/tile-list.test.ts +40 -0
- package/tsconfig.json +21 -21
- package/web-dev-server.config.mjs +30 -30
- package/web-test-runner.config.mjs +41 -41
|
@@ -1,33 +1,37 @@
|
|
|
1
|
-
import { mockSuccessSingleResult, mockSuccessMultipleResults, getMockSuccessSingleResultWithSort, mockSuccessLoggedInResult, mockSuccessNoPreviewResult, mockSuccessLoggedInAndNoPreviewResult, } from './mock-search-responses';
|
|
2
|
-
export class MockSearchService {
|
|
3
|
-
constructor({ asyncResponse = false, resultsSpy = () => { } } = {}) {
|
|
4
|
-
this.asyncResponse = asyncResponse;
|
|
5
|
-
this.resultsSpy = resultsSpy;
|
|
6
|
-
}
|
|
7
|
-
async search(params, searchType) {
|
|
8
|
-
var _a;
|
|
9
|
-
this.searchParams = params;
|
|
10
|
-
this.searchType = searchType;
|
|
11
|
-
if (this.asyncResponse) {
|
|
12
|
-
// Add an artificial 1-tick delay
|
|
13
|
-
await new Promise(res => {
|
|
14
|
-
setTimeout(res, 0);
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
switch ((_a = this.searchParams) === null || _a === void 0 ? void 0 : _a.query) {
|
|
18
|
-
case 'single-result':
|
|
19
|
-
return mockSuccessSingleResult;
|
|
20
|
-
case '
|
|
21
|
-
return
|
|
22
|
-
case '
|
|
23
|
-
return
|
|
24
|
-
case 'loggedin
|
|
25
|
-
return
|
|
26
|
-
case '
|
|
27
|
-
return
|
|
28
|
-
|
|
29
|
-
return
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
1
|
+
import { mockSuccessSingleResult, mockSuccessMultipleResults, getMockSuccessSingleResultWithSort, mockSuccessLoggedInResult, mockSuccessNoPreviewResult, mockSuccessLoggedInAndNoPreviewResult, mockSuccessWithYearHistogramAggs, mockSuccessMultiLineDescription, } from './mock-search-responses';
|
|
2
|
+
export class MockSearchService {
|
|
3
|
+
constructor({ asyncResponse = false, resultsSpy = () => { } } = {}) {
|
|
4
|
+
this.asyncResponse = asyncResponse;
|
|
5
|
+
this.resultsSpy = resultsSpy;
|
|
6
|
+
}
|
|
7
|
+
async search(params, searchType) {
|
|
8
|
+
var _a;
|
|
9
|
+
this.searchParams = params;
|
|
10
|
+
this.searchType = searchType;
|
|
11
|
+
if (this.asyncResponse) {
|
|
12
|
+
// Add an artificial 1-tick delay
|
|
13
|
+
await new Promise(res => {
|
|
14
|
+
setTimeout(res, 0);
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
switch ((_a = this.searchParams) === null || _a === void 0 ? void 0 : _a.query) {
|
|
18
|
+
case 'single-result':
|
|
19
|
+
return mockSuccessSingleResult;
|
|
20
|
+
case 'years':
|
|
21
|
+
return mockSuccessWithYearHistogramAggs;
|
|
22
|
+
case 'multi-line-description':
|
|
23
|
+
return mockSuccessMultiLineDescription;
|
|
24
|
+
case 'loggedin':
|
|
25
|
+
return mockSuccessLoggedInResult;
|
|
26
|
+
case 'no-preview':
|
|
27
|
+
return mockSuccessNoPreviewResult;
|
|
28
|
+
case 'loggedin-no-preview':
|
|
29
|
+
return mockSuccessLoggedInAndNoPreviewResult;
|
|
30
|
+
case 'with-sort':
|
|
31
|
+
return getMockSuccessSingleResultWithSort(this.resultsSpy);
|
|
32
|
+
default:
|
|
33
|
+
return mockSuccessMultipleResults;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
33
37
|
//# sourceMappingURL=mock-search-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-search-service.js","sourceRoot":"","sources":["../../../test/mocks/mock-search-service.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,kCAAkC,EAClC,yBAAyB,EACzB,0BAA0B,EAC1B,qCAAqC,
|
|
1
|
+
{"version":3,"file":"mock-search-service.js","sourceRoot":"","sources":["../../../test/mocks/mock-search-service.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,kCAAkC,EAClC,yBAAyB,EACzB,0BAA0B,EAC1B,qCAAqC,EACrC,gCAAgC,EAChC,+BAA+B,GAChC,MAAM,yBAAyB,CAAC;AAEjC,MAAM,OAAO,iBAAiB;IAS5B,YAAY,EAAE,aAAa,GAAG,KAAK,EAAE,UAAU,GAAG,GAAG,EAAE,GAAE,CAAC,EAAE,GAAG,EAAE;QAC/D,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM,CACV,MAAoB,EACpB,UAAsB;;QAEtB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,iCAAiC;YACjC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;gBACtB,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;SACJ;QAED,QAAQ,MAAA,IAAI,CAAC,YAAY,0CAAE,KAAK,EAAE;YAChC,KAAK,eAAe;gBAClB,OAAO,uBAAuB,CAAC;YACjC,KAAK,OAAO;gBACV,OAAO,gCAAgC,CAAC;YAC1C,KAAK,wBAAwB;gBAC3B,OAAO,+BAA+B,CAAC;YACzC,KAAK,UAAU;gBACb,OAAO,yBAAyB,CAAC;YACnC,KAAK,YAAY;gBACf,OAAO,0BAA0B,CAAC;YACpC,KAAK,qBAAqB;gBACxB,OAAO,qCAAqC,CAAC;YAC/C,KAAK,WAAW;gBACd,OAAO,kCAAkC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7D;gBACE,OAAO,0BAA0B,CAAC;SACrC;IACH,CAAC;CACF","sourcesContent":["import type { Result } from '@internetarchive/result-type';\nimport type {\n SearchParams,\n SearchResponse,\n SearchServiceInterface,\n SearchServiceError,\n SearchType,\n} from '@internetarchive/search-service';\nimport {\n mockSuccessSingleResult,\n mockSuccessMultipleResults,\n getMockSuccessSingleResultWithSort,\n mockSuccessLoggedInResult,\n mockSuccessNoPreviewResult,\n mockSuccessLoggedInAndNoPreviewResult,\n mockSuccessWithYearHistogramAggs,\n mockSuccessMultiLineDescription,\n} from './mock-search-responses';\n\nexport class MockSearchService implements SearchServiceInterface {\n searchParams?: SearchParams;\n\n searchType?: SearchType;\n\n asyncResponse: boolean;\n\n resultsSpy: Function;\n\n constructor({ asyncResponse = false, resultsSpy = () => {} } = {}) {\n this.asyncResponse = asyncResponse;\n this.resultsSpy = resultsSpy;\n }\n\n async search(\n params: SearchParams,\n searchType: SearchType\n ): Promise<Result<SearchResponse, SearchServiceError>> {\n this.searchParams = params;\n this.searchType = searchType;\n\n if (this.asyncResponse) {\n // Add an artificial 1-tick delay\n await new Promise(res => {\n setTimeout(res, 0);\n });\n }\n\n switch (this.searchParams?.query) {\n case 'single-result':\n return mockSuccessSingleResult;\n case 'years':\n return mockSuccessWithYearHistogramAggs;\n case 'multi-line-description':\n return mockSuccessMultiLineDescription;\n case 'loggedin':\n return mockSuccessLoggedInResult;\n case 'no-preview':\n return mockSuccessNoPreviewResult;\n case 'loggedin-no-preview':\n return mockSuccessLoggedInAndNoPreviewResult;\n case 'with-sort':\n return getMockSuccessSingleResultWithSort(this.resultsSpy);\n default:\n return mockSuccessMultipleResults;\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
@@ -1,127 +1,127 @@
|
|
|
1
|
-
import { SearchType } from '@internetarchive/search-service';
|
|
2
|
-
import { expect } from '@open-wc/testing';
|
|
3
|
-
import { RestorationStateHandler } from '../src/restoration-state-handler';
|
|
4
|
-
describe('Restoration state handler', () => {
|
|
5
|
-
it('should restore query from URL', async () => {
|
|
6
|
-
const handler = new RestorationStateHandler({ context: 'search' });
|
|
7
|
-
const url = new URL(window.location.href);
|
|
8
|
-
url.search = '?query=boop';
|
|
9
|
-
window.history.replaceState({ path: url.href }, '', url.href);
|
|
10
|
-
const restorationState = handler.getRestorationState();
|
|
11
|
-
expect(restorationState.baseQuery).to.equal('boop');
|
|
12
|
-
});
|
|
13
|
-
it('should restore full text search type from URL', async () => {
|
|
14
|
-
const handler = new RestorationStateHandler({ context: 'search' });
|
|
15
|
-
const url = new URL(window.location.href);
|
|
16
|
-
url.search = '?sin=TXT';
|
|
17
|
-
window.history.replaceState({ path: url.href }, '', url.href);
|
|
18
|
-
const restorationState = handler.getRestorationState();
|
|
19
|
-
expect(restorationState.searchType).to.equal(SearchType.FULLTEXT);
|
|
20
|
-
});
|
|
21
|
-
it('should restore page number from URL', async () => {
|
|
22
|
-
const handler = new RestorationStateHandler({ context: 'search' });
|
|
23
|
-
const url = new URL(window.location.href);
|
|
24
|
-
url.search = '?page=42';
|
|
25
|
-
window.history.replaceState({ path: url.href }, '', url.href);
|
|
26
|
-
const restorationState = handler.getRestorationState();
|
|
27
|
-
expect(restorationState.currentPage).to.equal(42);
|
|
28
|
-
});
|
|
29
|
-
it('should restore selected year facets from URL', async () => {
|
|
30
|
-
const handler = new RestorationStateHandler({ context: 'search' });
|
|
31
|
-
const url = new URL(window.location.href);
|
|
32
|
-
url.search = '?and[]=year:"2018"';
|
|
33
|
-
window.history.replaceState({ path: url.href }, '', url.href);
|
|
34
|
-
const restorationState = handler.getRestorationState();
|
|
35
|
-
expect(restorationState.selectedFacets.year['2018'].state).to.equal('selected');
|
|
36
|
-
});
|
|
37
|
-
it('should restore selected date range facets from URL', async () => {
|
|
38
|
-
const handler = new RestorationStateHandler({ context: 'search' });
|
|
39
|
-
const url = new URL(window.location.href);
|
|
40
|
-
url.search = '?and[]=year:"2018+TO+2021"';
|
|
41
|
-
window.history.replaceState({ path: url.href }, '', url.href);
|
|
42
|
-
const restorationState = handler.getRestorationState();
|
|
43
|
-
expect(restorationState.minSelectedDate).to.equal('2018');
|
|
44
|
-
expect(restorationState.maxSelectedDate).to.equal('2021');
|
|
45
|
-
expect(restorationState.dateRangeQueryClause).to.equal('year:"2018 TO 2021"');
|
|
46
|
-
});
|
|
47
|
-
it('should restore creator filter from URL', async () => {
|
|
48
|
-
const handler = new RestorationStateHandler({ context: 'search' });
|
|
49
|
-
const url = new URL(window.location.href);
|
|
50
|
-
url.search = '?and[]=firstCreator:F';
|
|
51
|
-
window.history.replaceState({ path: url.href }, '', url.href);
|
|
52
|
-
const restorationState = handler.getRestorationState();
|
|
53
|
-
expect(restorationState.selectedCreatorFilter).to.equal('F');
|
|
54
|
-
});
|
|
55
|
-
it('should restore title filter from URL', async () => {
|
|
56
|
-
const handler = new RestorationStateHandler({ context: 'search' });
|
|
57
|
-
const url = new URL(window.location.href);
|
|
58
|
-
url.search = '?and[]=firstTitle:F';
|
|
59
|
-
window.history.replaceState({ path: url.href }, '', url.href);
|
|
60
|
-
const restorationState = handler.getRestorationState();
|
|
61
|
-
expect(restorationState.selectedTitleFilter).to.equal('F');
|
|
62
|
-
});
|
|
63
|
-
it('should restore other selected facets from URL', async () => {
|
|
64
|
-
const handler = new RestorationStateHandler({ context: 'search' });
|
|
65
|
-
const url = new URL(window.location.href);
|
|
66
|
-
url.search = '?and[]=subject:"foo"';
|
|
67
|
-
window.history.replaceState({ path: url.href }, '', url.href);
|
|
68
|
-
const restorationState = handler.getRestorationState();
|
|
69
|
-
expect(restorationState.selectedFacets.subject.foo.state).to.equal('selected');
|
|
70
|
-
});
|
|
71
|
-
it('should restore negative facets from URL', async () => {
|
|
72
|
-
const handler = new RestorationStateHandler({ context: 'search' });
|
|
73
|
-
const url = new URL(window.location.href);
|
|
74
|
-
url.search = '?not[]=year:2018';
|
|
75
|
-
window.history.replaceState({ path: url.href }, '', url.href);
|
|
76
|
-
const restorationState = handler.getRestorationState();
|
|
77
|
-
expect(restorationState.selectedFacets.year['2018'].state).to.equal('hidden');
|
|
78
|
-
});
|
|
79
|
-
it('should restore multiple selected/negative facets from URL', async () => {
|
|
80
|
-
const handler = new RestorationStateHandler({ context: 'search' });
|
|
81
|
-
const url = new URL(window.location.href);
|
|
82
|
-
url.search =
|
|
83
|
-
'?and[]=collection:"foo"&and[]=collection:"bar"¬[]=collection:"baz"¬[]=collection:"boop"';
|
|
84
|
-
window.history.replaceState({ path: url.href }, '', url.href);
|
|
85
|
-
const restorationState = handler.getRestorationState();
|
|
86
|
-
expect(restorationState.selectedFacets.collection.foo.state).to.equal('selected');
|
|
87
|
-
expect(restorationState.selectedFacets.collection.bar.state).to.equal('selected');
|
|
88
|
-
expect(restorationState.selectedFacets.collection.baz.state).to.equal('hidden');
|
|
89
|
-
expect(restorationState.selectedFacets.collection.boop.state).to.equal('hidden');
|
|
90
|
-
});
|
|
91
|
-
it('negative facets take precedence if both present in URL', async () => {
|
|
92
|
-
const handler = new RestorationStateHandler({ context: 'search' });
|
|
93
|
-
const url = new URL(window.location.href);
|
|
94
|
-
url.search = '?and[]=collection:"foo"¬[]=collection:"foo"';
|
|
95
|
-
window.history.replaceState({ path: url.href }, '', url.href);
|
|
96
|
-
const restorationState = handler.getRestorationState();
|
|
97
|
-
expect(restorationState.selectedFacets.collection.foo.state).to.equal('hidden');
|
|
98
|
-
});
|
|
99
|
-
it('should restore sort from URL (space format)', async () => {
|
|
100
|
-
const handler = new RestorationStateHandler({ context: 'search' });
|
|
101
|
-
const url = new URL(window.location.href);
|
|
102
|
-
url.search = '?sort=date+desc';
|
|
103
|
-
window.history.replaceState({ path: url.href }, '', url.href);
|
|
104
|
-
const restorationState = handler.getRestorationState();
|
|
105
|
-
expect(restorationState.selectedSort).to.equal('date');
|
|
106
|
-
expect(restorationState.sortDirection).to.equal('desc');
|
|
107
|
-
});
|
|
108
|
-
it('should restore sort from URL (prefix format, desc)', async () => {
|
|
109
|
-
const handler = new RestorationStateHandler({ context: 'search' });
|
|
110
|
-
const url = new URL(window.location.href);
|
|
111
|
-
url.search = '?sort=-date';
|
|
112
|
-
window.history.replaceState({ path: url.href }, '', url.href);
|
|
113
|
-
const restorationState = handler.getRestorationState();
|
|
114
|
-
expect(restorationState.selectedSort).to.equal('date');
|
|
115
|
-
expect(restorationState.sortDirection).to.equal('desc');
|
|
116
|
-
});
|
|
117
|
-
it('should restore sort from URL (prefix format, asc)', async () => {
|
|
118
|
-
const handler = new RestorationStateHandler({ context: 'search' });
|
|
119
|
-
const url = new URL(window.location.href);
|
|
120
|
-
url.search = '?sort=date';
|
|
121
|
-
window.history.replaceState({ path: url.href }, '', url.href);
|
|
122
|
-
const restorationState = handler.getRestorationState();
|
|
123
|
-
expect(restorationState.selectedSort).to.equal('date');
|
|
124
|
-
expect(restorationState.sortDirection).to.equal('asc');
|
|
125
|
-
});
|
|
126
|
-
});
|
|
1
|
+
import { SearchType } from '@internetarchive/search-service';
|
|
2
|
+
import { expect } from '@open-wc/testing';
|
|
3
|
+
import { RestorationStateHandler } from '../src/restoration-state-handler';
|
|
4
|
+
describe('Restoration state handler', () => {
|
|
5
|
+
it('should restore query from URL', async () => {
|
|
6
|
+
const handler = new RestorationStateHandler({ context: 'search' });
|
|
7
|
+
const url = new URL(window.location.href);
|
|
8
|
+
url.search = '?query=boop';
|
|
9
|
+
window.history.replaceState({ path: url.href }, '', url.href);
|
|
10
|
+
const restorationState = handler.getRestorationState();
|
|
11
|
+
expect(restorationState.baseQuery).to.equal('boop');
|
|
12
|
+
});
|
|
13
|
+
it('should restore full text search type from URL', async () => {
|
|
14
|
+
const handler = new RestorationStateHandler({ context: 'search' });
|
|
15
|
+
const url = new URL(window.location.href);
|
|
16
|
+
url.search = '?sin=TXT';
|
|
17
|
+
window.history.replaceState({ path: url.href }, '', url.href);
|
|
18
|
+
const restorationState = handler.getRestorationState();
|
|
19
|
+
expect(restorationState.searchType).to.equal(SearchType.FULLTEXT);
|
|
20
|
+
});
|
|
21
|
+
it('should restore page number from URL', async () => {
|
|
22
|
+
const handler = new RestorationStateHandler({ context: 'search' });
|
|
23
|
+
const url = new URL(window.location.href);
|
|
24
|
+
url.search = '?page=42';
|
|
25
|
+
window.history.replaceState({ path: url.href }, '', url.href);
|
|
26
|
+
const restorationState = handler.getRestorationState();
|
|
27
|
+
expect(restorationState.currentPage).to.equal(42);
|
|
28
|
+
});
|
|
29
|
+
it('should restore selected year facets from URL', async () => {
|
|
30
|
+
const handler = new RestorationStateHandler({ context: 'search' });
|
|
31
|
+
const url = new URL(window.location.href);
|
|
32
|
+
url.search = '?and[]=year:"2018"';
|
|
33
|
+
window.history.replaceState({ path: url.href }, '', url.href);
|
|
34
|
+
const restorationState = handler.getRestorationState();
|
|
35
|
+
expect(restorationState.selectedFacets.year['2018'].state).to.equal('selected');
|
|
36
|
+
});
|
|
37
|
+
it('should restore selected date range facets from URL', async () => {
|
|
38
|
+
const handler = new RestorationStateHandler({ context: 'search' });
|
|
39
|
+
const url = new URL(window.location.href);
|
|
40
|
+
url.search = '?and[]=year:"2018+TO+2021"';
|
|
41
|
+
window.history.replaceState({ path: url.href }, '', url.href);
|
|
42
|
+
const restorationState = handler.getRestorationState();
|
|
43
|
+
expect(restorationState.minSelectedDate).to.equal('2018');
|
|
44
|
+
expect(restorationState.maxSelectedDate).to.equal('2021');
|
|
45
|
+
expect(restorationState.dateRangeQueryClause).to.equal('year:"2018 TO 2021"');
|
|
46
|
+
});
|
|
47
|
+
it('should restore creator filter from URL', async () => {
|
|
48
|
+
const handler = new RestorationStateHandler({ context: 'search' });
|
|
49
|
+
const url = new URL(window.location.href);
|
|
50
|
+
url.search = '?and[]=firstCreator:F';
|
|
51
|
+
window.history.replaceState({ path: url.href }, '', url.href);
|
|
52
|
+
const restorationState = handler.getRestorationState();
|
|
53
|
+
expect(restorationState.selectedCreatorFilter).to.equal('F');
|
|
54
|
+
});
|
|
55
|
+
it('should restore title filter from URL', async () => {
|
|
56
|
+
const handler = new RestorationStateHandler({ context: 'search' });
|
|
57
|
+
const url = new URL(window.location.href);
|
|
58
|
+
url.search = '?and[]=firstTitle:F';
|
|
59
|
+
window.history.replaceState({ path: url.href }, '', url.href);
|
|
60
|
+
const restorationState = handler.getRestorationState();
|
|
61
|
+
expect(restorationState.selectedTitleFilter).to.equal('F');
|
|
62
|
+
});
|
|
63
|
+
it('should restore other selected facets from URL', async () => {
|
|
64
|
+
const handler = new RestorationStateHandler({ context: 'search' });
|
|
65
|
+
const url = new URL(window.location.href);
|
|
66
|
+
url.search = '?and[]=subject:"foo"';
|
|
67
|
+
window.history.replaceState({ path: url.href }, '', url.href);
|
|
68
|
+
const restorationState = handler.getRestorationState();
|
|
69
|
+
expect(restorationState.selectedFacets.subject.foo.state).to.equal('selected');
|
|
70
|
+
});
|
|
71
|
+
it('should restore negative facets from URL', async () => {
|
|
72
|
+
const handler = new RestorationStateHandler({ context: 'search' });
|
|
73
|
+
const url = new URL(window.location.href);
|
|
74
|
+
url.search = '?not[]=year:2018';
|
|
75
|
+
window.history.replaceState({ path: url.href }, '', url.href);
|
|
76
|
+
const restorationState = handler.getRestorationState();
|
|
77
|
+
expect(restorationState.selectedFacets.year['2018'].state).to.equal('hidden');
|
|
78
|
+
});
|
|
79
|
+
it('should restore multiple selected/negative facets from URL', async () => {
|
|
80
|
+
const handler = new RestorationStateHandler({ context: 'search' });
|
|
81
|
+
const url = new URL(window.location.href);
|
|
82
|
+
url.search =
|
|
83
|
+
'?and[]=collection:"foo"&and[]=collection:"bar"¬[]=collection:"baz"¬[]=collection:"boop"';
|
|
84
|
+
window.history.replaceState({ path: url.href }, '', url.href);
|
|
85
|
+
const restorationState = handler.getRestorationState();
|
|
86
|
+
expect(restorationState.selectedFacets.collection.foo.state).to.equal('selected');
|
|
87
|
+
expect(restorationState.selectedFacets.collection.bar.state).to.equal('selected');
|
|
88
|
+
expect(restorationState.selectedFacets.collection.baz.state).to.equal('hidden');
|
|
89
|
+
expect(restorationState.selectedFacets.collection.boop.state).to.equal('hidden');
|
|
90
|
+
});
|
|
91
|
+
it('negative facets take precedence if both present in URL', async () => {
|
|
92
|
+
const handler = new RestorationStateHandler({ context: 'search' });
|
|
93
|
+
const url = new URL(window.location.href);
|
|
94
|
+
url.search = '?and[]=collection:"foo"¬[]=collection:"foo"';
|
|
95
|
+
window.history.replaceState({ path: url.href }, '', url.href);
|
|
96
|
+
const restorationState = handler.getRestorationState();
|
|
97
|
+
expect(restorationState.selectedFacets.collection.foo.state).to.equal('hidden');
|
|
98
|
+
});
|
|
99
|
+
it('should restore sort from URL (space format)', async () => {
|
|
100
|
+
const handler = new RestorationStateHandler({ context: 'search' });
|
|
101
|
+
const url = new URL(window.location.href);
|
|
102
|
+
url.search = '?sort=date+desc';
|
|
103
|
+
window.history.replaceState({ path: url.href }, '', url.href);
|
|
104
|
+
const restorationState = handler.getRestorationState();
|
|
105
|
+
expect(restorationState.selectedSort).to.equal('date');
|
|
106
|
+
expect(restorationState.sortDirection).to.equal('desc');
|
|
107
|
+
});
|
|
108
|
+
it('should restore sort from URL (prefix format, desc)', async () => {
|
|
109
|
+
const handler = new RestorationStateHandler({ context: 'search' });
|
|
110
|
+
const url = new URL(window.location.href);
|
|
111
|
+
url.search = '?sort=-date';
|
|
112
|
+
window.history.replaceState({ path: url.href }, '', url.href);
|
|
113
|
+
const restorationState = handler.getRestorationState();
|
|
114
|
+
expect(restorationState.selectedSort).to.equal('date');
|
|
115
|
+
expect(restorationState.sortDirection).to.equal('desc');
|
|
116
|
+
});
|
|
117
|
+
it('should restore sort from URL (prefix format, asc)', async () => {
|
|
118
|
+
const handler = new RestorationStateHandler({ context: 'search' });
|
|
119
|
+
const url = new URL(window.location.href);
|
|
120
|
+
url.search = '?sort=date';
|
|
121
|
+
window.history.replaceState({ path: url.href }, '', url.href);
|
|
122
|
+
const restorationState = handler.getRestorationState();
|
|
123
|
+
expect(restorationState.selectedSort).to.equal('date');
|
|
124
|
+
expect(restorationState.sortDirection).to.equal('asc');
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
127
|
//# sourceMappingURL=restoration-state-handler.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import '../../src/sort-filter-bar/sort-filter-bar';
|
|
1
|
+
import '../../src/sort-filter-bar/sort-filter-bar';
|
|
@@ -1,122 +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;
|
|
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
8
|
const el = await fixture(html `
|
|
9
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;
|
|
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
26
|
const el = await fixture(html `
|
|
27
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;
|
|
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
100
|
const el = await fixture(html `
|
|
101
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;
|
|
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
113
|
const el = await fixture(html `
|
|
114
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
|
-
});
|
|
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
122
|
//# sourceMappingURL=sort-filter-bar.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import '../src/tiles/overlay/text-overlay';
|
|
1
|
+
import '../src/tiles/overlay/text-overlay';
|