@internetarchive/collection-browser 0.0.1-alpha.13 → 0.0.1-alpha.16
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/demo/app-root.ts +0 -4
- package/dist/demo/app-root.js +0 -4
- package/dist/demo/app-root.js.map +1 -1
- package/dist/src/assets/img/icons/arrow-right.d.ts +2 -0
- package/dist/src/assets/img/icons/arrow-right.js +4 -0
- package/dist/src/assets/img/icons/arrow-right.js.map +1 -0
- package/dist/src/assets/img/icons/chevron.d.ts +2 -0
- package/dist/src/assets/img/icons/chevron.js +4 -0
- package/dist/src/assets/img/icons/chevron.js.map +1 -0
- package/dist/src/collection-browser.d.ts +13 -3
- package/dist/src/collection-browser.js +178 -32
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/collection-facets.d.ts +4 -1
- package/dist/src/collection-facets.js +88 -9
- package/dist/src/collection-facets.js.map +1 -1
- package/dist/src/mediatype-icon.js +2 -2
- package/dist/src/mediatype-icon.js.map +1 -1
- package/dist/src/models.d.ts +14 -2
- package/dist/src/models.js +31 -7
- package/dist/src/models.js.map +1 -1
- package/dist/src/sort-filter-bar/alpha-bar.js +1 -1
- package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -1
- package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +38 -4
- package/dist/src/sort-filter-bar/sort-filter-bar.js +297 -200
- package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
- package/dist/src/tiles/list/tile-list-compact-header.d.ts +11 -0
- package/dist/src/tiles/list/tile-list-compact-header.js +77 -0
- package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -0
- package/dist/src/tiles/list/tile-list-compact.d.ts +1 -1
- package/dist/src/tiles/list/tile-list-compact.js +12 -12
- package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
- package/dist/src/tiles/list/tile-list.d.ts +10 -10
- package/dist/src/tiles/list/tile-list.js +41 -36
- package/dist/src/tiles/list/tile-list.js.map +1 -1
- package/dist/src/tiles/tile-dispatcher.d.ts +3 -0
- package/dist/src/tiles/tile-dispatcher.js +31 -12
- package/dist/src/tiles/tile-dispatcher.js.map +1 -1
- package/package.json +1 -1
- package/src/assets/img/icons/chevron.ts +4 -0
- package/src/collection-browser.ts +187 -38
- package/src/collection-facets.ts +87 -11
- package/src/mediatype-icon.ts +2 -2
- package/src/models.ts +35 -17
- package/src/sort-filter-bar/alpha-bar.ts +1 -1
- package/src/sort-filter-bar/sort-filter-bar.ts +339 -208
- package/src/tiles/list/tile-list-compact-header.ts +73 -0
- package/src/tiles/list/tile-list-compact.ts +12 -12
- package/src/tiles/list/tile-list.ts +41 -39
- package/src/tiles/tile-dispatcher.ts +33 -12
package/demo/app-root.ts
CHANGED
package/dist/demo/app-root.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-root.js","sourceRoot":"","sources":["../../demo/app-root.ts"],"names":[],"mappings":"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","sourcesContent":["import { SearchService } from '@internetarchive/search-service';\nimport { html, css, LitElement, PropertyValues } from 'lit';\nimport { customElement, query, state } from 'lit/decorators.js';\nimport { SharedResizeObserver } from '@internetarchive/shared-resize-observer';\nimport type { CollectionBrowser } from '../src/collection-browser';\nimport '../src/collection-browser';\n\n@customElement('app-root')\nexport class AppRoot extends LitElement {\n private searchService = SearchService.default;\n\n private resizeObserver = new SharedResizeObserver();\n\n @state() private currentPage?: number;\n\n @state() private searchQuery?: string;\n\n @state() private cellWidth: number = 18;\n\n @state() private cellHeight: number = 29;\n\n @state() private rowGap: number = 1.7;\n\n @state() private colGap: number = 1.7;\n\n @query('#base-query-field') private baseQueryField!: HTMLInputElement;\n\n @query('#page-number-input') private pageNumberInput!: HTMLInputElement;\n\n @query('collection-browser') private collectionBrowser!: CollectionBrowser;\n\n private searchPressed(e: Event) {\n e.preventDefault();\n this.searchQuery = this.baseQueryField.value;\n if ((this.currentPage ?? 1) > 1) {\n this.collectionBrowser.goToPage(this.currentPage ?? 1);\n }\n this.currentPage = 1;\n }\n\n private changePagePressed(e: Event) {\n e.preventDefault();\n this.currentPage = this.pageNumberInput.valueAsNumber;\n this.collectionBrowser.goToPage(this.currentPage);\n }\n\n protected updated(changed: PropertyValues): void {\n if (changed.has('currentPage') && this.currentPage) {\n this.pageNumberInput.value = this.currentPage.toString();\n }\n\n if (changed.has('searchQuery')) {\n this.queryUpdated();\n }\n }\n\n private queryUpdated() {\n this.collectionBrowser.baseQuery = this.searchQuery;\n }\n\n render() {\n return html`\n <div id=\"dev-tools\">\n <form @submit=${this.searchPressed}>\n Query:\n <input\n type=\"text\"\n id=\"base-query-field\"\n .value=${this.searchQuery ?? ''}\n />\n <input type=\"submit\" value=\"Search\" />\n </form>\n\n <form @submit=${this.changePagePressed}>\n Page: <input type=\"number\" value=\"1\" id=\"page-number-input\" />\n <input type=\"submit\" value=\"Go\" />\n </form>\n\n <button\n @click=${() => {\n this.collectionBrowser.showDeleteButtons =\n !this.collectionBrowser.showDeleteButtons;\n }}\n >\n Toggle Delete Mode\n </button>\n\n <div id=\"cell-controls\">\n <div id=\"cell-size-control\">\n <div>\n <label for=\"cell-width-slider\">Minimum cell width:</label>\n <input\n type=\"range\"\n min=\"10\"\n max=\"100\"\n value=\"18\"\n step=\"0.1\"\n id=\"cell-width-slider\"\n @input=${this.widthChanged}\n />\n <span>${this.cellWidth}rem</span>\n </div>\n <div>\n <label for=\"cell-height-slider\">Cell height:</label>\n <input\n type=\"range\"\n min=\"10\"\n max=\"100\"\n value=\"29\"\n step=\"0.1\"\n id=\"cell-height-slider\"\n @input=${this.heightChanged}\n />\n <span>${this.cellHeight}rem</span>\n </div>\n <div>\n <label for=\"show-outline-check\">Show outlines:</label>\n <input\n type=\"checkbox\"\n id=\"show-outline-check\"\n @click=${this.outlineChanged}\n />\n </div>\n </div>\n <div id=\"cell-gap-control\">\n <div>\n <label for=\"cell-row-gap-slider\">Row gap:</label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"5\"\n value=\"1.7\"\n step=\"0.1\"\n id=\"cell-row-gap-slider\"\n @input=${this.rowGapChanged}\n />\n <span>${this.rowGap}rem</span>\n </div>\n <div>\n <label for=\"cell-col-gap-slider\">Col gap:</label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"5\"\n value=\"1.7\"\n step=\"0.1\"\n id=\"cell-col-gap-slider\"\n @input=${this.colGapChanged}\n />\n <span>${this.colGap}rem</span>\n </div>\n </div>\n </div>\n </div>\n\n <div id=\"collection-browser-container\">\n <collection-browser\n .baseNavigationUrl=${'https://archive.org'}\n .searchService=${this.searchService}\n .resizeObserver=${this.resizeObserver}\n @visiblePageChanged=${this.visiblePageChanged}\n >\n </collection-browser>\n </div>\n `;\n }\n\n private outlineChanged(e: Event) {\n const target = e.target as HTMLInputElement;\n if (target.checked) {\n this.collectionBrowser.style.setProperty(\n '--infiniteScrollerCellOutline',\n '1px solid #33D1FF'\n );\n } else {\n this.collectionBrowser.style.removeProperty(\n '--infiniteScrollerCellOutline'\n );\n }\n }\n\n private rowGapChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.rowGap = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserRowGap',\n `${input.value}rem`\n );\n }\n\n private colGapChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.colGap = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserColGap',\n `${input.value}rem`\n );\n }\n\n private widthChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.cellWidth = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserCellMinWidth',\n `${input.value}rem`\n );\n }\n\n private heightChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.cellHeight = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserCellMinHeight',\n `${input.value}rem`\n );\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserCellMaxHeight',\n `${input.value}rem`\n );\n }\n\n private visiblePageChanged(e: CustomEvent<{ pageNumber: number }>) {\n const { pageNumber } = e.detail;\n if (pageNumber === this.currentPage) return;\n this.currentPage = pageNumber;\n }\n\n static styles = css`\n :host {\n display: block;\n }\n\n input,\n button {\n font-size: 1.6rem;\n }\n\n #collection-browser-container {\n padding: 0 2rem;\n }\n\n collection-browser {\n margin-top: 30rem;\n }\n\n #base-query-field {\n width: 300px;\n }\n\n #dev-tools {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 10;\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n padding: 0.5rem 1rem;\n border: 1px solid black;\n }\n\n #cell-controls {\n display: flex;\n }\n\n #cell-controls label {\n display: inline-block;\n width: 10rem;\n }\n\n #cell-gap-control {\n margin-left: 1rem;\n }\n `;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"app-root.js","sourceRoot":"","sources":["../../demo/app-root.ts"],"names":[],"mappings":"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","sourcesContent":["import { SearchService } from '@internetarchive/search-service';\nimport { html, css, LitElement, PropertyValues } from 'lit';\nimport { customElement, query, state } from 'lit/decorators.js';\nimport { SharedResizeObserver } from '@internetarchive/shared-resize-observer';\nimport type { CollectionBrowser } from '../src/collection-browser';\nimport '../src/collection-browser';\n\n@customElement('app-root')\nexport class AppRoot extends LitElement {\n private searchService = SearchService.default;\n\n private resizeObserver = new SharedResizeObserver();\n\n @state() private currentPage?: number;\n\n @state() private searchQuery?: string;\n\n @state() private cellWidth: number = 18;\n\n @state() private cellHeight: number = 29;\n\n @state() private rowGap: number = 1.7;\n\n @state() private colGap: number = 1.7;\n\n @query('#base-query-field') private baseQueryField!: HTMLInputElement;\n\n @query('#page-number-input') private pageNumberInput!: HTMLInputElement;\n\n @query('collection-browser') private collectionBrowser!: CollectionBrowser;\n\n private searchPressed(e: Event) {\n e.preventDefault();\n this.searchQuery = this.baseQueryField.value;\n if ((this.currentPage ?? 1) > 1) {\n this.collectionBrowser.goToPage(this.currentPage ?? 1);\n }\n this.currentPage = 1;\n }\n\n private changePagePressed(e: Event) {\n e.preventDefault();\n this.currentPage = this.pageNumberInput.valueAsNumber;\n this.collectionBrowser.goToPage(this.currentPage);\n }\n\n protected updated(changed: PropertyValues): void {\n if (changed.has('currentPage') && this.currentPage) {\n this.pageNumberInput.value = this.currentPage.toString();\n }\n\n if (changed.has('searchQuery')) {\n this.queryUpdated();\n }\n }\n\n private queryUpdated() {\n this.collectionBrowser.baseQuery = this.searchQuery;\n }\n\n render() {\n return html`\n <div id=\"dev-tools\">\n <form @submit=${this.searchPressed}>\n Query:\n <input\n type=\"text\"\n id=\"base-query-field\"\n .value=${this.searchQuery ?? ''}\n />\n <input type=\"submit\" value=\"Search\" />\n </form>\n\n <form @submit=${this.changePagePressed}>\n Page: <input type=\"number\" value=\"1\" id=\"page-number-input\" />\n <input type=\"submit\" value=\"Go\" />\n </form>\n\n <button\n @click=${() => {\n this.collectionBrowser.showDeleteButtons =\n !this.collectionBrowser.showDeleteButtons;\n }}\n >\n Toggle Delete Mode\n </button>\n\n <div id=\"cell-controls\">\n <div id=\"cell-size-control\">\n <div>\n <label for=\"cell-width-slider\">Minimum cell width:</label>\n <input\n type=\"range\"\n min=\"10\"\n max=\"100\"\n value=\"18\"\n step=\"0.1\"\n id=\"cell-width-slider\"\n @input=${this.widthChanged}\n />\n <span>${this.cellWidth}rem</span>\n </div>\n <div>\n <label for=\"cell-height-slider\">Cell height:</label>\n <input\n type=\"range\"\n min=\"10\"\n max=\"100\"\n value=\"29\"\n step=\"0.1\"\n id=\"cell-height-slider\"\n @input=${this.heightChanged}\n />\n <span>${this.cellHeight}rem</span>\n </div>\n <div>\n <label for=\"show-outline-check\">Show outlines:</label>\n <input\n type=\"checkbox\"\n id=\"show-outline-check\"\n @click=${this.outlineChanged}\n />\n </div>\n </div>\n <div id=\"cell-gap-control\">\n <div>\n <label for=\"cell-row-gap-slider\">Row gap:</label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"5\"\n value=\"1.7\"\n step=\"0.1\"\n id=\"cell-row-gap-slider\"\n @input=${this.rowGapChanged}\n />\n <span>${this.rowGap}rem</span>\n </div>\n <div>\n <label for=\"cell-col-gap-slider\">Col gap:</label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"5\"\n value=\"1.7\"\n step=\"0.1\"\n id=\"cell-col-gap-slider\"\n @input=${this.colGapChanged}\n />\n <span>${this.colGap}rem</span>\n </div>\n </div>\n </div>\n </div>\n\n <div id=\"collection-browser-container\">\n <collection-browser\n .baseNavigationUrl=${'https://archive.org'}\n .searchService=${this.searchService}\n .resizeObserver=${this.resizeObserver}\n @visiblePageChanged=${this.visiblePageChanged}\n >\n </collection-browser>\n </div>\n `;\n }\n\n private outlineChanged(e: Event) {\n const target = e.target as HTMLInputElement;\n if (target.checked) {\n this.collectionBrowser.style.setProperty(\n '--infiniteScrollerCellOutline',\n '1px solid #33D1FF'\n );\n } else {\n this.collectionBrowser.style.removeProperty(\n '--infiniteScrollerCellOutline'\n );\n }\n }\n\n private rowGapChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.rowGap = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserRowGap',\n `${input.value}rem`\n );\n }\n\n private colGapChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.colGap = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserColGap',\n `${input.value}rem`\n );\n }\n\n private widthChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.cellWidth = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserCellMinWidth',\n `${input.value}rem`\n );\n }\n\n private heightChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.cellHeight = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserCellMinHeight',\n `${input.value}rem`\n );\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserCellMaxHeight',\n `${input.value}rem`\n );\n }\n\n private visiblePageChanged(e: CustomEvent<{ pageNumber: number }>) {\n const { pageNumber } = e.detail;\n if (pageNumber === this.currentPage) return;\n this.currentPage = pageNumber;\n }\n\n static styles = css`\n :host {\n display: block;\n }\n\n input,\n button {\n font-size: 1.6rem;\n }\n\n collection-browser {\n margin-top: 30rem;\n }\n\n #base-query-field {\n width: 300px;\n }\n\n #dev-tools {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 10;\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n padding: 0.5rem 1rem;\n border: 1px solid black;\n }\n\n #cell-controls {\n display: flex;\n }\n\n #cell-controls label {\n display: inline-block;\n width: 10rem;\n }\n\n #cell-gap-control {\n margin-left: 1rem;\n }\n `;\n}\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { svg } from 'lit';
|
|
2
|
+
export default svg `<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><path 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"/></svg>
|
|
3
|
+
`;
|
|
4
|
+
//# sourceMappingURL=arrow-right.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrow-right.js","sourceRoot":"","sources":["../../../../../src/assets/img/icons/arrow-right.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,eAAe,GAAG,CAAA;CACjB,CAAA","sourcesContent":["import { svg } from 'lit';\n\nexport default svg`<svg viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\"><path 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\"/></svg>\n`\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { svg } from 'lit';
|
|
2
|
+
export default svg `<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><path 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"/></svg>
|
|
3
|
+
`;
|
|
4
|
+
//# sourceMappingURL=chevron.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chevron.js","sourceRoot":"","sources":["../../../../../src/assets/img/icons/chevron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,eAAe,GAAG,CAAA;CACjB,CAAC","sourcesContent":["import { svg } from 'lit';\n\nexport default svg`<svg viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\"><path 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\"/></svg>\n`;\n"]}
|
|
@@ -2,7 +2,7 @@ import { LitElement, PropertyValues, TemplateResult } from 'lit';
|
|
|
2
2
|
import type { InfiniteScrollerCellProviderInterface } from '@internetarchive/infinite-scroller';
|
|
3
3
|
import { SearchServiceInterface, SortDirection } from '@internetarchive/search-service';
|
|
4
4
|
import { SortParam } from '@internetarchive/search-service';
|
|
5
|
-
import { SharedResizeObserverInterface } from '@internetarchive/shared-resize-observer';
|
|
5
|
+
import { SharedResizeObserverInterface, SharedResizeObserverResizeHandlerInterface } from '@internetarchive/shared-resize-observer';
|
|
6
6
|
import type { CollectionDisplayMode } from './models';
|
|
7
7
|
import '@internetarchive/infinite-scroller';
|
|
8
8
|
import './tiles/tile-dispatcher';
|
|
@@ -13,7 +13,7 @@ import './circular-activity-indicator';
|
|
|
13
13
|
import './sort-filter-bar/sort-filter-bar';
|
|
14
14
|
import { SelectedFacets, SortField, CollectionBrowserContext } from './models';
|
|
15
15
|
import { RestorationStateHandlerInterface } from './restoration-state-handler';
|
|
16
|
-
export declare class CollectionBrowser extends LitElement implements InfiniteScrollerCellProviderInterface {
|
|
16
|
+
export declare class CollectionBrowser extends LitElement implements InfiniteScrollerCellProviderInterface, SharedResizeObserverResizeHandlerInterface {
|
|
17
17
|
baseNavigationUrl?: string;
|
|
18
18
|
searchService?: SearchServiceInterface;
|
|
19
19
|
baseQuery?: string;
|
|
@@ -35,6 +35,7 @@ export declare class CollectionBrowser extends LitElement implements InfiniteScr
|
|
|
35
35
|
selectedFacets?: SelectedFacets;
|
|
36
36
|
pageContext: CollectionBrowserContext;
|
|
37
37
|
restorationStateHandler: RestorationStateHandlerInterface;
|
|
38
|
+
mobileBreakpoint: number;
|
|
38
39
|
/**
|
|
39
40
|
* The page that the consumer wants to load.
|
|
40
41
|
*/
|
|
@@ -52,6 +53,9 @@ export declare class CollectionBrowser extends LitElement implements InfiniteScr
|
|
|
52
53
|
private aggregations?;
|
|
53
54
|
private fullYearsHistogramAggregation;
|
|
54
55
|
private totalResults?;
|
|
56
|
+
private mobileView;
|
|
57
|
+
private mobileFacetsVisible;
|
|
58
|
+
private contentContainer;
|
|
55
59
|
/**
|
|
56
60
|
* When we're animated scrolling to the page, we don't want to fetch
|
|
57
61
|
* all of the pages as it scrolls so this lets us know if we're scrolling
|
|
@@ -82,7 +86,7 @@ export declare class CollectionBrowser extends LitElement implements InfiniteScr
|
|
|
82
86
|
*/
|
|
83
87
|
goToPage(pageNumber: number): void;
|
|
84
88
|
render(): TemplateResult<1>;
|
|
85
|
-
private
|
|
89
|
+
private userChangedSort;
|
|
86
90
|
private selectedSortChanged;
|
|
87
91
|
private displayModeChanged;
|
|
88
92
|
private selectedTitleLetterChanged;
|
|
@@ -90,11 +94,17 @@ export declare class CollectionBrowser extends LitElement implements InfiniteScr
|
|
|
90
94
|
private titleLetterSelected;
|
|
91
95
|
private creatorLetterSelected;
|
|
92
96
|
private get facetDataLoading();
|
|
97
|
+
private get facetsTemplate();
|
|
93
98
|
private get loadingTemplate();
|
|
99
|
+
private get listHeaderTemplate();
|
|
94
100
|
private get queryDebuggingTemplate();
|
|
95
101
|
private histogramDateRangeUpdated;
|
|
96
102
|
firstUpdated(): void;
|
|
97
103
|
updated(changed: PropertyValues): void;
|
|
104
|
+
disconnectedCallback(): void;
|
|
105
|
+
handleResize(entry: ResizeObserverEntry): void;
|
|
106
|
+
private disconnectResizeObserver;
|
|
107
|
+
private setupResizeObserver;
|
|
98
108
|
/**
|
|
99
109
|
* When the visible cells change from the infinite scroller, we want to emit
|
|
100
110
|
* which page is currently visible so the consumer can update its UI or the URL
|
|
@@ -12,14 +12,15 @@ import './sort-filter-bar/sort-filter-bar';
|
|
|
12
12
|
import './collection-facets';
|
|
13
13
|
import './circular-activity-indicator';
|
|
14
14
|
import './sort-filter-bar/sort-filter-bar';
|
|
15
|
-
import { SortFieldToMetadataField, defaultSelectedFacets, } from './models';
|
|
15
|
+
import { SortField, SortFieldToMetadataField, defaultSelectedFacets, } from './models';
|
|
16
16
|
import { RestorationStateHandler, } from './restoration-state-handler';
|
|
17
|
+
import chevronIcon from './assets/img/icons/chevron';
|
|
17
18
|
let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
18
19
|
constructor() {
|
|
19
20
|
super(...arguments);
|
|
20
21
|
this.showDeleteButtons = false;
|
|
21
22
|
this.sortParam = null;
|
|
22
|
-
this.selectedSort =
|
|
23
|
+
this.selectedSort = SortField.relevance;
|
|
23
24
|
this.selectedTitleFilter = null;
|
|
24
25
|
this.selectedCreatorFilter = null;
|
|
25
26
|
this.sortDirection = null;
|
|
@@ -28,6 +29,7 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
28
29
|
this.restorationStateHandler = new RestorationStateHandler({
|
|
29
30
|
context: this.pageContext,
|
|
30
31
|
});
|
|
32
|
+
this.mobileBreakpoint = 530;
|
|
31
33
|
/**
|
|
32
34
|
* The page that the consumer wants to load.
|
|
33
35
|
*/
|
|
@@ -42,6 +44,8 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
42
44
|
this.searchResultsLoading = false;
|
|
43
45
|
this.facetsLoading = false;
|
|
44
46
|
this.fullYearAggregationLoading = false;
|
|
47
|
+
this.mobileView = false;
|
|
48
|
+
this.mobileFacetsVisible = false;
|
|
45
49
|
/**
|
|
46
50
|
* When we're animated scrolling to the page, we don't want to fetch
|
|
47
51
|
* all of the pages as it scrolls so this lets us know if we're scrolling
|
|
@@ -112,30 +116,48 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
112
116
|
}
|
|
113
117
|
render() {
|
|
114
118
|
return html `
|
|
115
|
-
<div id="content-container">
|
|
119
|
+
<div id="content-container" class=${this.mobileView ? 'mobile' : ''}>
|
|
116
120
|
<div id="left-column" class="column">
|
|
117
|
-
<div id="
|
|
118
|
-
|
|
119
|
-
|
|
121
|
+
<div id="mobile-header-container">
|
|
122
|
+
${this.mobileView
|
|
123
|
+
? html `
|
|
124
|
+
<div id="mobile-filter-collapse">
|
|
125
|
+
<h1
|
|
126
|
+
@click=${() => {
|
|
127
|
+
this.mobileFacetsVisible = !this.mobileFacetsVisible;
|
|
128
|
+
}}
|
|
129
|
+
@keyup=${() => {
|
|
130
|
+
this.mobileFacetsVisible = !this.mobileFacetsVisible;
|
|
131
|
+
}}
|
|
132
|
+
>
|
|
133
|
+
<span
|
|
134
|
+
class="collapser ${this.mobileFacetsVisible
|
|
135
|
+
? 'open'
|
|
136
|
+
: ''}"
|
|
137
|
+
>
|
|
138
|
+
${chevronIcon}
|
|
139
|
+
</span>
|
|
140
|
+
Filters
|
|
141
|
+
</h1>
|
|
142
|
+
</div>
|
|
143
|
+
`
|
|
144
|
+
: nothing}
|
|
145
|
+
<div id="results-total">
|
|
146
|
+
<span id="big-results-count"
|
|
147
|
+
>${this.totalResults
|
|
120
148
|
? this.totalResults.toLocaleString()
|
|
121
149
|
: '-'}</span
|
|
122
|
-
|
|
123
|
-
|
|
150
|
+
>
|
|
151
|
+
<span id="big-results-label">Results</span>
|
|
152
|
+
</div>
|
|
124
153
|
</div>
|
|
125
|
-
<div
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
.fullYearsHistogramAggregation}
|
|
133
|
-
.minSelectedDate=${this.minSelectedDate}
|
|
134
|
-
.maxSelectedDate=${this.maxSelectedDate}
|
|
135
|
-
.selectedFacets=${this.selectedFacets}
|
|
136
|
-
?facetsLoading=${this.facetDataLoading}
|
|
137
|
-
?fullYearAggregationLoading=${this.fullYearAggregationLoading}
|
|
138
|
-
></collection-facets>
|
|
154
|
+
<div
|
|
155
|
+
id="facets-container"
|
|
156
|
+
class=${!this.mobileView || this.mobileFacetsVisible
|
|
157
|
+
? 'expanded'
|
|
158
|
+
: ''}
|
|
159
|
+
>
|
|
160
|
+
${this.facetsTemplate}
|
|
139
161
|
</div>
|
|
140
162
|
</div>
|
|
141
163
|
<div id="right-column" class="column">
|
|
@@ -146,12 +168,17 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
146
168
|
.displayMode=${this.displayMode}
|
|
147
169
|
.selectedTitleFilter=${this.selectedTitleFilter}
|
|
148
170
|
.selectedCreatorFilter=${this.selectedCreatorFilter}
|
|
149
|
-
|
|
171
|
+
.resizeObserver=${this.resizeObserver}
|
|
172
|
+
@sortChanged=${this.userChangedSort}
|
|
150
173
|
@displayModeChanged=${this.displayModeChanged}
|
|
151
174
|
@titleLetterChanged=${this.titleLetterSelected}
|
|
152
175
|
@creatorLetterChanged=${this.creatorLetterSelected}
|
|
153
176
|
></sort-filter-bar>
|
|
154
177
|
|
|
178
|
+
${this.displayMode === `list-compact`
|
|
179
|
+
? this.listHeaderTemplate
|
|
180
|
+
: nothing}
|
|
181
|
+
|
|
155
182
|
<infinite-scroller
|
|
156
183
|
class="${ifDefined(this.displayMode)}"
|
|
157
184
|
.cellProvider=${this}
|
|
@@ -164,13 +191,17 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
164
191
|
</div>
|
|
165
192
|
`;
|
|
166
193
|
}
|
|
167
|
-
|
|
194
|
+
userChangedSort(e) {
|
|
195
|
+
var _a;
|
|
168
196
|
const { selectedSort, sortDirection } = e.detail;
|
|
169
197
|
this.selectedSort = selectedSort;
|
|
170
198
|
this.sortDirection = sortDirection;
|
|
199
|
+
if (((_a = this.currentPage) !== null && _a !== void 0 ? _a : 1) > 1) {
|
|
200
|
+
this.goToPage(1);
|
|
201
|
+
}
|
|
202
|
+
this.currentPage = 1;
|
|
171
203
|
}
|
|
172
204
|
selectedSortChanged() {
|
|
173
|
-
var _a;
|
|
174
205
|
if (this.selectedSort === 'relevance' || this.sortDirection === null) {
|
|
175
206
|
this.sortParam = null;
|
|
176
207
|
return;
|
|
@@ -179,10 +210,6 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
179
210
|
if (!sortField)
|
|
180
211
|
return;
|
|
181
212
|
this.sortParam = new SortParam(sortField, this.sortDirection);
|
|
182
|
-
if (((_a = this.currentPage) !== null && _a !== void 0 ? _a : 1) > 1) {
|
|
183
|
-
this.goToPage(1);
|
|
184
|
-
}
|
|
185
|
-
this.currentPage = 1;
|
|
186
213
|
}
|
|
187
214
|
displayModeChanged(e) {
|
|
188
215
|
this.displayMode = e.detail.displayMode;
|
|
@@ -206,6 +233,23 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
206
233
|
get facetDataLoading() {
|
|
207
234
|
return this.facetsLoading || this.fullYearAggregationLoading;
|
|
208
235
|
}
|
|
236
|
+
get facetsTemplate() {
|
|
237
|
+
return html `
|
|
238
|
+
${this.facetsLoading ? this.loadingTemplate : nothing}
|
|
239
|
+
<collection-facets
|
|
240
|
+
@facetsChanged=${this.facetsChanged}
|
|
241
|
+
@histogramDateRangeUpdated=${this.histogramDateRangeUpdated}
|
|
242
|
+
.aggregations=${this.aggregations}
|
|
243
|
+
.fullYearsHistogramAggregation=${this.fullYearsHistogramAggregation}
|
|
244
|
+
.minSelectedDate=${this.minSelectedDate}
|
|
245
|
+
.maxSelectedDate=${this.maxSelectedDate}
|
|
246
|
+
.selectedFacets=${this.selectedFacets}
|
|
247
|
+
?collapsableFacets=${this.mobileView}
|
|
248
|
+
?facetsLoading=${this.facetDataLoading}
|
|
249
|
+
?fullYearAggregationLoading=${this.fullYearAggregationLoading}
|
|
250
|
+
></collection-facets>
|
|
251
|
+
`;
|
|
252
|
+
}
|
|
209
253
|
get loadingTemplate() {
|
|
210
254
|
return html `
|
|
211
255
|
<div class="loading-cover">
|
|
@@ -213,6 +257,16 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
213
257
|
</div>
|
|
214
258
|
`;
|
|
215
259
|
}
|
|
260
|
+
get listHeaderTemplate() {
|
|
261
|
+
return html `
|
|
262
|
+
<tile-dispatcher
|
|
263
|
+
.displayMode=${'list-header'}
|
|
264
|
+
.resizeObserver=${this.resizeObserver}
|
|
265
|
+
.sortParam=${this.sortParam}
|
|
266
|
+
>
|
|
267
|
+
</tile-dispatcher>
|
|
268
|
+
`;
|
|
269
|
+
}
|
|
216
270
|
get queryDebuggingTemplate() {
|
|
217
271
|
var _a, _b;
|
|
218
272
|
return html `
|
|
@@ -267,6 +321,36 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
267
321
|
this.infiniteScroller.itemCount = this.estimatedTileCount;
|
|
268
322
|
}
|
|
269
323
|
}
|
|
324
|
+
if (changed.has('resizeObserver')) {
|
|
325
|
+
const oldObserver = changed.get('resizeObserver');
|
|
326
|
+
if (oldObserver)
|
|
327
|
+
this.disconnectResizeObserver(oldObserver);
|
|
328
|
+
this.setupResizeObserver();
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
disconnectedCallback() {
|
|
332
|
+
if (this.resizeObserver) {
|
|
333
|
+
this.disconnectResizeObserver(this.resizeObserver);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
handleResize(entry) {
|
|
337
|
+
if (entry.target === this.contentContainer) {
|
|
338
|
+
this.mobileView = entry.contentRect.width < 600;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
disconnectResizeObserver(resizeObserver) {
|
|
342
|
+
resizeObserver.removeObserver({
|
|
343
|
+
target: this.contentContainer,
|
|
344
|
+
handler: this,
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
setupResizeObserver() {
|
|
348
|
+
if (!this.resizeObserver)
|
|
349
|
+
return;
|
|
350
|
+
this.resizeObserver.addObserver({
|
|
351
|
+
target: this.contentContainer,
|
|
352
|
+
handler: this,
|
|
353
|
+
});
|
|
270
354
|
}
|
|
271
355
|
/**
|
|
272
356
|
* When the visible cells change from the infinite scroller, we want to emit
|
|
@@ -317,7 +401,7 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
317
401
|
var _a, _b, _c, _d, _e, _f;
|
|
318
402
|
const restorationState = this.restorationStateHandler.getRestorationState();
|
|
319
403
|
this.displayMode = restorationState.displayMode;
|
|
320
|
-
this.selectedSort = (_a = restorationState.selectedSort) !== null && _a !== void 0 ? _a :
|
|
404
|
+
this.selectedSort = (_a = restorationState.selectedSort) !== null && _a !== void 0 ? _a : SortField.relevance;
|
|
321
405
|
this.sortDirection = (_b = restorationState.sortDirection) !== null && _b !== void 0 ? _b : null;
|
|
322
406
|
this.selectedTitleFilter = (_c = restorationState.selectedTitleFilter) !== null && _c !== void 0 ? _c : null;
|
|
323
407
|
this.selectedCreatorFilter = (_d = restorationState.selectedCreatorFilter) !== null && _d !== void 0 ? _d : null;
|
|
@@ -688,23 +772,69 @@ CollectionBrowser.styles = css `
|
|
|
688
772
|
display: flex;
|
|
689
773
|
}
|
|
690
774
|
|
|
775
|
+
.collapser {
|
|
776
|
+
display: inline-block;
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
.collapser svg {
|
|
780
|
+
width: 10px;
|
|
781
|
+
height: 10px;
|
|
782
|
+
transition: transform 0.2s ease-out;
|
|
783
|
+
}
|
|
784
|
+
|
|
785
|
+
.collapser.open svg {
|
|
786
|
+
transform: rotate(90deg);
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
#mobile-filter-collapse h1 {
|
|
790
|
+
cursor: pointer;
|
|
791
|
+
}
|
|
792
|
+
|
|
793
|
+
#content-container.mobile {
|
|
794
|
+
display: block;
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
.column {
|
|
798
|
+
padding-top: 2rem;
|
|
799
|
+
}
|
|
800
|
+
|
|
691
801
|
#right-column {
|
|
692
802
|
flex: 1;
|
|
693
803
|
position: relative;
|
|
694
804
|
border-left: 1px solid rgb(232, 232, 232);
|
|
805
|
+
padding-left: 1rem;
|
|
806
|
+
}
|
|
807
|
+
|
|
808
|
+
.mobile #right-column {
|
|
809
|
+
border-left: none;
|
|
810
|
+
padding: 0;
|
|
695
811
|
}
|
|
696
812
|
|
|
697
813
|
#left-column {
|
|
698
814
|
width: 18rem;
|
|
699
815
|
padding-right: 12px;
|
|
816
|
+
padding-right: 1rem;
|
|
700
817
|
}
|
|
701
818
|
|
|
702
|
-
.column {
|
|
703
|
-
|
|
819
|
+
.mobile #left-column {
|
|
820
|
+
width: 100%;
|
|
821
|
+
padding: 0;
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
#mobile-header-container {
|
|
825
|
+
display: flex;
|
|
826
|
+
justify-content: space-between;
|
|
704
827
|
}
|
|
705
828
|
|
|
706
829
|
#facets-container {
|
|
707
830
|
position: relative;
|
|
831
|
+
max-height: 0;
|
|
832
|
+
transition: max-height 0.2s ease-in-out;
|
|
833
|
+
overflow: hidden;
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
#facets-container.expanded {
|
|
837
|
+
max-height: 2000px;
|
|
708
838
|
}
|
|
709
839
|
|
|
710
840
|
#results-total {
|
|
@@ -713,6 +843,10 @@ CollectionBrowser.styles = css `
|
|
|
713
843
|
margin-bottom: 5rem;
|
|
714
844
|
}
|
|
715
845
|
|
|
846
|
+
.mobile #results-total {
|
|
847
|
+
margin-bottom: 0;
|
|
848
|
+
}
|
|
849
|
+
|
|
716
850
|
#big-results-count {
|
|
717
851
|
font-size: 2.4rem;
|
|
718
852
|
font-weight: 500;
|
|
@@ -853,6 +987,9 @@ __decorate([
|
|
|
853
987
|
__decorate([
|
|
854
988
|
property({ type: Object })
|
|
855
989
|
], CollectionBrowser.prototype, "restorationStateHandler", void 0);
|
|
990
|
+
__decorate([
|
|
991
|
+
property({ type: Number })
|
|
992
|
+
], CollectionBrowser.prototype, "mobileBreakpoint", void 0);
|
|
856
993
|
__decorate([
|
|
857
994
|
state()
|
|
858
995
|
], CollectionBrowser.prototype, "pagesToRender", void 0);
|
|
@@ -874,6 +1011,15 @@ __decorate([
|
|
|
874
1011
|
__decorate([
|
|
875
1012
|
state()
|
|
876
1013
|
], CollectionBrowser.prototype, "totalResults", void 0);
|
|
1014
|
+
__decorate([
|
|
1015
|
+
state()
|
|
1016
|
+
], CollectionBrowser.prototype, "mobileView", void 0);
|
|
1017
|
+
__decorate([
|
|
1018
|
+
state()
|
|
1019
|
+
], CollectionBrowser.prototype, "mobileFacetsVisible", void 0);
|
|
1020
|
+
__decorate([
|
|
1021
|
+
query('#content-container')
|
|
1022
|
+
], CollectionBrowser.prototype, "contentContainer", void 0);
|
|
877
1023
|
__decorate([
|
|
878
1024
|
query('infinite-scroller')
|
|
879
1025
|
], CollectionBrowser.prototype, "infiniteScroller", void 0);
|