@internetarchive/collection-browser 3.4.1-alpha-webdev7761.2 → 3.4.1-alpha-webdev7761.4
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/dist/src/app-root.js +19 -28
- package/dist/src/app-root.js.map +1 -1
- package/dist/src/collection-browser.d.ts +14 -10
- package/dist/src/collection-browser.js +870 -886
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/collection-facets/facet-row.js +3 -4
- package/dist/src/collection-facets/facet-row.js.map +1 -1
- package/dist/src/collection-facets/models.js.map +1 -1
- package/dist/src/collection-facets/more-facets-content.js +145 -156
- package/dist/src/collection-facets/more-facets-content.js.map +1 -1
- package/dist/src/collection-facets/more-facets-pagination.js +6 -10
- package/dist/src/collection-facets/more-facets-pagination.js.map +1 -1
- package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js +16 -21
- package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js.map +1 -1
- package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +7 -10
- package/dist/src/collection-facets/smart-facets/smart-facet-bar.js.map +1 -1
- package/dist/src/collection-facets/smart-facets/smart-facet-button.js +3 -2
- package/dist/src/collection-facets/smart-facets/smart-facet-button.js.map +1 -1
- package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js +9 -11
- package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js.map +1 -1
- package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js +7 -7
- package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js.map +1 -1
- package/dist/src/collection-facets/toggle-switch.js +4 -6
- package/dist/src/collection-facets/toggle-switch.js.map +1 -1
- package/dist/src/collection-facets.js +34 -50
- package/dist/src/collection-facets.js.map +1 -1
- package/dist/src/combo-box/caret-closed.js +5 -11
- package/dist/src/combo-box/caret-closed.js.map +1 -1
- package/dist/src/combo-box/caret-open.js +5 -11
- package/dist/src/combo-box/caret-open.js.map +1 -1
- package/dist/src/combo-box/clear.d.ts +2 -0
- package/dist/src/combo-box/clear.js +11 -0
- package/dist/src/combo-box/clear.js.map +1 -0
- package/dist/src/combo-box/ia-combo-box.d.ts +40 -9
- package/dist/src/combo-box/ia-combo-box.js +363 -272
- package/dist/src/combo-box/ia-combo-box.js.map +1 -1
- package/dist/src/combo-box/models.d.ts +14 -0
- package/dist/src/combo-box/models.js +32 -1
- package/dist/src/combo-box/models.js.map +1 -1
- package/dist/src/data-source/collection-browser-data-source.js +35 -47
- package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
- package/dist/src/empty-placeholder.js +19 -18
- package/dist/src/empty-placeholder.js.map +1 -1
- package/dist/src/expanded-date-picker.js +6 -10
- package/dist/src/expanded-date-picker.js.map +1 -1
- package/dist/src/language-code-handler/language-code-handler.js +2 -2
- package/dist/src/language-code-handler/language-code-handler.js.map +1 -1
- package/dist/src/manage/manage-bar.js +86 -92
- package/dist/src/manage/manage-bar.js.map +1 -1
- package/dist/src/manage/remove-items-modal-content.js +2 -2
- package/dist/src/manage/remove-items-modal-content.js.map +1 -1
- package/dist/src/models.js +36 -40
- package/dist/src/models.js.map +1 -1
- package/dist/src/restoration-state-handler.js +9 -10
- package/dist/src/restoration-state-handler.js.map +1 -1
- package/dist/src/sort-filter-bar/alpha-bar.js +9 -14
- package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -1
- package/dist/src/sort-filter-bar/sort-filter-bar.js +14 -24
- package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
- package/dist/src/tiles/base-tile-component.js +1 -2
- package/dist/src/tiles/base-tile-component.js.map +1 -1
- package/dist/src/tiles/grid/account-tile.js +36 -38
- package/dist/src/tiles/grid/account-tile.js.map +1 -1
- package/dist/src/tiles/grid/collection-tile.js +79 -82
- package/dist/src/tiles/grid/collection-tile.js.map +1 -1
- package/dist/src/tiles/grid/item-tile.js +154 -164
- package/dist/src/tiles/grid/item-tile.js.map +1 -1
- package/dist/src/tiles/grid/search-tile.js +42 -43
- package/dist/src/tiles/grid/search-tile.js.map +1 -1
- package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +119 -119
- package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js.map +1 -1
- package/dist/src/tiles/grid/tile-stats.js +2 -3
- package/dist/src/tiles/grid/tile-stats.js.map +1 -1
- package/dist/src/tiles/hover/hover-pane-controller.js +42 -49
- package/dist/src/tiles/hover/hover-pane-controller.js.map +1 -1
- package/dist/src/tiles/hover/tile-hover-pane.js +113 -114
- package/dist/src/tiles/hover/tile-hover-pane.js.map +1 -1
- package/dist/src/tiles/image-block.js +5 -8
- package/dist/src/tiles/image-block.js.map +1 -1
- package/dist/src/tiles/item-image.js +12 -19
- package/dist/src/tiles/item-image.js.map +1 -1
- package/dist/src/tiles/list/tile-list-compact.js +114 -122
- package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
- package/dist/src/tiles/list/tile-list.js +326 -347
- package/dist/src/tiles/list/tile-list.js.map +1 -1
- package/dist/src/tiles/overlay/icon-overlay.js +1 -2
- package/dist/src/tiles/overlay/icon-overlay.js.map +1 -1
- package/dist/src/tiles/overlay/text-overlay.js +2 -4
- package/dist/src/tiles/overlay/text-overlay.js.map +1 -1
- package/dist/src/tiles/text-snippet-block.js +2 -4
- package/dist/src/tiles/text-snippet-block.js.map +1 -1
- package/dist/src/tiles/tile-dispatcher.js +233 -241
- package/dist/src/tiles/tile-dispatcher.js.map +1 -1
- package/dist/src/tiles/tile-display-value-provider.js +5 -9
- package/dist/src/tiles/tile-display-value-provider.js.map +1 -1
- package/dist/src/tiles/tile-mediatype-icon.js +12 -19
- package/dist/src/tiles/tile-mediatype-icon.js.map +1 -1
- package/dist/src/utils/collapse-repeated-quotes.js +1 -1
- package/dist/src/utils/collapse-repeated-quotes.js.map +1 -1
- package/dist/src/utils/facet-utils.js +3 -5
- package/dist/src/utils/facet-utils.js.map +1 -1
- package/dist/src/utils/format-count.js +10 -10
- package/dist/src/utils/format-count.js.map +1 -1
- package/dist/src/utils/format-date.js.map +1 -1
- package/dist/src/utils/resolve-mediatype.js +2 -3
- package/dist/src/utils/resolve-mediatype.js.map +1 -1
- package/dist/test/collection-browser.test.js +131 -185
- package/dist/test/collection-browser.test.js.map +1 -1
- package/dist/test/collection-facets/facet-row.test.js +60 -75
- package/dist/test/collection-facets/facet-row.test.js.map +1 -1
- package/dist/test/collection-facets/facets-template.test.js +17 -23
- package/dist/test/collection-facets/facets-template.test.js.map +1 -1
- package/dist/test/collection-facets/more-facets-content.test.js +22 -32
- package/dist/test/collection-facets/more-facets-content.test.js.map +1 -1
- package/dist/test/collection-facets/more-facets-pagination.test.js +16 -22
- package/dist/test/collection-facets/more-facets-pagination.test.js.map +1 -1
- package/dist/test/collection-facets/toggle-switch.test.js +22 -19
- package/dist/test/collection-facets/toggle-switch.test.js.map +1 -1
- package/dist/test/collection-facets.test.js +80 -97
- package/dist/test/collection-facets.test.js.map +1 -1
- package/dist/test/empty-placeholder.test.js +11 -17
- package/dist/test/empty-placeholder.test.js.map +1 -1
- package/dist/test/expanded-date-picker.test.js +8 -14
- package/dist/test/expanded-date-picker.test.js.map +1 -1
- package/dist/test/icon-overlay.test.js +7 -6
- package/dist/test/icon-overlay.test.js.map +1 -1
- package/dist/test/image-block.test.js +16 -26
- package/dist/test/image-block.test.js.map +1 -1
- package/dist/test/item-image.test.js +23 -32
- package/dist/test/item-image.test.js.map +1 -1
- package/dist/test/manage/manage-bar.test.js +21 -33
- package/dist/test/manage/manage-bar.test.js.map +1 -1
- package/dist/test/manage/remove-items-modal-content.test.js +10 -15
- package/dist/test/manage/remove-items-modal-content.test.js.map +1 -1
- package/dist/test/mocks/mock-search-service.js +2 -3
- package/dist/test/mocks/mock-search-service.js.map +1 -1
- package/dist/test/restoration-state-handler.test.js +13 -21
- package/dist/test/restoration-state-handler.test.js.map +1 -1
- package/dist/test/review-block.test.js +16 -18
- package/dist/test/review-block.test.js.map +1 -1
- package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +2 -3
- package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js.map +1 -1
- package/dist/test/sort-filter-bar/alpha-bar.test.js +18 -24
- package/dist/test/sort-filter-bar/alpha-bar.test.js.map +1 -1
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js +178 -180
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -1
- package/dist/test/text-overlay.test.js +16 -15
- package/dist/test/text-overlay.test.js.map +1 -1
- package/dist/test/text-snippet-block.test.js +14 -19
- package/dist/test/text-snippet-block.test.js.map +1 -1
- package/dist/test/tile-stats.test.js +73 -34
- package/dist/test/tile-stats.test.js.map +1 -1
- package/dist/test/tiles/grid/account-tile.test.js +25 -25
- package/dist/test/tiles/grid/account-tile.test.js.map +1 -1
- package/dist/test/tiles/grid/collection-tile.test.js +13 -19
- package/dist/test/tiles/grid/collection-tile.test.js.map +1 -1
- package/dist/test/tiles/grid/item-tile.test.js +141 -168
- package/dist/test/tiles/grid/item-tile.test.js.map +1 -1
- package/dist/test/tiles/grid/search-tile.test.js +9 -13
- package/dist/test/tiles/grid/search-tile.test.js.map +1 -1
- package/dist/test/tiles/hover/hover-pane-controller.test.js +50 -62
- package/dist/test/tiles/hover/hover-pane-controller.test.js.map +1 -1
- package/dist/test/tiles/hover/tile-hover-pane.test.js +12 -16
- package/dist/test/tiles/hover/tile-hover-pane.test.js.map +1 -1
- package/dist/test/tiles/list/tile-list-compact.test.js +104 -118
- package/dist/test/tiles/list/tile-list-compact.test.js.map +1 -1
- package/dist/test/tiles/list/tile-list.test.js +202 -231
- package/dist/test/tiles/list/tile-list.test.js.map +1 -1
- package/dist/test/tiles/tile-dispatcher.test.js +97 -110
- package/dist/test/tiles/tile-dispatcher.test.js.map +1 -1
- package/dist/test/tiles/tile-mediatype-icon.test.js +12 -24
- package/dist/test/tiles/tile-mediatype-icon.test.js.map +1 -1
- package/dist/test/utils/format-date.test.js.map +1 -1
- package/index.html +1 -1
- package/package.json +5 -3
- package/src/collection-browser.ts +3060 -3030
- package/src/collection-facets/models.ts +10 -10
- package/src/collection-facets/more-facets-content.ts +639 -639
- package/src/collection-facets.ts +1 -1
- package/src/combo-box/caret-closed.ts +5 -11
- package/src/combo-box/caret-open.ts +5 -11
- package/src/combo-box/clear.ts +11 -0
- package/src/combo-box/ia-combo-box.ts +1288 -1180
- package/src/combo-box/models.ts +31 -1
- package/src/manage/manage-bar.ts +247 -247
- package/src/restoration-state-handler.ts +5 -1
- package/src/tiles/base-tile-component.ts +65 -65
- package/src/tiles/grid/account-tile.ts +113 -113
- package/src/tiles/grid/collection-tile.ts +163 -163
- package/src/tiles/grid/item-tile.ts +340 -340
- package/src/tiles/grid/search-tile.ts +90 -90
- package/src/tiles/grid/styles/tile-grid-shared-styles.ts +130 -130
- package/src/tiles/hover/hover-pane-controller.ts +613 -613
- package/src/tiles/hover/tile-hover-pane.ts +184 -184
- package/src/tiles/list/tile-list-compact.ts +239 -239
- package/src/tiles/list/tile-list.ts +700 -700
- package/src/tiles/tile-dispatcher.ts +517 -517
- package/src/utils/format-date.ts +62 -62
- package/test/collection-facets/facet-row.test.ts +375 -375
- package/test/collection-facets.test.ts +928 -928
- package/test/tiles/grid/item-tile.test.ts +520 -520
- package/test/tiles/hover/hover-pane-controller.test.ts +418 -418
- package/test/tiles/list/tile-list-compact.test.ts +282 -282
- package/test/tiles/list/tile-list.test.ts +552 -552
- package/test/tiles/tile-dispatcher.test.ts +283 -283
- package/test/utils/format-date.test.ts +89 -89
- package/tsconfig.json +8 -3
- package/vite.config.ts +29 -22
|
@@ -7,12 +7,11 @@ let SmartFacetDropdown = class SmartFacetDropdown extends LitElement {
|
|
|
7
7
|
// COMPONENT LIFECYCLE METHODS
|
|
8
8
|
//
|
|
9
9
|
render() {
|
|
10
|
-
var _a, _b;
|
|
11
10
|
if (!this.facetInfo || !this.activeFacetRef)
|
|
12
11
|
return nothing;
|
|
13
12
|
if (this.facetInfo.length === 0)
|
|
14
13
|
return nothing;
|
|
15
|
-
const displayText =
|
|
14
|
+
const displayText = this.activeFacetRef.displayText ?? this.activeFacetRef.bucketKey;
|
|
16
15
|
if (!displayText)
|
|
17
16
|
return nothing;
|
|
18
17
|
return html `
|
|
@@ -35,7 +34,7 @@ let SmartFacetDropdown = class SmartFacetDropdown extends LitElement {
|
|
|
35
34
|
class="dropdown-label"
|
|
36
35
|
slot="dropdown-label"
|
|
37
36
|
@click=${this.defaultOptionSelected}
|
|
38
|
-
>${
|
|
37
|
+
>${this.labelPrefix ?? nothing} ${displayText}</span
|
|
39
38
|
>
|
|
40
39
|
</ia-dropdown>
|
|
41
40
|
</div>
|
|
@@ -45,29 +44,28 @@ let SmartFacetDropdown = class SmartFacetDropdown extends LitElement {
|
|
|
45
44
|
// OTHER METHODS
|
|
46
45
|
//
|
|
47
46
|
get dropdownOptions() {
|
|
48
|
-
|
|
49
|
-
return ((_b = (_a = this.facetInfo) === null || _a === void 0 ? void 0 : _a.map(smartFacet => {
|
|
50
|
-
var _a, _b;
|
|
47
|
+
return (this.facetInfo?.map(smartFacet => {
|
|
51
48
|
const firstFacet = smartFacet.facets[0];
|
|
52
49
|
return {
|
|
53
50
|
id: firstFacet.bucketKey,
|
|
54
51
|
label: html `<span>
|
|
55
|
-
${
|
|
52
|
+
${smartFacet.label ??
|
|
53
|
+
firstFacet.displayText ??
|
|
54
|
+
firstFacet.bucketKey}
|
|
56
55
|
</span>`,
|
|
57
56
|
};
|
|
58
|
-
})
|
|
57
|
+
}) ?? []);
|
|
59
58
|
}
|
|
60
59
|
get activeDropdownOption() {
|
|
61
60
|
if (!this.activeFacetRef)
|
|
62
61
|
return undefined;
|
|
63
|
-
return this.dropdownOptions.find(opt =>
|
|
62
|
+
return this.dropdownOptions.find(opt => opt.id === this.activeFacetRef?.bucketKey);
|
|
64
63
|
}
|
|
65
64
|
/**
|
|
66
65
|
* Handler for when the default option on the dropdown button is clicked
|
|
67
66
|
*/
|
|
68
67
|
defaultOptionSelected() {
|
|
69
|
-
|
|
70
|
-
this.handleSelection((_a = this.activeFacetRef) === null || _a === void 0 ? void 0 : _a.bucketKey);
|
|
68
|
+
this.handleSelection(this.activeFacetRef?.bucketKey);
|
|
71
69
|
}
|
|
72
70
|
/**
|
|
73
71
|
* Handler for when an option in the dropdown menu is selected
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-facet-dropdown.js","sourceRoot":"","sources":["../../../../src/collection-facets/smart-facets/smart-facet-dropdown.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAkB,OAAO,EAAE,MAAM,KAAK,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAGnE,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAG/B,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,UAAU;IAShD,EAAE;IACF,8BAA8B;IAC9B,EAAE;IAEF,MAAM
|
|
1
|
+
{"version":3,"file":"smart-facet-dropdown.js","sourceRoot":"","sources":["../../../../src/collection-facets/smart-facets/smart-facet-dropdown.ts"],"names":[],"mappings":"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","sourcesContent":["import { css, html, LitElement, CSSResultGroup, nothing } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport type { IaDropdown, optionInterface } from '@internetarchive/ia-dropdown';\nimport type { FacetRef, SmartFacet, SmartFacetEvent } from './models';\nimport { log } from '../../utils/log';\n\n@customElement('smart-facet-dropdown')\nexport class SmartFacetDropdown extends LitElement {\n @property({ type: Array }) facetInfo?: SmartFacet[];\n\n @property({ type: String }) labelPrefix?: string;\n\n @property({ type: Object }) activeFacetRef?: FacetRef;\n\n @query('ia-dropdown') dropdown?: IaDropdown;\n\n //\n // COMPONENT LIFECYCLE METHODS\n //\n\n render() {\n if (!this.facetInfo || !this.activeFacetRef) return nothing;\n if (this.facetInfo.length === 0) return nothing;\n\n const displayText =\n this.activeFacetRef.displayText ?? this.activeFacetRef.bucketKey;\n if (!displayText) return nothing;\n\n return html`\n <div class=\"dropdown-container\">\n <ia-dropdown\n class=\"dropdown\"\n displayCaret\n closeOnSelect\n closeOnEscape\n closeOnBackdropClick\n includeSelectedOption\n usePopover\n .options=${this.dropdownOptions}\n .selectedOption=${this.activeDropdownOption}\n .openViaButton=${false}\n @optionSelected=${this.optionSelected}\n @click=${this.onDropdownClick}\n >\n <span\n class=\"dropdown-label\"\n slot=\"dropdown-label\"\n @click=${this.defaultOptionSelected}\n >${this.labelPrefix ?? nothing} ${displayText}</span\n >\n </ia-dropdown>\n </div>\n `;\n }\n\n //\n // OTHER METHODS\n //\n\n private get dropdownOptions(): optionInterface[] {\n return (\n this.facetInfo?.map(smartFacet => {\n const firstFacet = smartFacet.facets[0];\n return {\n id: firstFacet.bucketKey,\n label: html`<span>\n ${smartFacet.label ??\n firstFacet.displayText ??\n firstFacet.bucketKey}\n </span>`,\n };\n }) ?? []\n );\n }\n\n private get activeDropdownOption(): optionInterface | undefined {\n if (!this.activeFacetRef) return undefined;\n return this.dropdownOptions.find(\n opt => opt.id === this.activeFacetRef?.bucketKey,\n );\n }\n\n /**\n * Handler for when the default option on the dropdown button is clicked\n */\n private defaultOptionSelected(): void {\n this.handleSelection(this.activeFacetRef?.bucketKey);\n }\n\n /**\n * Handler for when an option in the dropdown menu is selected\n */\n private optionSelected(e: CustomEvent<{ option: optionInterface }>): void {\n this.handleSelection(e.detail.option.id);\n }\n\n /**\n * Responds to a dropdown selection by emitting a `facetClick` event with\n * the appropriate facet details.\n */\n private handleSelection(bucketKey?: string): void {\n if (!bucketKey || !this.facetInfo || !this.activeFacetRef) return;\n\n let selectedSmartFacet;\n for (const smartFacet of this.facetInfo) {\n const selectedRef = smartFacet.facets.find(\n b => b.bucketKey === bucketKey,\n );\n if (selectedRef) {\n this.activeFacetRef = selectedRef;\n selectedSmartFacet = smartFacet;\n }\n }\n\n if (!selectedSmartFacet) return;\n\n this.dispatchEvent(\n new CustomEvent<SmartFacetEvent>('facetClick', {\n detail: {\n smartFacet: selectedSmartFacet,\n details: [\n {\n facetType: this.activeFacetRef.facetType,\n bucket: {\n key: this.activeFacetRef.bucketKey,\n count: 0,\n state: 'selected',\n },\n negative: false,\n },\n ],\n },\n }),\n );\n }\n\n private onDropdownClick(): void {\n log('smart dropdown: onDropdownClick', this);\n this.dispatchEvent(\n new CustomEvent<SmartFacetDropdown>('dropdownClick', { detail: this }),\n );\n }\n\n close(): void {\n if (this.dropdown) {\n this.dropdown.open = false;\n }\n }\n\n //\n // STYLES\n //\n\n static get styles(): CSSResultGroup {\n return css`\n .dropdown-container {\n padding: 5px 5px;\n border-radius: 5px;\n background: white;\n color: #2c2c2c;\n border: 1px solid #194880;\n font-size: 1.4rem;\n font-family: inherit;\n }\n\n .dropdown-label {\n font-size: 1.4rem;\n font-family: inherit;\n }\n\n .dropdown {\n --dropdownBorderColor: #194880;\n --dropdownBorderWidth: 1px;\n --dropdownBgColor: white;\n --dropdownHoverBgColor: #f8f8f8;\n --dropdownTextColor: #2c2c2c;\n --dropdownHoverTextColor: #2c2c2c;\n --dropdownCaretColor: #2c2c2c;\n --dropdownWhiteSpace: nowrap;\n --caretWidth: 14px;\n --caretHeight: 14px;\n }\n `;\n }\n}\n"]}
|
|
@@ -3,16 +3,16 @@ import { BrowserLanguageHeuristic } from './heuristics/browser-language/browser-
|
|
|
3
3
|
import { QueryKeywordsHeuristic } from './heuristics/query-keywords/query-keywords-heuristic';
|
|
4
4
|
import { WikidataHeuristic } from './heuristics/wikidata/wikidata-heuristic';
|
|
5
5
|
export class SmartQueryHeuristicGroup {
|
|
6
|
+
// Avoid collapsing the array onto one line
|
|
7
|
+
// prettier-ignore
|
|
8
|
+
static { this.DEFAULT_HEURISTICS = [
|
|
9
|
+
QueryKeywordsHeuristic,
|
|
10
|
+
WikidataHeuristic,
|
|
11
|
+
BrowserLanguageHeuristic
|
|
12
|
+
]; }
|
|
6
13
|
async getRecommendedFacets(query, heuristics = SmartQueryHeuristicGroup.DEFAULT_HEURISTICS) {
|
|
7
14
|
const promises = heuristics.map(HeuristicCtor => new HeuristicCtor().getRecommendedFacets(query));
|
|
8
15
|
return dedupe((await Promise.all(promises)).flat());
|
|
9
16
|
}
|
|
10
17
|
}
|
|
11
|
-
// Avoid collapsing the array onto one line
|
|
12
|
-
// prettier-ignore
|
|
13
|
-
SmartQueryHeuristicGroup.DEFAULT_HEURISTICS = [
|
|
14
|
-
QueryKeywordsHeuristic,
|
|
15
|
-
WikidataHeuristic,
|
|
16
|
-
BrowserLanguageHeuristic
|
|
17
|
-
];
|
|
18
18
|
//# sourceMappingURL=smart-facet-heuristics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-facet-heuristics.js","sourceRoot":"","sources":["../../../../src/collection-facets/smart-facets/smart-facet-heuristics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AACpG,OAAO,EAAE,sBAAsB,EAAE,MAAM,sDAAsD,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAG7E,MAAM,OAAO,wBAAwB;
|
|
1
|
+
{"version":3,"file":"smart-facet-heuristics.js","sourceRoot":"","sources":["../../../../src/collection-facets/smart-facets/smart-facet-heuristics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AACpG,OAAO,EAAE,sBAAsB,EAAE,MAAM,sDAAsD,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAG7E,MAAM,OAAO,wBAAwB;IACnC,2CAA2C;IAC3C,kBAAkB;aACM,uBAAkB,GAAsC;QAC9E,sBAAsB;QACtB,iBAAiB;QACjB,wBAAwB;KACzB,CAAC;IAEF,KAAK,CAAC,oBAAoB,CACxB,KAAa,EACb,UAAU,GAAG,wBAAwB,CAAC,kBAAkB;QAExD,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAC9C,IAAI,aAAa,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAChD,CAAC;QAEF,OAAO,MAAM,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC","sourcesContent":["import { dedupe } from './dedupe';\nimport { BrowserLanguageHeuristic } from './heuristics/browser-language/browser-language-heuristic';\nimport { QueryKeywordsHeuristic } from './heuristics/query-keywords/query-keywords-heuristic';\nimport { WikidataHeuristic } from './heuristics/wikidata/wikidata-heuristic';\nimport type { SmartFacet, SmartQueryHeuristic } from './models';\n\nexport class SmartQueryHeuristicGroup implements SmartQueryHeuristic {\n // Avoid collapsing the array onto one line\n // prettier-ignore\n private static readonly DEFAULT_HEURISTICS: (new () => SmartQueryHeuristic)[] = [\n QueryKeywordsHeuristic,\n WikidataHeuristic,\n BrowserLanguageHeuristic\n ];\n\n async getRecommendedFacets(\n query: string,\n heuristics = SmartQueryHeuristicGroup.DEFAULT_HEURISTICS,\n ): Promise<SmartFacet[]> {\n const promises = heuristics.map(HeuristicCtor =>\n new HeuristicCtor().getRecommendedFacets(query),\n );\n\n return dedupe((await Promise.all(promises)).flat());\n }\n}\n"]}
|
|
@@ -19,10 +19,9 @@ let ToggleSwitch = class ToggleSwitch extends LitElement {
|
|
|
19
19
|
this.side = 'left';
|
|
20
20
|
}
|
|
21
21
|
render() {
|
|
22
|
-
var _a, _b;
|
|
23
22
|
return html `
|
|
24
23
|
<div id="container">
|
|
25
|
-
<label for="switch-left">${
|
|
24
|
+
<label for="switch-left">${this.leftLabel ?? this.leftValue}</label>
|
|
26
25
|
<input
|
|
27
26
|
type="radio"
|
|
28
27
|
id="switch-left"
|
|
@@ -49,7 +48,7 @@ let ToggleSwitch = class ToggleSwitch extends LitElement {
|
|
|
49
48
|
>
|
|
50
49
|
<div id="knob"></div>
|
|
51
50
|
</button>
|
|
52
|
-
<label for="switch-right">${
|
|
51
|
+
<label for="switch-right">${this.rightLabel ?? this.rightValue}</label>
|
|
53
52
|
</div>
|
|
54
53
|
`;
|
|
55
54
|
}
|
|
@@ -64,10 +63,9 @@ let ToggleSwitch = class ToggleSwitch extends LitElement {
|
|
|
64
63
|
* Falls back to the current value if its label is not defined.
|
|
65
64
|
*/
|
|
66
65
|
get selectedLabel() {
|
|
67
|
-
var _a, _b;
|
|
68
66
|
return this.side === 'left'
|
|
69
|
-
? (
|
|
70
|
-
: (
|
|
67
|
+
? (this.leftLabel ?? this.leftValue)
|
|
68
|
+
: (this.rightLabel ?? this.rightValue);
|
|
71
69
|
}
|
|
72
70
|
handleClick() {
|
|
73
71
|
this.side = this.side === 'left' ? 'right' : 'left';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle-switch.js","sourceRoot":"","sources":["../../../src/collection-facets/toggle-switch.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAkB,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKzC,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,UAAU;IAArC;;QACL;;WAEG;QAC0C,cAAS,GAAW,EAAE,CAAC;QAQpE;;WAEG;QAC0C,eAAU,GAAW,EAAE,CAAC;QAQrE;;WAEG;QAC0C,SAAI,GAAS,MAAM,CAAC;IA4InE,CAAC;IAvIC,MAAM
|
|
1
|
+
{"version":3,"file":"toggle-switch.js","sourceRoot":"","sources":["../../../src/collection-facets/toggle-switch.ts"],"names":[],"mappings":"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","sourcesContent":["import { css, html, LitElement, CSSResultGroup } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { srOnlyStyle } from '../styles/sr-only';\n\nexport type Side = 'left' | 'right';\n\n@customElement('toggle-switch')\nexport class ToggleSwitch extends LitElement {\n /**\n * The value this switch should have when toggled to the left.\n */\n @property({ type: String, attribute: true }) leftValue: string = '';\n\n /**\n * The human-readable label to display on the left side of this switch.\n * If none is provided, `leftValue` is used.\n */\n @property({ type: String, attribute: true }) leftLabel?: string;\n\n /**\n * The value this switch should have when toggled to the right.\n */\n @property({ type: String, attribute: true }) rightValue: string = '';\n\n /**\n * The human-readable label to display on the right side of this switch.\n * If none is provided, `rightValue` is used.\n */\n @property({ type: String, attribute: true }) rightLabel?: string;\n\n /**\n * Which side of the switch is selected (`'left'` or `'right'`).\n */\n @property({ type: String, attribute: true }) side: Side = 'left';\n\n @query('#switch-left')\n private leftRadio!: HTMLInputElement;\n\n render() {\n return html`\n <div id=\"container\">\n <label for=\"switch-left\">${this.leftLabel ?? this.leftValue}</label>\n <input\n type=\"radio\"\n id=\"switch-left\"\n class=\"sr-only\"\n name=\"switch\"\n .value=${this.leftValue}\n .checked=${this.side === 'left'}\n @change=${this.handleRadioChange}\n />\n <input\n type=\"radio\"\n id=\"switch-right\"\n class=\"sr-only\"\n name=\"switch\"\n .value=${this.rightValue}\n .checked=${this.side === 'right'}\n @change=${this.handleRadioChange}\n />\n <button\n id=\"switch-button\"\n class=${this.side}\n aria-hidden=\"true\"\n @click=${this.handleClick}\n >\n <div id=\"knob\"></div>\n </button>\n <label for=\"switch-right\">${this.rightLabel ?? this.rightValue}</label>\n </div>\n `;\n }\n\n /**\n * The currently selected value of this switch.\n */\n get value(): string {\n return this.side === 'left' ? this.leftValue : this.rightValue;\n }\n\n /**\n * The label for the currently selected value of this switch.\n * Falls back to the current value if its label is not defined.\n */\n get selectedLabel(): string {\n return this.side === 'left'\n ? (this.leftLabel ?? this.leftValue)\n : (this.rightLabel ?? this.rightValue);\n }\n\n private handleClick(): void {\n this.side = this.side === 'left' ? 'right' : 'left';\n this.emitChangeEvent();\n }\n\n private handleRadioChange(): void {\n this.side = this.leftRadio.checked ? 'left' : 'right';\n this.emitChangeEvent();\n }\n\n private emitChangeEvent(): void {\n const event = new CustomEvent<string>('change', {\n detail: this.value,\n });\n this.dispatchEvent(event);\n }\n\n static get styles(): CSSResultGroup {\n const switchWidth = css`var(--switchWidth, 30px)`;\n const switchHeight = css`var(--switchHeight, 14px)`;\n const switchMarginLeft = css`var(--switchMarginLeft, 5px)`;\n const switchMarginRight = css`var(--switchMarginRight, 5px)`;\n const switchBorderWidth = css`var(--switchBorderWidth, 3px)`;\n const switchBgColor = css`var(--switchBgColor, #194880)`;\n const switchBorderColor = css`var(--switchBorderColor, #194880)`;\n const labelFontSize = css`var(--labelFontSize, 1.3rem)`;\n const knobColor = css`var(--knobColor, white)`;\n const knobTransitionDuration = css`var(--knobTransitionDuration, 0.25s)`;\n const knobTransitionFn = css`var(--knobTransitionFn, ease)`;\n\n return [\n srOnlyStyle,\n css`\n #container {\n display: inline-flex;\n align-items: center;\n flex-wrap: nowrap;\n font-size: ${labelFontSize};\n }\n\n #switch-button {\n width: ${switchWidth};\n height: ${switchHeight};\n margin: 0 ${switchMarginRight} 0 ${switchMarginLeft};\n padding: 0;\n border: ${switchBorderWidth} solid ${switchBorderColor};\n border-radius: ${switchHeight};\n box-sizing: content-box;\n background: ${switchBgColor};\n appearance: none;\n cursor: pointer;\n }\n\n #switch-button.left #knob {\n transform: translateX(0);\n }\n\n #switch-button.right #knob {\n transform: translateX(calc(${switchWidth} - ${switchHeight}));\n }\n\n #switch-button:focus-visible {\n outline: 2px solid black;\n outline-offset: 2px;\n }\n\n #knob {\n display: block;\n width: ${switchHeight};\n height: ${switchHeight};\n border-radius: 50%;\n background: ${knobColor};\n transition: transform ${knobTransitionDuration} ${knobTransitionFn};\n }\n\n @media (prefers-reduced-motion: reduce) {\n #knob {\n transition-duration: 0.001s !important; /* Imperceptibly fast */\n }\n }\n `,\n ];\n }\n}\n"]}
|
|
@@ -53,8 +53,7 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
53
53
|
*/
|
|
54
54
|
this.allowedFacetCount = 6;
|
|
55
55
|
this.handleExpandedDatePickerClosed = () => {
|
|
56
|
-
|
|
57
|
-
(_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.classList.remove('expanded-date-picker');
|
|
56
|
+
this.modalManager?.classList.remove('expanded-date-picker');
|
|
58
57
|
};
|
|
59
58
|
/**
|
|
60
59
|
* Dispatches a `histogramDateRangeUpdated` event with the date range copied from the
|
|
@@ -106,9 +105,8 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
106
105
|
`;
|
|
107
106
|
}
|
|
108
107
|
get collectionPartOfTemplate() {
|
|
109
|
-
var _a;
|
|
110
108
|
// We only display the "Part Of" section on collection pages
|
|
111
|
-
if (!
|
|
109
|
+
if (!this.parentCollections?.length)
|
|
112
110
|
return nothing;
|
|
113
111
|
// Added data-testid for Playwright testing
|
|
114
112
|
// Using className and aria-labels is not ideal for Playwright locator
|
|
@@ -124,7 +122,6 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
124
122
|
</div>
|
|
125
123
|
<ul>
|
|
126
124
|
${map(this.parentCollections, collxn => {
|
|
127
|
-
var _a, _b;
|
|
128
125
|
const collectionURL = `${this.baseNavigationUrl}${this.collectionPagePath}${collxn}`;
|
|
129
126
|
return html ` <li>
|
|
130
127
|
<a
|
|
@@ -132,7 +129,7 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
132
129
|
data-id=${collxn}
|
|
133
130
|
@click=${this.partOfCollectionClicked}
|
|
134
131
|
>
|
|
135
|
-
${
|
|
132
|
+
${this.collectionTitles?.get(collxn) ?? collxn}
|
|
136
133
|
</a>
|
|
137
134
|
</li>`;
|
|
138
135
|
})}
|
|
@@ -141,8 +138,7 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
141
138
|
`;
|
|
142
139
|
}
|
|
143
140
|
partOfCollectionClicked(e) {
|
|
144
|
-
|
|
145
|
-
(_a = this.analyticsHandler) === null || _a === void 0 ? void 0 : _a.sendEvent({
|
|
141
|
+
this.analyticsHandler?.sendEvent({
|
|
146
142
|
category: analyticsCategories.default,
|
|
147
143
|
action: analyticsActions.partOfCollectionClicked,
|
|
148
144
|
label: e.target.dataset.id,
|
|
@@ -152,19 +148,18 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
152
148
|
* Properties to pass into the date-picker histogram component
|
|
153
149
|
*/
|
|
154
150
|
get histogramProps() {
|
|
155
|
-
var _a, _b, _c, _d, _e, _f;
|
|
156
151
|
const { histogramAggregation: aggregation } = this;
|
|
157
152
|
if (!aggregation)
|
|
158
153
|
return undefined;
|
|
159
154
|
// Normalize some properties from the raw aggregation
|
|
160
|
-
const firstYear =
|
|
161
|
-
const lastYear =
|
|
155
|
+
const firstYear = aggregation.first_bucket_year ?? aggregation.first_bucket_key;
|
|
156
|
+
const lastYear = aggregation.last_bucket_year ?? aggregation.last_bucket_key;
|
|
162
157
|
if (firstYear == null || lastYear == null)
|
|
163
158
|
return undefined; // We at least need a start/end year defined
|
|
164
|
-
const firstMonth =
|
|
165
|
-
const lastMonth =
|
|
166
|
-
const yearInterval =
|
|
167
|
-
const monthInterval =
|
|
159
|
+
const firstMonth = aggregation.first_bucket_month ?? 1;
|
|
160
|
+
const lastMonth = aggregation.last_bucket_month ?? 12;
|
|
161
|
+
const yearInterval = aggregation.interval ?? 1;
|
|
162
|
+
const monthInterval = aggregation.interval_in_months ?? 12;
|
|
168
163
|
const zeroPadMonth = (month) => month.toString().padStart(2, '0');
|
|
169
164
|
// The date picker is configured differently for TV search, allowing month-level resolution
|
|
170
165
|
if (this.isTvSearch) {
|
|
@@ -200,7 +195,6 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
200
195
|
* Opens a modal dialog containing an enlarged version of the date picker.
|
|
201
196
|
*/
|
|
202
197
|
showDatePickerModal() {
|
|
203
|
-
var _a, _b, _c;
|
|
204
198
|
const { histogramProps } = this;
|
|
205
199
|
if (!histogramProps)
|
|
206
200
|
return;
|
|
@@ -246,13 +240,13 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
246
240
|
closeOnBackdropClick: true, // TODO: want to fire analytics
|
|
247
241
|
title: html `${msg('Select a date range')}`,
|
|
248
242
|
});
|
|
249
|
-
|
|
250
|
-
|
|
243
|
+
this.modalManager?.classList.add('expanded-date-picker');
|
|
244
|
+
this.modalManager?.showModal({
|
|
251
245
|
config,
|
|
252
246
|
customModalContent,
|
|
253
247
|
userClosedModalCallback: this.handleExpandedDatePickerClosed,
|
|
254
248
|
});
|
|
255
|
-
|
|
249
|
+
this.analyticsHandler?.sendEvent({
|
|
256
250
|
category: analyticsCategories.default,
|
|
257
251
|
action: analyticsActions.histogramExpanded,
|
|
258
252
|
label: window.location.href,
|
|
@@ -287,7 +281,6 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
287
281
|
: nothing;
|
|
288
282
|
}
|
|
289
283
|
get histogramTemplate() {
|
|
290
|
-
var _a, _b;
|
|
291
284
|
if (this.histogramAggregationLoading) {
|
|
292
285
|
return html ` <div class="histogram-loading-indicator">…</div> `;
|
|
293
286
|
}
|
|
@@ -300,8 +293,8 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
300
293
|
class=${this.isTvSearch ? 'wide-inputs' : ''}
|
|
301
294
|
.minDate=${minDate}
|
|
302
295
|
.maxDate=${maxDate}
|
|
303
|
-
.minSelectedDate=${
|
|
304
|
-
.maxSelectedDate=${
|
|
296
|
+
.minSelectedDate=${this.minSelectedDate ?? minDate}
|
|
297
|
+
.maxSelectedDate=${this.maxSelectedDate ?? maxDate}
|
|
305
298
|
.updateDelay=${100}
|
|
306
299
|
.dateFormat=${dateFormat}
|
|
307
300
|
.tooltipDateFormat=${tooltipDateFormat}
|
|
@@ -323,7 +316,6 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
323
316
|
get mergedFacets() {
|
|
324
317
|
const facetGroups = [];
|
|
325
318
|
this.facetDisplayOrder.forEach(facetKey => {
|
|
326
|
-
var _a, _b;
|
|
327
319
|
if (facetKey === 'mediatype' && this.suppressMediatypeFacets)
|
|
328
320
|
return;
|
|
329
321
|
const selectedFacetGroup = this.selectedFacetGroups.find(group => group.key === facetKey);
|
|
@@ -337,9 +329,9 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
337
329
|
if (!aggregateFacetGroup)
|
|
338
330
|
return;
|
|
339
331
|
// start with either the selected group if we have one, or the aggregate group
|
|
340
|
-
const facetGroup = selectedFacetGroup
|
|
332
|
+
const facetGroup = selectedFacetGroup ?? aggregateFacetGroup;
|
|
341
333
|
// attach the counts to the selected buckets
|
|
342
|
-
let bucketsWithCount =
|
|
334
|
+
let bucketsWithCount = selectedFacetGroup?.buckets.map(bucket => {
|
|
343
335
|
const selectedBucket = aggregateFacetGroup.buckets.find(b => b.key === bucket.key);
|
|
344
336
|
return selectedBucket
|
|
345
337
|
? {
|
|
@@ -347,7 +339,7 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
347
339
|
count: selectedBucket.count,
|
|
348
340
|
}
|
|
349
341
|
: bucket;
|
|
350
|
-
})
|
|
342
|
+
}) ?? [];
|
|
351
343
|
// append any additional buckets that were not selected
|
|
352
344
|
aggregateFacetGroup.buckets.forEach(bucket => {
|
|
353
345
|
const existingBucket = bucketsWithCount.find(b => b.key === bucket.key);
|
|
@@ -361,7 +353,7 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
361
353
|
* - by-default we are showing 6 items
|
|
362
354
|
* - additionally want to show all items (selected/suppressed) in page facet area
|
|
363
355
|
*/
|
|
364
|
-
let allowedFacetCount =
|
|
356
|
+
let allowedFacetCount = Object.keys(selectedFacetGroup?.buckets || [])?.length;
|
|
365
357
|
if (allowedFacetCount < this.allowedFacetCount) {
|
|
366
358
|
allowedFacetCount = this.allowedFacetCount; // splice start index from 0th
|
|
367
359
|
}
|
|
@@ -386,9 +378,8 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
386
378
|
// For TV creator facets, uppercase the display text
|
|
387
379
|
if (facetKey === 'creator' && this.isTvSearch) {
|
|
388
380
|
bucketsWithCount.forEach(b => {
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
const channelLabel = (_c = this.tvChannelAliases) === null || _c === void 0 ? void 0 : _c.get(b.displayText);
|
|
381
|
+
b.displayText = (b.displayText ?? b.key)?.toLocaleUpperCase();
|
|
382
|
+
const channelLabel = this.tvChannelAliases?.get(b.displayText);
|
|
392
383
|
if (channelLabel && channelLabel !== b.displayText) {
|
|
393
384
|
b.extraNote = `(${channelLabel})`;
|
|
394
385
|
}
|
|
@@ -397,8 +388,7 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
397
388
|
// For TV clip_type facets, capitalize the display text
|
|
398
389
|
if (facetKey === 'clip_type') {
|
|
399
390
|
bucketsWithCount.forEach(b => {
|
|
400
|
-
|
|
401
|
-
(_a = b.displayText) !== null && _a !== void 0 ? _a : (b.displayText = b.key);
|
|
391
|
+
b.displayText ??= b.key;
|
|
402
392
|
b.displayText =
|
|
403
393
|
b.displayText.charAt(0).toLocaleUpperCase() +
|
|
404
394
|
b.displayText.slice(1);
|
|
@@ -421,12 +411,11 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
421
411
|
const option = key;
|
|
422
412
|
const title = facetTitles[option];
|
|
423
413
|
const buckets = Object.entries(selectedFacets).map(([value, facetData]) => {
|
|
424
|
-
var _a;
|
|
425
414
|
let displayText = value;
|
|
426
415
|
// for lending facets, convert the key to a readable format
|
|
427
416
|
if (option === 'lending') {
|
|
428
417
|
displayText =
|
|
429
|
-
|
|
418
|
+
lendingFacetDisplayNames[value] ?? value;
|
|
430
419
|
}
|
|
431
420
|
return {
|
|
432
421
|
displayText,
|
|
@@ -447,9 +436,8 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
447
436
|
* Converts the raw `aggregations` to `FacetGroups`, which are easier to use
|
|
448
437
|
*/
|
|
449
438
|
get aggregationFacetGroups() {
|
|
450
|
-
var _a;
|
|
451
439
|
const facetGroups = [];
|
|
452
|
-
Object.entries(
|
|
440
|
+
Object.entries(this.aggregations ?? []).forEach(([key, aggregation]) => {
|
|
453
441
|
// the year_histogram and date_histogram data is in a different format so can't be handled here
|
|
454
442
|
if (['year_histogram', 'date_histogram'].includes(key))
|
|
455
443
|
return;
|
|
@@ -460,20 +448,19 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
460
448
|
let castedBuckets = aggregation.getSortedBuckets(defaultFacetSort[option]);
|
|
461
449
|
if (option === 'collection') {
|
|
462
450
|
// we are not showing fav- collections or certain deemphasized collections in facets
|
|
463
|
-
castedBuckets = castedBuckets
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
return (!suppressedCollections[bucketKey] && !(bucketKey === null || bucketKey === void 0 ? void 0 : bucketKey.startsWith('fav-')));
|
|
451
|
+
castedBuckets = castedBuckets?.filter(bucket => {
|
|
452
|
+
const bucketKey = bucket?.key?.toString();
|
|
453
|
+
return (!suppressedCollections[bucketKey] && !bucketKey?.startsWith('fav-'));
|
|
467
454
|
});
|
|
468
455
|
}
|
|
469
456
|
const facetBuckets = castedBuckets.map(bucket => {
|
|
470
|
-
var _a;
|
|
471
457
|
const bucketKey = bucket.key;
|
|
472
458
|
let displayText = `${bucket.key}`;
|
|
473
459
|
// for lending facets, convert the bucket key to a readable format
|
|
474
460
|
if (option === 'lending') {
|
|
475
461
|
displayText =
|
|
476
|
-
|
|
462
|
+
lendingFacetDisplayNames[bucket.key] ??
|
|
463
|
+
`${bucket.key}`;
|
|
477
464
|
}
|
|
478
465
|
return {
|
|
479
466
|
displayText,
|
|
@@ -572,9 +559,8 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
572
559
|
return html `<button
|
|
573
560
|
class="more-link"
|
|
574
561
|
@click=${() => {
|
|
575
|
-
var _a;
|
|
576
562
|
this.showMoreFacetsModal(facetGroup, facetSort);
|
|
577
|
-
|
|
563
|
+
this.analyticsHandler?.sendEvent({
|
|
578
564
|
category: analyticsCategories.default,
|
|
579
565
|
action: analyticsActions.showMoreFacetsModal,
|
|
580
566
|
label: facetGroup.key,
|
|
@@ -587,7 +573,6 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
587
573
|
</button>`;
|
|
588
574
|
}
|
|
589
575
|
async showMoreFacetsModal(facetGroup, sortedBy) {
|
|
590
|
-
var _a, _b;
|
|
591
576
|
const customModalContent = html `
|
|
592
577
|
<more-facets-content
|
|
593
578
|
.analyticsHandler=${this.analyticsHandler}
|
|
@@ -622,13 +607,12 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
622
607
|
closeOnBackdropClick: true, // TODO: want to fire analytics
|
|
623
608
|
title: html `Select filters`,
|
|
624
609
|
});
|
|
625
|
-
|
|
626
|
-
|
|
610
|
+
this.modalManager?.classList.add('more-search-facets');
|
|
611
|
+
this.modalManager?.showModal({
|
|
627
612
|
config,
|
|
628
613
|
customModalContent,
|
|
629
614
|
userClosedModalCallback: () => {
|
|
630
|
-
|
|
631
|
-
(_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.classList.remove('more-search-facets');
|
|
615
|
+
this.modalManager?.classList.remove('more-search-facets');
|
|
632
616
|
},
|
|
633
617
|
});
|
|
634
618
|
}
|
|
@@ -676,7 +660,7 @@ let CollectionFacets = class CollectionFacets extends LitElement {
|
|
|
676
660
|
|
|
677
661
|
.histogram-loading-indicator {
|
|
678
662
|
width: 100%;
|
|
679
|
-
height:
|
|
663
|
+
height: 5.25rem;
|
|
680
664
|
margin-top: 1.75rem;
|
|
681
665
|
font-size: 1.4rem;
|
|
682
666
|
text-align: center;
|