@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
|
@@ -20,7 +20,6 @@ let FacetRow = FacetRow_1 = class FacetRow extends LitElement {
|
|
|
20
20
|
* the display name, and the count.
|
|
21
21
|
*/
|
|
22
22
|
get facetRowTemplate() {
|
|
23
|
-
var _a, _b, _c, _d;
|
|
24
23
|
const { bucket, facetType } = this;
|
|
25
24
|
if (!bucket || !facetType)
|
|
26
25
|
return nothing;
|
|
@@ -32,14 +31,14 @@ let FacetRow = FacetRow_1 = class FacetRow extends LitElement {
|
|
|
32
31
|
// For collections, we render the collection title as a link.
|
|
33
32
|
// For other facet types, we just have a static value to use.
|
|
34
33
|
const bucketTextDisplay = facetType !== 'collection'
|
|
35
|
-
? html `${
|
|
34
|
+
? html `${bucket.displayText ?? bucket.key} ${extraNoteSpan}`
|
|
36
35
|
: html `<a href="/details/${bucket.key}">
|
|
37
|
-
${
|
|
36
|
+
${this.collectionTitles?.get(bucket.key) ?? bucket.key}
|
|
38
37
|
</a> `;
|
|
39
38
|
const bucketCountText = bucket.count > 0 ? bucket.count.toLocaleString() : '';
|
|
40
39
|
const facetHidden = bucket.state === 'hidden';
|
|
41
40
|
const facetSelected = bucket.state === 'selected';
|
|
42
|
-
const titleText = `${facetType}: ${
|
|
41
|
+
const titleText = `${facetType}: ${bucket.displayText ?? bucket.key}`;
|
|
43
42
|
const onlyShowText = facetSelected
|
|
44
43
|
? `Show all ${facetType}s`
|
|
45
44
|
: `Only show ${titleText}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facet-row.js","sourceRoot":"","sources":["../../../src/collection-facets/facet-row.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n css,\r\n html,\r\n LitElement,\r\n TemplateResult,\r\n CSSResultGroup,\r\n nothing,\r\n} from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport eyeIcon from '../assets/img/icons/eye';\r\nimport eyeClosedIcon from '../assets/img/icons/eye-closed';\r\nimport type {\r\n FacetOption,\r\n FacetBucket,\r\n FacetEventDetails,\r\n FacetState,\r\n} from '../models';\r\nimport type { CollectionTitles } from '../data-source/models';\r\nimport { srOnlyStyle } from '../styles/sr-only';\r\n\r\n@customElement('facet-row')\r\nexport class FacetRow extends LitElement {\r\n //\r\n // UI STATE\r\n //\r\n\r\n /** The name of the facet group to which this facet belongs (e.g., \"mediatype\") */\r\n @property({ type: String }) facetType?: FacetOption;\r\n\r\n /** The facet bucket containing details about the state, count, and key for this row */\r\n @property({ type: Object }) bucket?: FacetBucket;\r\n\r\n /** The collection name cache for converting collection identifiers to titles */\r\n @property({ type: Object })\r\n collectionTitles?: CollectionTitles;\r\n\r\n //\r\n // COMPONENT LIFECYCLE METHODS\r\n //\r\n\r\n render() {\r\n return html`${this.facetRowTemplate}`;\r\n }\r\n\r\n //\r\n // TEMPLATE GETTERS\r\n //\r\n\r\n /**\r\n * Template for the full facet row, including the positive/negative checks,\r\n * the display name, and the count.\r\n */\r\n private get facetRowTemplate(): TemplateResult | typeof nothing {\r\n const { bucket, facetType } = this;\r\n if (!bucket || !facetType) return nothing;\r\n\r\n const showOnlyCheckboxId = `${facetType}:${bucket.key}-show-only`;\r\n const negativeCheckboxId = `${facetType}:${bucket.key}-negative`;\r\n\r\n const extraNoteSpan = bucket.extraNote\r\n ? html`<span class=\"facet-note\">${bucket.extraNote}</span>`\r\n : nothing;\r\n\r\n // For collections, we render the collection title as a link.\r\n // For other facet types, we just have a static value to use.\r\n const bucketTextDisplay =\r\n facetType !== 'collection'\r\n ? html`${bucket.displayText ?? bucket.key} ${extraNoteSpan}`\r\n : html`<a href=\"/details/${bucket.key}\">\r\n ${this.collectionTitles?.get(bucket.key) ?? bucket.key}\r\n </a> `;\r\n\r\n const bucketCountText =\r\n bucket.count > 0 ? bucket.count.toLocaleString() : '';\r\n\r\n const facetHidden = bucket.state === 'hidden';\r\n const facetSelected = bucket.state === 'selected';\r\n\r\n const titleText = `${facetType}: ${bucket.displayText ?? bucket.key}`;\r\n const onlyShowText = facetSelected\r\n ? `Show all ${facetType}s`\r\n : `Only show ${titleText}`;\r\n const hideText = `Hide ${titleText}`;\r\n const unhideText = `Unhide ${titleText}`;\r\n const showHideText = facetHidden ? unhideText : hideText;\r\n const ariaLabel = `${titleText}, ${bucket.count} results`;\r\n\r\n // Added data-testid for Playwright testing\r\n return html`\r\n <div class=\"facet-row-container\">\r\n <div class=\"facet-checkboxes\">\r\n <input\r\n type=\"checkbox\"\r\n .name=${facetType}\r\n .value=${bucket.key}\r\n @click=${(e: Event) => {\r\n this.facetClicked(e, false);\r\n }}\r\n .checked=${facetSelected}\r\n class=\"select-facet-checkbox\"\r\n title=${onlyShowText}\r\n id=${showOnlyCheckboxId}\r\n data-testid=${showOnlyCheckboxId}\r\n />\r\n <div class=\"hide-facet-container\">\r\n <input\r\n type=\"checkbox\"\r\n id=${negativeCheckboxId}\r\n .name=${facetType}\r\n .value=${bucket.key}\r\n @click=${(e: Event) => {\r\n this.facetClicked(e, true);\r\n }}\r\n .checked=${facetHidden}\r\n class=\"hide-facet-checkbox\"\r\n />\r\n <label\r\n for=${negativeCheckboxId}\r\n class=\"hide-facet-icon${facetHidden ? ' active' : ''}\"\r\n title=${showHideText}\r\n data-testid=${negativeCheckboxId}\r\n >\r\n <span class=\"sr-only\">${showHideText}</span>\r\n <span class=\"eye eye-open\">${eyeIcon}</span>\r\n <span class=\"eye eye-closed\">${eyeClosedIcon}</span>\r\n </label>\r\n </div>\r\n </div>\r\n <label\r\n for=${showOnlyCheckboxId}\r\n class=\"facet-info-display\"\r\n title=${onlyShowText}\r\n aria-label=${ariaLabel}\r\n >\r\n <div class=\"facet-title\">${bucketTextDisplay}</div>\r\n <div class=\"facet-count\">${bucketCountText}</div>\r\n </label>\r\n </div>\r\n `;\r\n }\r\n\r\n //\r\n // EVENT HANDLERS & DISPATCHERS\r\n //\r\n\r\n /**\r\n * Handler for whenever this facet is clicked & its state changes\r\n */\r\n private facetClicked(e: Event, negative: boolean) {\r\n const { bucket, facetType } = this;\r\n if (!bucket || !facetType) return;\r\n\r\n const target = e.target as HTMLInputElement;\r\n const { checked } = target;\r\n this.bucket = {\r\n ...bucket,\r\n state: FacetRow.getFacetState(checked, negative),\r\n };\r\n\r\n this.dispatchFacetClickEvent({\r\n facetType,\r\n bucket: this.bucket,\r\n negative,\r\n });\r\n }\r\n\r\n /**\r\n * Emits a `facetClick` event with details about this facet & its current state\r\n */\r\n private dispatchFacetClickEvent(detail: FacetEventDetails) {\r\n const event = new CustomEvent<FacetEventDetails>('facetClick', {\r\n detail,\r\n });\r\n this.dispatchEvent(event);\r\n }\r\n\r\n //\r\n // OTHER METHODS\r\n //\r\n\r\n /**\r\n * Returns the composed facet state corresponding to a positive or negative facet's checked state\r\n */\r\n static getFacetState(checked: boolean, negative: boolean): FacetState {\r\n let state: FacetState;\r\n if (checked) {\r\n state = negative ? 'hidden' : 'selected';\r\n } else {\r\n state = 'none';\r\n }\r\n return state;\r\n }\r\n\r\n //\r\n // STYLES\r\n //\r\n\r\n static get styles(): CSSResultGroup {\r\n const facetRowBorderTop = css`var(--facet-row-border-top, 1px solid transparent)`;\r\n const facetRowBorderBottom = css`var(--facet-row-border-bottom, 1px solid transparent)`;\r\n const checkboxHeight = css`15px`;\r\n\r\n const ownCss = css`\r\n .facet-checkboxes {\r\n margin: 0 5px 0 0;\r\n display: flex;\r\n height: ${checkboxHeight};\r\n }\r\n .facet-checkboxes input:first-child {\r\n margin-right: 5px;\r\n }\r\n .facet-checkboxes input {\r\n height: ${checkboxHeight};\r\n width: ${checkboxHeight};\r\n margin: 0;\r\n }\r\n .facet-row-container {\r\n display: flex;\r\n font-weight: 500;\r\n font-size: 1.2rem;\r\n margin: 0 auto;\r\n padding: 0.25rem 0;\r\n height: auto;\r\n border-top: ${facetRowBorderTop};\r\n border-bottom: ${facetRowBorderBottom};\r\n }\r\n .facet-info-display {\r\n display: flex;\r\n flex: 1 1 0%;\r\n cursor: pointer;\r\n flex-wrap: wrap;\r\n }\r\n .facet-title {\r\n word-break: break-word;\r\n display: inline-block;\r\n flex: 1 1 0%;\r\n }\r\n .facet-note {\r\n color: #bbb;\r\n }\r\n .facet-count {\r\n text-align: right;\r\n }\r\n .select-facet-checkbox {\r\n cursor: pointer;\r\n display: inline-block;\r\n }\r\n .hide-facet-checkbox {\r\n position: absolute;\r\n clip: rect(0, 0, 0, 0);\r\n pointer-events: none;\r\n }\r\n .hide-facet-checkbox:focus-visible + .hide-facet-icon {\r\n outline-style: auto;\r\n outline-offset: 2px;\r\n }\r\n .hide-facet-icon {\r\n width: ${checkboxHeight};\r\n height: ${checkboxHeight};\r\n cursor: pointer;\r\n display: flex;\r\n }\r\n .eye {\r\n width: ${checkboxHeight};\r\n height: ${checkboxHeight};\r\n opacity: 0.3;\r\n }\r\n .hide-facet-icon:hover .eye,\r\n .active .eye {\r\n opacity: 1;\r\n }\r\n .hide-facet-icon:hover .eye-open,\r\n .hide-facet-icon .eye-closed {\r\n display: none;\r\n }\r\n .hide-facet-icon:hover .eye-closed,\r\n .hide-facet-icon.active .eye-closed {\r\n display: inline;\r\n }\r\n .hide-facet-icon.active .eye-open {\r\n display: none;\r\n }\r\n .sorting-icon {\r\n cursor: pointer;\r\n }\r\n\r\n a:link,\r\n a:visited {\r\n text-decoration: none;\r\n color: var(--ia-theme-link-color, #4b64ff);\r\n }\r\n a:hover {\r\n text-decoration: underline;\r\n }\r\n `;\r\n\r\n return [srOnlyStyle, ownCss];\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"facet-row.js","sourceRoot":"","sources":["../../../src/collection-facets/facet-row.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n css,\r\n html,\r\n LitElement,\r\n TemplateResult,\r\n CSSResultGroup,\r\n nothing,\r\n} from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport eyeIcon from '../assets/img/icons/eye';\r\nimport eyeClosedIcon from '../assets/img/icons/eye-closed';\r\nimport type {\r\n FacetOption,\r\n FacetBucket,\r\n FacetEventDetails,\r\n FacetState,\r\n} from '../models';\r\nimport type { CollectionTitles } from '../data-source/models';\r\nimport { srOnlyStyle } from '../styles/sr-only';\r\n\r\n@customElement('facet-row')\r\nexport class FacetRow extends LitElement {\r\n //\r\n // UI STATE\r\n //\r\n\r\n /** The name of the facet group to which this facet belongs (e.g., \"mediatype\") */\r\n @property({ type: String }) facetType?: FacetOption;\r\n\r\n /** The facet bucket containing details about the state, count, and key for this row */\r\n @property({ type: Object }) bucket?: FacetBucket;\r\n\r\n /** The collection name cache for converting collection identifiers to titles */\r\n @property({ type: Object })\r\n collectionTitles?: CollectionTitles;\r\n\r\n //\r\n // COMPONENT LIFECYCLE METHODS\r\n //\r\n\r\n render() {\r\n return html`${this.facetRowTemplate}`;\r\n }\r\n\r\n //\r\n // TEMPLATE GETTERS\r\n //\r\n\r\n /**\r\n * Template for the full facet row, including the positive/negative checks,\r\n * the display name, and the count.\r\n */\r\n private get facetRowTemplate(): TemplateResult | typeof nothing {\r\n const { bucket, facetType } = this;\r\n if (!bucket || !facetType) return nothing;\r\n\r\n const showOnlyCheckboxId = `${facetType}:${bucket.key}-show-only`;\r\n const negativeCheckboxId = `${facetType}:${bucket.key}-negative`;\r\n\r\n const extraNoteSpan = bucket.extraNote\r\n ? html`<span class=\"facet-note\">${bucket.extraNote}</span>`\r\n : nothing;\r\n\r\n // For collections, we render the collection title as a link.\r\n // For other facet types, we just have a static value to use.\r\n const bucketTextDisplay =\r\n facetType !== 'collection'\r\n ? html`${bucket.displayText ?? bucket.key} ${extraNoteSpan}`\r\n : html`<a href=\"/details/${bucket.key}\">\r\n ${this.collectionTitles?.get(bucket.key) ?? bucket.key}\r\n </a> `;\r\n\r\n const bucketCountText =\r\n bucket.count > 0 ? bucket.count.toLocaleString() : '';\r\n\r\n const facetHidden = bucket.state === 'hidden';\r\n const facetSelected = bucket.state === 'selected';\r\n\r\n const titleText = `${facetType}: ${bucket.displayText ?? bucket.key}`;\r\n const onlyShowText = facetSelected\r\n ? `Show all ${facetType}s`\r\n : `Only show ${titleText}`;\r\n const hideText = `Hide ${titleText}`;\r\n const unhideText = `Unhide ${titleText}`;\r\n const showHideText = facetHidden ? unhideText : hideText;\r\n const ariaLabel = `${titleText}, ${bucket.count} results`;\r\n\r\n // Added data-testid for Playwright testing\r\n return html`\r\n <div class=\"facet-row-container\">\r\n <div class=\"facet-checkboxes\">\r\n <input\r\n type=\"checkbox\"\r\n .name=${facetType}\r\n .value=${bucket.key}\r\n @click=${(e: Event) => {\r\n this.facetClicked(e, false);\r\n }}\r\n .checked=${facetSelected}\r\n class=\"select-facet-checkbox\"\r\n title=${onlyShowText}\r\n id=${showOnlyCheckboxId}\r\n data-testid=${showOnlyCheckboxId}\r\n />\r\n <div class=\"hide-facet-container\">\r\n <input\r\n type=\"checkbox\"\r\n id=${negativeCheckboxId}\r\n .name=${facetType}\r\n .value=${bucket.key}\r\n @click=${(e: Event) => {\r\n this.facetClicked(e, true);\r\n }}\r\n .checked=${facetHidden}\r\n class=\"hide-facet-checkbox\"\r\n />\r\n <label\r\n for=${negativeCheckboxId}\r\n class=\"hide-facet-icon${facetHidden ? ' active' : ''}\"\r\n title=${showHideText}\r\n data-testid=${negativeCheckboxId}\r\n >\r\n <span class=\"sr-only\">${showHideText}</span>\r\n <span class=\"eye eye-open\">${eyeIcon}</span>\r\n <span class=\"eye eye-closed\">${eyeClosedIcon}</span>\r\n </label>\r\n </div>\r\n </div>\r\n <label\r\n for=${showOnlyCheckboxId}\r\n class=\"facet-info-display\"\r\n title=${onlyShowText}\r\n aria-label=${ariaLabel}\r\n >\r\n <div class=\"facet-title\">${bucketTextDisplay}</div>\r\n <div class=\"facet-count\">${bucketCountText}</div>\r\n </label>\r\n </div>\r\n `;\r\n }\r\n\r\n //\r\n // EVENT HANDLERS & DISPATCHERS\r\n //\r\n\r\n /**\r\n * Handler for whenever this facet is clicked & its state changes\r\n */\r\n private facetClicked(e: Event, negative: boolean) {\r\n const { bucket, facetType } = this;\r\n if (!bucket || !facetType) return;\r\n\r\n const target = e.target as HTMLInputElement;\r\n const { checked } = target;\r\n this.bucket = {\r\n ...bucket,\r\n state: FacetRow.getFacetState(checked, negative),\r\n };\r\n\r\n this.dispatchFacetClickEvent({\r\n facetType,\r\n bucket: this.bucket,\r\n negative,\r\n });\r\n }\r\n\r\n /**\r\n * Emits a `facetClick` event with details about this facet & its current state\r\n */\r\n private dispatchFacetClickEvent(detail: FacetEventDetails) {\r\n const event = new CustomEvent<FacetEventDetails>('facetClick', {\r\n detail,\r\n });\r\n this.dispatchEvent(event);\r\n }\r\n\r\n //\r\n // OTHER METHODS\r\n //\r\n\r\n /**\r\n * Returns the composed facet state corresponding to a positive or negative facet's checked state\r\n */\r\n static getFacetState(checked: boolean, negative: boolean): FacetState {\r\n let state: FacetState;\r\n if (checked) {\r\n state = negative ? 'hidden' : 'selected';\r\n } else {\r\n state = 'none';\r\n }\r\n return state;\r\n }\r\n\r\n //\r\n // STYLES\r\n //\r\n\r\n static get styles(): CSSResultGroup {\r\n const facetRowBorderTop = css`var(--facet-row-border-top, 1px solid transparent)`;\r\n const facetRowBorderBottom = css`var(--facet-row-border-bottom, 1px solid transparent)`;\r\n const checkboxHeight = css`15px`;\r\n\r\n const ownCss = css`\r\n .facet-checkboxes {\r\n margin: 0 5px 0 0;\r\n display: flex;\r\n height: ${checkboxHeight};\r\n }\r\n .facet-checkboxes input:first-child {\r\n margin-right: 5px;\r\n }\r\n .facet-checkboxes input {\r\n height: ${checkboxHeight};\r\n width: ${checkboxHeight};\r\n margin: 0;\r\n }\r\n .facet-row-container {\r\n display: flex;\r\n font-weight: 500;\r\n font-size: 1.2rem;\r\n margin: 0 auto;\r\n padding: 0.25rem 0;\r\n height: auto;\r\n border-top: ${facetRowBorderTop};\r\n border-bottom: ${facetRowBorderBottom};\r\n }\r\n .facet-info-display {\r\n display: flex;\r\n flex: 1 1 0%;\r\n cursor: pointer;\r\n flex-wrap: wrap;\r\n }\r\n .facet-title {\r\n word-break: break-word;\r\n display: inline-block;\r\n flex: 1 1 0%;\r\n }\r\n .facet-note {\r\n color: #bbb;\r\n }\r\n .facet-count {\r\n text-align: right;\r\n }\r\n .select-facet-checkbox {\r\n cursor: pointer;\r\n display: inline-block;\r\n }\r\n .hide-facet-checkbox {\r\n position: absolute;\r\n clip: rect(0, 0, 0, 0);\r\n pointer-events: none;\r\n }\r\n .hide-facet-checkbox:focus-visible + .hide-facet-icon {\r\n outline-style: auto;\r\n outline-offset: 2px;\r\n }\r\n .hide-facet-icon {\r\n width: ${checkboxHeight};\r\n height: ${checkboxHeight};\r\n cursor: pointer;\r\n display: flex;\r\n }\r\n .eye {\r\n width: ${checkboxHeight};\r\n height: ${checkboxHeight};\r\n opacity: 0.3;\r\n }\r\n .hide-facet-icon:hover .eye,\r\n .active .eye {\r\n opacity: 1;\r\n }\r\n .hide-facet-icon:hover .eye-open,\r\n .hide-facet-icon .eye-closed {\r\n display: none;\r\n }\r\n .hide-facet-icon:hover .eye-closed,\r\n .hide-facet-icon.active .eye-closed {\r\n display: inline;\r\n }\r\n .hide-facet-icon.active .eye-open {\r\n display: none;\r\n }\r\n .sorting-icon {\r\n cursor: pointer;\r\n }\r\n\r\n a:link,\r\n a:visited {\r\n text-decoration: none;\r\n color: var(--ia-theme-link-color, #4b64ff);\r\n }\r\n a:hover {\r\n text-decoration: underline;\r\n }\r\n `;\r\n\r\n return [srOnlyStyle, ownCss];\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/collection-facets/models.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,CAAC;AAEnD;;;GAGG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,CAAC","sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/collection-facets/models.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,CAAC;AAEnD;;;GAGG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,CAAC","sourcesContent":["/**\n * Maximum number of aggregations to include in the More... facet dialogs.\n */\nexport const MORE_FACETS__MAX_AGGREGATIONS = 10000;\n\n/**\n * Default number of facets to show per page of the More... facet dialogs.\n * Can be overridden via component property.\n */\nexport const MORE_FACETS__DEFAULT_PAGE_SIZE = 35;\n"]}
|
|
@@ -70,9 +70,8 @@ let MoreFacetsContent = class MoreFacetsContent extends LitElement {
|
|
|
70
70
|
setupEscapeListeners() {
|
|
71
71
|
if (this.modalManager) {
|
|
72
72
|
document.addEventListener('keydown', (e) => {
|
|
73
|
-
var _a;
|
|
74
73
|
if (e.key === 'Escape') {
|
|
75
|
-
|
|
74
|
+
this.modalManager?.closeModal();
|
|
76
75
|
}
|
|
77
76
|
});
|
|
78
77
|
}
|
|
@@ -84,10 +83,9 @@ let MoreFacetsContent = class MoreFacetsContent extends LitElement {
|
|
|
84
83
|
* Whether facet requests are for the search_results page type (either defaulted or explicitly).
|
|
85
84
|
*/
|
|
86
85
|
get isSearchResultsPage() {
|
|
87
|
-
var _a;
|
|
88
86
|
// Default page type is search_results when none is specified, so we check
|
|
89
87
|
// for undefined as well.
|
|
90
|
-
const pageType =
|
|
88
|
+
const pageType = this.pageSpecifierParams?.pageType;
|
|
91
89
|
return pageType === undefined || pageType === 'search_results';
|
|
92
90
|
}
|
|
93
91
|
/**
|
|
@@ -95,10 +93,9 @@ let MoreFacetsContent = class MoreFacetsContent extends LitElement {
|
|
|
95
93
|
* - this.aggregations - hold result of search service and being used for further processing.
|
|
96
94
|
*/
|
|
97
95
|
async updateSpecificFacets() {
|
|
98
|
-
var _a, _b, _c, _d, _e, _f;
|
|
99
96
|
if (!this.facetKey)
|
|
100
97
|
return; // Can't fetch facets if we don't know what type of facets we need!
|
|
101
|
-
const trimmedQuery =
|
|
98
|
+
const trimmedQuery = this.query?.trim();
|
|
102
99
|
if (!trimmedQuery && this.isSearchResultsPage)
|
|
103
100
|
return; // The search page _requires_ a query
|
|
104
101
|
const aggregations = {
|
|
@@ -114,13 +111,13 @@ let MoreFacetsContent = class MoreFacetsContent extends LitElement {
|
|
|
114
111
|
aggregationsSize,
|
|
115
112
|
rows: 0, // todo - do we want server-side pagination with offset/page/limit flag?
|
|
116
113
|
};
|
|
117
|
-
const results = await
|
|
118
|
-
this.aggregations =
|
|
114
|
+
const results = await this.searchService?.search(params, this.searchType);
|
|
115
|
+
this.aggregations = results?.success?.response.aggregations;
|
|
119
116
|
this.facetsLoading = false;
|
|
120
|
-
const collectionTitles =
|
|
117
|
+
const collectionTitles = results?.success?.response?.collectionTitles;
|
|
121
118
|
if (collectionTitles) {
|
|
122
119
|
for (const [id, title] of Object.entries(collectionTitles)) {
|
|
123
|
-
|
|
120
|
+
this.collectionTitles?.set(id, title);
|
|
124
121
|
}
|
|
125
122
|
}
|
|
126
123
|
}
|
|
@@ -128,12 +125,11 @@ let MoreFacetsContent = class MoreFacetsContent extends LitElement {
|
|
|
128
125
|
* Handler for page number changes from the pagination widget.
|
|
129
126
|
*/
|
|
130
127
|
pageNumberClicked(e) {
|
|
131
|
-
|
|
132
|
-
const page = (_a = e === null || e === void 0 ? void 0 : e.detail) === null || _a === void 0 ? void 0 : _a.page;
|
|
128
|
+
const page = e?.detail?.page;
|
|
133
129
|
if (page) {
|
|
134
130
|
this.pageNumber = Number(page);
|
|
135
131
|
}
|
|
136
|
-
|
|
132
|
+
this.analyticsHandler?.sendEvent({
|
|
137
133
|
category: analyticsCategories.default,
|
|
138
134
|
action: analyticsActions.moreFacetsPageChange,
|
|
139
135
|
label: `${this.pageNumber}`,
|
|
@@ -143,7 +139,6 @@ let MoreFacetsContent = class MoreFacetsContent extends LitElement {
|
|
|
143
139
|
* Combines the selected facets with the aggregations to create a single list of facets
|
|
144
140
|
*/
|
|
145
141
|
get mergedFacets() {
|
|
146
|
-
var _a;
|
|
147
142
|
if (!this.facetKey || !this.selectedFacets)
|
|
148
143
|
return undefined;
|
|
149
144
|
const { selectedFacetGroup, aggregationFacetGroup } = this;
|
|
@@ -151,9 +146,9 @@ let MoreFacetsContent = class MoreFacetsContent extends LitElement {
|
|
|
151
146
|
if (!aggregationFacetGroup)
|
|
152
147
|
return undefined;
|
|
153
148
|
// Start with either the selected group if we have one, or the aggregate group otherwise
|
|
154
|
-
const facetGroup = { ...(selectedFacetGroup
|
|
149
|
+
const facetGroup = { ...(selectedFacetGroup ?? aggregationFacetGroup) };
|
|
155
150
|
// Attach the counts to the selected buckets
|
|
156
|
-
const bucketsWithCount =
|
|
151
|
+
const bucketsWithCount = selectedFacetGroup?.buckets.map(bucket => {
|
|
157
152
|
const selectedBucket = aggregationFacetGroup.buckets.find(b => b.key === bucket.key);
|
|
158
153
|
return selectedBucket
|
|
159
154
|
? {
|
|
@@ -161,14 +156,14 @@ let MoreFacetsContent = class MoreFacetsContent extends LitElement {
|
|
|
161
156
|
count: selectedBucket.count,
|
|
162
157
|
}
|
|
163
158
|
: bucket;
|
|
164
|
-
})
|
|
159
|
+
}) ?? [];
|
|
165
160
|
// Sort the buckets by selection state
|
|
166
161
|
// We do this *prior* to considering unapplied selections, because we want the facets
|
|
167
162
|
// to remain in position when they are selected/unselected, rather than re-sort themselves.
|
|
168
163
|
sortBucketsBySelectionState(bucketsWithCount, this.sortedBy);
|
|
169
164
|
// Append any additional buckets that were not selected
|
|
170
165
|
aggregationFacetGroup.buckets.forEach(bucket => {
|
|
171
|
-
const existingBucket = selectedFacetGroup
|
|
166
|
+
const existingBucket = selectedFacetGroup?.buckets.find(b => b.key === bucket.key);
|
|
172
167
|
if (existingBucket)
|
|
173
168
|
return;
|
|
174
169
|
bucketsWithCount.push(bucket);
|
|
@@ -176,7 +171,7 @@ let MoreFacetsContent = class MoreFacetsContent extends LitElement {
|
|
|
176
171
|
// Apply any unapplied selections that appear on this page
|
|
177
172
|
const unappliedBuckets = this.unappliedFacetChanges[this.facetKey];
|
|
178
173
|
for (const [index, bucket] of bucketsWithCount.entries()) {
|
|
179
|
-
const unappliedBucket = unappliedBuckets
|
|
174
|
+
const unappliedBucket = unappliedBuckets?.[bucket.key];
|
|
180
175
|
if (unappliedBucket) {
|
|
181
176
|
bucketsWithCount[index] = { ...unappliedBucket };
|
|
182
177
|
}
|
|
@@ -184,9 +179,8 @@ let MoreFacetsContent = class MoreFacetsContent extends LitElement {
|
|
|
184
179
|
// For TV creator facets, uppercase the display text
|
|
185
180
|
if (this.facetKey === 'creator' && this.isTvSearch) {
|
|
186
181
|
bucketsWithCount.forEach(b => {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
const channelLabel = (_c = this.tvChannelAliases) === null || _c === void 0 ? void 0 : _c.get(b.displayText);
|
|
182
|
+
b.displayText = (b.displayText ?? b.key)?.toLocaleUpperCase();
|
|
183
|
+
const channelLabel = this.tvChannelAliases?.get(b.displayText);
|
|
190
184
|
if (channelLabel && channelLabel !== b.displayText) {
|
|
191
185
|
b.extraNote = `(${channelLabel})`;
|
|
192
186
|
}
|
|
@@ -211,8 +205,8 @@ let MoreFacetsContent = class MoreFacetsContent extends LitElement {
|
|
|
211
205
|
return {
|
|
212
206
|
displayText,
|
|
213
207
|
key: value,
|
|
214
|
-
count: data
|
|
215
|
-
state: data
|
|
208
|
+
count: data?.count,
|
|
209
|
+
state: data?.state,
|
|
216
210
|
};
|
|
217
211
|
});
|
|
218
212
|
return {
|
|
@@ -236,10 +230,9 @@ let MoreFacetsContent = class MoreFacetsContent extends LitElement {
|
|
|
236
230
|
let sortedBuckets = currentAggregation.getSortedBuckets(this.sortedBy);
|
|
237
231
|
if (this.facetKey === 'collection') {
|
|
238
232
|
// we are not showing fav- collections or certain deemphasized collections in facets
|
|
239
|
-
sortedBuckets = sortedBuckets
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
return (!suppressedCollections[bucketKey] && !(bucketKey === null || bucketKey === void 0 ? void 0 : bucketKey.startsWith('fav-')));
|
|
233
|
+
sortedBuckets = sortedBuckets?.filter(bucket => {
|
|
234
|
+
const bucketKey = bucket?.key?.toString();
|
|
235
|
+
return (!suppressedCollections[bucketKey] && !bucketKey?.startsWith('fav-'));
|
|
243
236
|
});
|
|
244
237
|
}
|
|
245
238
|
// Construct the array of facet buckets from the aggregation buckets
|
|
@@ -274,63 +267,62 @@ let MoreFacetsContent = class MoreFacetsContent extends LitElement {
|
|
|
274
267
|
};
|
|
275
268
|
}
|
|
276
269
|
get moreFacetsTemplate() {
|
|
277
|
-
return html `
|
|
278
|
-
<facets-template
|
|
279
|
-
.facetGroup=${this.facetGroupForCurrentPage}
|
|
280
|
-
.selectedFacets=${this.selectedFacets}
|
|
281
|
-
.collectionTitles=${this.collectionTitles}
|
|
270
|
+
return html `
|
|
271
|
+
<facets-template
|
|
272
|
+
.facetGroup=${this.facetGroupForCurrentPage}
|
|
273
|
+
.selectedFacets=${this.selectedFacets}
|
|
274
|
+
.collectionTitles=${this.collectionTitles}
|
|
282
275
|
@facetClick=${(e) => {
|
|
283
276
|
if (this.facetKey) {
|
|
284
277
|
this.unappliedFacetChanges = updateSelectedFacetBucket(this.unappliedFacetChanges, this.facetKey, e.detail.bucket);
|
|
285
278
|
}
|
|
286
|
-
}}
|
|
287
|
-
></facets-template>
|
|
279
|
+
}}
|
|
280
|
+
></facets-template>
|
|
288
281
|
`;
|
|
289
282
|
}
|
|
290
283
|
get loaderTemplate() {
|
|
291
|
-
return html `<div class="facets-loader">
|
|
292
|
-
<ia-activity-indicator .mode=${'processing'}></ia-activity-indicator>
|
|
284
|
+
return html `<div class="facets-loader">
|
|
285
|
+
<ia-activity-indicator .mode=${'processing'}></ia-activity-indicator>
|
|
293
286
|
</div> `;
|
|
294
287
|
}
|
|
295
288
|
/**
|
|
296
289
|
* How many pages of facets to show in the modal pagination widget
|
|
297
290
|
*/
|
|
298
291
|
get paginationSize() {
|
|
299
|
-
var _a;
|
|
300
292
|
if (!this.aggregations || !this.facetKey)
|
|
301
293
|
return 0;
|
|
302
294
|
// Calculate the appropriate number of pages to show in the modal pagination widget
|
|
303
|
-
const length =
|
|
295
|
+
const length = this.aggregations[this.facetKey]?.buckets.length;
|
|
304
296
|
return Math.ceil(length / this.facetsPerPage);
|
|
305
297
|
}
|
|
306
298
|
// render pagination if more then 1 page
|
|
307
299
|
get facetsPaginationTemplate() {
|
|
308
300
|
return this.paginationSize > 1
|
|
309
|
-
? html `<more-facets-pagination
|
|
310
|
-
.size=${this.paginationSize}
|
|
311
|
-
.currentPage=${1}
|
|
312
|
-
@pageNumberClicked=${this.pageNumberClicked}
|
|
301
|
+
? html `<more-facets-pagination
|
|
302
|
+
.size=${this.paginationSize}
|
|
303
|
+
.currentPage=${1}
|
|
304
|
+
@pageNumberClicked=${this.pageNumberClicked}
|
|
313
305
|
></more-facets-pagination>`
|
|
314
306
|
: nothing;
|
|
315
307
|
}
|
|
316
308
|
get footerTemplate() {
|
|
317
309
|
if (this.paginationSize > 0) {
|
|
318
|
-
return html `${this.facetsPaginationTemplate}
|
|
319
|
-
<div class="footer">
|
|
320
|
-
<button
|
|
321
|
-
class="btn btn-cancel"
|
|
322
|
-
type="button"
|
|
323
|
-
@click=${this.cancelClick}
|
|
324
|
-
>
|
|
325
|
-
Cancel
|
|
326
|
-
</button>
|
|
327
|
-
<button
|
|
328
|
-
class="btn btn-submit"
|
|
329
|
-
type="button"
|
|
330
|
-
@click=${this.applySearchFacetsClicked}
|
|
331
|
-
>
|
|
332
|
-
Apply filters
|
|
333
|
-
</button>
|
|
310
|
+
return html `${this.facetsPaginationTemplate}
|
|
311
|
+
<div class="footer">
|
|
312
|
+
<button
|
|
313
|
+
class="btn btn-cancel"
|
|
314
|
+
type="button"
|
|
315
|
+
@click=${this.cancelClick}
|
|
316
|
+
>
|
|
317
|
+
Cancel
|
|
318
|
+
</button>
|
|
319
|
+
<button
|
|
320
|
+
class="btn btn-submit"
|
|
321
|
+
type="button"
|
|
322
|
+
@click=${this.applySearchFacetsClicked}
|
|
323
|
+
>
|
|
324
|
+
Apply filters
|
|
325
|
+
</button>
|
|
334
326
|
</div> `;
|
|
335
327
|
}
|
|
336
328
|
return nothing;
|
|
@@ -340,44 +332,42 @@ let MoreFacetsContent = class MoreFacetsContent extends LitElement {
|
|
|
340
332
|
this.dispatchEvent(new CustomEvent('sortedFacets', { detail: this.sortedBy }));
|
|
341
333
|
}
|
|
342
334
|
get modalHeaderTemplate() {
|
|
343
|
-
|
|
344
|
-
const facetSort = (_a = this.sortedBy) !== null && _a !== void 0 ? _a : defaultFacetSort[this.facetKey];
|
|
335
|
+
const facetSort = this.sortedBy ?? defaultFacetSort[this.facetKey];
|
|
345
336
|
const defaultSwitchSide = facetSort === AggregationSortType.COUNT ? 'left' : 'right';
|
|
346
|
-
return html `<span class="sr-only">${msg('More facets for:')}</span>
|
|
347
|
-
<span class="title">
|
|
348
|
-
${
|
|
349
|
-
|
|
350
|
-
<label class="sort-label">${msg('Sort by:')}</label>
|
|
337
|
+
return html `<span class="sr-only">${msg('More facets for:')}</span>
|
|
338
|
+
<span class="title">
|
|
339
|
+
${this.facetGroup?.title}
|
|
340
|
+
|
|
341
|
+
<label class="sort-label">${msg('Sort by:')}</label>
|
|
351
342
|
${this.facetKey
|
|
352
|
-
? html `<toggle-switch
|
|
353
|
-
class="sort-toggle"
|
|
354
|
-
leftValue=${AggregationSortType.COUNT}
|
|
355
|
-
leftLabel="Count"
|
|
356
|
-
rightValue=${valueFacetSort[this.facetKey]}
|
|
357
|
-
.rightLabel=${
|
|
358
|
-
side=${defaultSwitchSide}
|
|
343
|
+
? html `<toggle-switch
|
|
344
|
+
class="sort-toggle"
|
|
345
|
+
leftValue=${AggregationSortType.COUNT}
|
|
346
|
+
leftLabel="Count"
|
|
347
|
+
rightValue=${valueFacetSort[this.facetKey]}
|
|
348
|
+
.rightLabel=${this.facetGroup?.title}
|
|
349
|
+
side=${defaultSwitchSide}
|
|
359
350
|
@change=${(e) => {
|
|
360
351
|
this.sortFacetAggregation(Number(e.detail));
|
|
361
|
-
}}
|
|
352
|
+
}}
|
|
362
353
|
></toggle-switch>`
|
|
363
|
-
: nothing}
|
|
354
|
+
: nothing}
|
|
364
355
|
</span>`;
|
|
365
356
|
}
|
|
366
357
|
render() {
|
|
367
|
-
return html `
|
|
358
|
+
return html `
|
|
368
359
|
${this.facetsLoading
|
|
369
360
|
? this.loaderTemplate
|
|
370
|
-
: html `
|
|
371
|
-
<section id="more-facets">
|
|
372
|
-
<div class="header-content">${this.modalHeaderTemplate}</div>
|
|
373
|
-
<div class="facets-content">${this.moreFacetsTemplate}</div>
|
|
374
|
-
${this.footerTemplate}
|
|
375
|
-
</section>
|
|
376
|
-
`}
|
|
361
|
+
: html `
|
|
362
|
+
<section id="more-facets">
|
|
363
|
+
<div class="header-content">${this.modalHeaderTemplate}</div>
|
|
364
|
+
<div class="facets-content">${this.moreFacetsTemplate}</div>
|
|
365
|
+
${this.footerTemplate}
|
|
366
|
+
</section>
|
|
367
|
+
`}
|
|
377
368
|
`;
|
|
378
369
|
}
|
|
379
370
|
applySearchFacetsClicked() {
|
|
380
|
-
var _a, _b;
|
|
381
371
|
const mergedSelections = mergeSelectedFacets(this.selectedFacets, this.unappliedFacetChanges);
|
|
382
372
|
const event = new CustomEvent('facetsChanged', {
|
|
383
373
|
detail: mergedSelections,
|
|
@@ -387,19 +377,18 @@ let MoreFacetsContent = class MoreFacetsContent extends LitElement {
|
|
|
387
377
|
this.dispatchEvent(event);
|
|
388
378
|
// Reset the unapplied changes back to default, now that they have been applied
|
|
389
379
|
this.unappliedFacetChanges = getDefaultSelectedFacets();
|
|
390
|
-
|
|
391
|
-
|
|
380
|
+
this.modalManager?.closeModal();
|
|
381
|
+
this.analyticsHandler?.sendEvent({
|
|
392
382
|
category: analyticsCategories.default,
|
|
393
383
|
action: `${analyticsActions.applyMoreFacetsModal}`,
|
|
394
384
|
label: `${this.facetKey}`,
|
|
395
385
|
});
|
|
396
386
|
}
|
|
397
387
|
cancelClick() {
|
|
398
|
-
var _a, _b;
|
|
399
388
|
// Reset the unapplied changes back to default
|
|
400
389
|
this.unappliedFacetChanges = getDefaultSelectedFacets();
|
|
401
|
-
|
|
402
|
-
|
|
390
|
+
this.modalManager?.closeModal();
|
|
391
|
+
this.analyticsHandler?.sendEvent({
|
|
403
392
|
category: analyticsCategories.default,
|
|
404
393
|
action: analyticsActions.closeMoreFacetsModal,
|
|
405
394
|
label: `${this.facetKey}`,
|
|
@@ -409,73 +398,73 @@ let MoreFacetsContent = class MoreFacetsContent extends LitElement {
|
|
|
409
398
|
const modalSubmitButton = css `var(--primaryButtonBGColor, #194880)`;
|
|
410
399
|
return [
|
|
411
400
|
srOnlyStyle,
|
|
412
|
-
css `
|
|
413
|
-
section#more-facets {
|
|
414
|
-
overflow: auto;
|
|
415
|
-
padding: 10px; /* leaves room for scroll bar to appear without overlaying on content */
|
|
416
|
-
--facetsColumnCount: 3;
|
|
417
|
-
}
|
|
418
|
-
.header-content .title {
|
|
419
|
-
display: block;
|
|
420
|
-
text-align: left;
|
|
421
|
-
font-size: 1.8rem;
|
|
422
|
-
padding: 0 10px;
|
|
423
|
-
font-weight: bold;
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
.sort-label {
|
|
427
|
-
margin-left: 20px;
|
|
428
|
-
font-size: 1.3rem;
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
.sort-toggle {
|
|
432
|
-
font-weight: normal;
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
.facets-content {
|
|
436
|
-
font-size: 1.2rem;
|
|
437
|
-
max-height: 300px;
|
|
438
|
-
overflow: auto;
|
|
439
|
-
padding: 10px;
|
|
440
|
-
}
|
|
441
|
-
.facets-loader {
|
|
442
|
-
margin-bottom: 20px;
|
|
443
|
-
width: 70px;
|
|
444
|
-
display: block;
|
|
445
|
-
margin-left: auto;
|
|
446
|
-
margin-right: auto;
|
|
447
|
-
}
|
|
448
|
-
.btn {
|
|
449
|
-
border: none;
|
|
450
|
-
padding: 10px;
|
|
451
|
-
margin-bottom: 10px;
|
|
452
|
-
width: auto;
|
|
453
|
-
border-radius: 4px;
|
|
454
|
-
cursor: pointer;
|
|
455
|
-
}
|
|
456
|
-
.btn-cancel {
|
|
457
|
-
background-color: #2c2c2c;
|
|
458
|
-
color: white;
|
|
459
|
-
}
|
|
460
|
-
.btn-submit {
|
|
461
|
-
background-color: ${modalSubmitButton};
|
|
462
|
-
color: white;
|
|
463
|
-
}
|
|
464
|
-
.footer {
|
|
465
|
-
text-align: center;
|
|
466
|
-
margin-top: 10px;
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
@media (max-width: 560px) {
|
|
470
|
-
section#more-facets {
|
|
471
|
-
max-height: 450px;
|
|
472
|
-
--facetsColumnCount: 1;
|
|
473
|
-
}
|
|
474
|
-
.facets-content {
|
|
475
|
-
overflow-y: auto;
|
|
476
|
-
height: 300px;
|
|
477
|
-
}
|
|
478
|
-
}
|
|
401
|
+
css `
|
|
402
|
+
section#more-facets {
|
|
403
|
+
overflow: auto;
|
|
404
|
+
padding: 10px; /* leaves room for scroll bar to appear without overlaying on content */
|
|
405
|
+
--facetsColumnCount: 3;
|
|
406
|
+
}
|
|
407
|
+
.header-content .title {
|
|
408
|
+
display: block;
|
|
409
|
+
text-align: left;
|
|
410
|
+
font-size: 1.8rem;
|
|
411
|
+
padding: 0 10px;
|
|
412
|
+
font-weight: bold;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
.sort-label {
|
|
416
|
+
margin-left: 20px;
|
|
417
|
+
font-size: 1.3rem;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
.sort-toggle {
|
|
421
|
+
font-weight: normal;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
.facets-content {
|
|
425
|
+
font-size: 1.2rem;
|
|
426
|
+
max-height: 300px;
|
|
427
|
+
overflow: auto;
|
|
428
|
+
padding: 10px;
|
|
429
|
+
}
|
|
430
|
+
.facets-loader {
|
|
431
|
+
margin-bottom: 20px;
|
|
432
|
+
width: 70px;
|
|
433
|
+
display: block;
|
|
434
|
+
margin-left: auto;
|
|
435
|
+
margin-right: auto;
|
|
436
|
+
}
|
|
437
|
+
.btn {
|
|
438
|
+
border: none;
|
|
439
|
+
padding: 10px;
|
|
440
|
+
margin-bottom: 10px;
|
|
441
|
+
width: auto;
|
|
442
|
+
border-radius: 4px;
|
|
443
|
+
cursor: pointer;
|
|
444
|
+
}
|
|
445
|
+
.btn-cancel {
|
|
446
|
+
background-color: #2c2c2c;
|
|
447
|
+
color: white;
|
|
448
|
+
}
|
|
449
|
+
.btn-submit {
|
|
450
|
+
background-color: ${modalSubmitButton};
|
|
451
|
+
color: white;
|
|
452
|
+
}
|
|
453
|
+
.footer {
|
|
454
|
+
text-align: center;
|
|
455
|
+
margin-top: 10px;
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
@media (max-width: 560px) {
|
|
459
|
+
section#more-facets {
|
|
460
|
+
max-height: 450px;
|
|
461
|
+
--facetsColumnCount: 1;
|
|
462
|
+
}
|
|
463
|
+
.facets-content {
|
|
464
|
+
overflow-y: auto;
|
|
465
|
+
height: 300px;
|
|
466
|
+
}
|
|
467
|
+
}
|
|
479
468
|
`,
|
|
480
469
|
];
|
|
481
470
|
}
|