@internetarchive/collection-browser 3.3.3 → 3.3.4-alpha-webdev7761.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/src/collection-browser.d.ts +11 -2
  2. package/dist/src/collection-browser.js +840 -693
  3. package/dist/src/collection-browser.js.map +1 -1
  4. package/dist/src/collection-facets/facet-row.js +141 -140
  5. package/dist/src/collection-facets/facet-row.js.map +1 -1
  6. package/dist/src/collection-facets/models.js.map +1 -1
  7. package/dist/src/collection-facets.js +12 -0
  8. package/dist/src/collection-facets.js.map +1 -1
  9. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +10 -1
  10. package/dist/src/data-source/collection-browser-data-source-interface.js.map +1 -1
  11. package/dist/src/data-source/collection-browser-data-source.d.ts +19 -1
  12. package/dist/src/data-source/collection-browser-data-source.js +36 -18
  13. package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
  14. package/dist/src/data-source/collection-browser-query-state.d.ts +1 -2
  15. package/dist/src/data-source/collection-browser-query-state.js.map +1 -1
  16. package/dist/src/data-source/models.d.ts +11 -0
  17. package/dist/src/data-source/models.js.map +1 -1
  18. package/dist/src/manage/manage-bar.js +77 -77
  19. package/dist/src/manage/manage-bar.js.map +1 -1
  20. package/dist/src/models.d.ts +2 -6
  21. package/dist/src/models.js +8 -12
  22. package/dist/src/models.js.map +1 -1
  23. package/dist/src/restoration-state-handler.d.ts +1 -2
  24. package/dist/src/restoration-state-handler.js +3 -9
  25. package/dist/src/restoration-state-handler.js.map +1 -1
  26. package/dist/src/tiles/grid/search-tile.js +42 -42
  27. package/dist/src/tiles/grid/search-tile.js.map +1 -1
  28. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +119 -119
  29. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js.map +1 -1
  30. package/dist/test/collection-browser.test.js +19 -9
  31. package/dist/test/collection-browser.test.js.map +1 -1
  32. package/dist/test/collection-facets/facet-row.test.js +23 -23
  33. package/dist/test/collection-facets/facet-row.test.js.map +1 -1
  34. package/dist/test/collection-facets.test.js +20 -20
  35. package/dist/test/collection-facets.test.js.map +1 -1
  36. package/dist/test/restoration-state-handler.test.js +5 -37
  37. package/dist/test/restoration-state-handler.test.js.map +1 -1
  38. package/package.json +1 -1
  39. package/src/collection-browser.ts +3002 -2829
  40. package/src/collection-facets/facet-row.ts +299 -296
  41. package/src/collection-facets/models.ts +10 -10
  42. package/src/collection-facets.ts +11 -0
  43. package/src/data-source/collection-browser-data-source-interface.ts +345 -333
  44. package/src/data-source/collection-browser-data-source.ts +59 -19
  45. package/src/data-source/collection-browser-query-state.ts +1 -7
  46. package/src/data-source/models.ts +13 -0
  47. package/src/manage/manage-bar.ts +247 -247
  48. package/src/models.ts +866 -870
  49. package/src/restoration-state-handler.ts +542 -544
  50. package/src/tiles/grid/search-tile.ts +90 -90
  51. package/src/tiles/grid/styles/tile-grid-shared-styles.ts +130 -130
  52. package/test/collection-browser.test.ts +21 -11
  53. package/test/collection-facets/facet-row.test.ts +375 -375
  54. package/test/collection-facets.test.ts +928 -928
  55. package/test/restoration-state-handler.test.ts +480 -510
@@ -104,9 +104,9 @@ describe('Facet row', () => {
104
104
  state: 'none',
105
105
  count: 5,
106
106
  };
107
- const el = await fixture(html `<facet-row
108
- .facetType=${'collection'}
109
- .bucket=${bucket}
107
+ const el = await fixture(html `<facet-row
108
+ .facetType=${'collection'}
109
+ .bucket=${bucket}
110
110
  ></facet-row>`);
111
111
  const collectionName = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.facet-title > a:link');
112
112
  expect(collectionName).to.exist;
@@ -130,10 +130,10 @@ describe('Facet row', () => {
130
130
  state: 'none',
131
131
  count: 5,
132
132
  };
133
- const el = await fixture(html `<facet-row
134
- .facetType=${'subject'}
135
- .bucket=${bucket}
136
- @facetClick=${facetClickSpy}
133
+ const el = await fixture(html `<facet-row
134
+ .facetType=${'subject'}
135
+ .bucket=${bucket}
136
+ @facetClick=${facetClickSpy}
137
137
  ></facet-row>`);
138
138
  const positiveFacetCheck = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.select-facet-checkbox');
139
139
  expect(positiveFacetCheck).to.exist;
@@ -157,10 +157,10 @@ describe('Facet row', () => {
157
157
  state: 'selected',
158
158
  count: 5,
159
159
  };
160
- const el = await fixture(html `<facet-row
161
- .facetType=${'subject'}
162
- .bucket=${bucket}
163
- @facetClick=${facetClickSpy}
160
+ const el = await fixture(html `<facet-row
161
+ .facetType=${'subject'}
162
+ .bucket=${bucket}
163
+ @facetClick=${facetClickSpy}
164
164
  ></facet-row>`);
165
165
  const positiveFacetCheck = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.select-facet-checkbox');
166
166
  expect(positiveFacetCheck).to.exist;
@@ -184,10 +184,10 @@ describe('Facet row', () => {
184
184
  state: 'none',
185
185
  count: 5,
186
186
  };
187
- const el = await fixture(html `<facet-row
188
- .facetType=${'subject'}
189
- .bucket=${bucket}
190
- @facetClick=${facetClickSpy}
187
+ const el = await fixture(html `<facet-row
188
+ .facetType=${'subject'}
189
+ .bucket=${bucket}
190
+ @facetClick=${facetClickSpy}
191
191
  ></facet-row>`);
192
192
  const negativeFacetIcon = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.hide-facet-icon');
193
193
  expect(negativeFacetIcon).to.exist;
@@ -211,10 +211,10 @@ describe('Facet row', () => {
211
211
  state: 'hidden',
212
212
  count: 5,
213
213
  };
214
- const el = await fixture(html `<facet-row
215
- .facetType=${'subject'}
216
- .bucket=${bucket}
217
- @facetClick=${facetClickSpy}
214
+ const el = await fixture(html `<facet-row
215
+ .facetType=${'subject'}
216
+ .bucket=${bucket}
217
+ @facetClick=${facetClickSpy}
218
218
  ></facet-row>`);
219
219
  const negativeFacetIcon = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.hide-facet-icon');
220
220
  expect(negativeFacetIcon).to.exist;
@@ -238,10 +238,10 @@ describe('Facet row', () => {
238
238
  state: 'none',
239
239
  count: 5,
240
240
  };
241
- const el = await fixture(html `<facet-row
242
- .facetType=${'subject'}
243
- .bucket=${bucket}
244
- @facetClick=${facetClickSpy}
241
+ const el = await fixture(html `<facet-row
242
+ .facetType=${'subject'}
243
+ .bucket=${bucket}
244
+ @facetClick=${facetClickSpy}
245
245
  ></facet-row>`);
246
246
  const facetLabel = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.facet-info-display');
247
247
  expect(facetLabel).to.exist;
@@ -1 +1 @@
1
- {"version":3,"file":"facet-row.test.js","sourceRoot":"","sources":["../../../test/collection-facets/facet-row.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport sinon from 'sinon';\nimport { html } from 'lit';\nimport type { FacetRow } from '../../src/collection-facets/facet-row';\nimport '../../src/collection-facets/facet-row';\nimport type { FacetState } from '../../src/models';\n\ndescribe('Facet row', () => {\n it('renders nothing if no bucket provided', async () => {\n const el = await fixture<FacetRow>(\n html`<facet-row .facetType=${'subject'}></facet-row>`,\n );\n\n expect(el.shadowRoot?.querySelector('.facet-row-container')).not.to.exist;\n });\n\n it('renders nothing if no facet type provided', async () => {\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row .bucket=${bucket}></facet-row>`,\n );\n\n expect(el.shadowRoot?.querySelector('.facet-row-container')).not.to.exist;\n });\n\n it('renders provided bucket as facet row', async () => {\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`,\n );\n\n expect(el.shadowRoot?.querySelector('.facet-row-container')).to.exist;\n expect(\n el.shadowRoot?.querySelectorAll('input[type=\"checkbox\"]'),\n ).to.have.length(2);\n expect(el.shadowRoot?.querySelectorAll('label')).to.have.length(2);\n\n const labelText = el.shadowRoot?.querySelector('.facet-info-display');\n expect(labelText?.textContent?.trim()).to.match(/^foo\\s*5$/);\n });\n\n it('renders locale-appropriate facet count', async () => {\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 54321,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`,\n );\n\n const facetCount = el.shadowRoot?.querySelector('.facet-count');\n expect(facetCount?.textContent).to.equal('54,321');\n });\n\n it('renders selected facets with checked checkbox', async () => {\n const bucket = {\n key: 'foo',\n state: 'selected' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`,\n );\n\n // \"Positive\" checkbox is checked; \"Negative\" checkbox is not checked\n const selectCheckbox = el.shadowRoot?.querySelector(\n '.select-facet-checkbox',\n ) as HTMLInputElement;\n const hideCheckbox = el.shadowRoot?.querySelector(\n '.hide-facet-checkbox',\n ) as HTMLInputElement;\n expect(selectCheckbox?.checked).to.be.true;\n expect(hideCheckbox?.checked).to.be.false;\n\n // Eye icon is not in its active state\n expect(\n el.shadowRoot?.querySelector('.hide-facet-icon'),\n ).to.exist.and.satisfy(\n (icon: HTMLElement) => !icon.classList.contains('active'),\n );\n });\n\n it('renders hidden facets with closed eye icon', async () => {\n const bucket = {\n key: 'foo',\n state: 'hidden' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`,\n );\n\n // \"Positive\" checkbox is not checked; \"Negative\" checkbox is checked\n const selectCheckbox = el.shadowRoot?.querySelector(\n '.select-facet-checkbox',\n ) as HTMLInputElement;\n const hideCheckbox = el.shadowRoot?.querySelector(\n '.hide-facet-checkbox',\n ) as HTMLInputElement;\n expect(selectCheckbox?.checked).to.be.false;\n expect(hideCheckbox?.checked).to.be.true;\n\n // Eye icon is in its \"active\" state\n expect(\n el.shadowRoot?.querySelector('.hide-facet-icon'),\n ).to.exist.and.satisfy((icon: HTMLElement) =>\n icon.classList.contains('active'),\n );\n });\n\n it('renders correct accessible label for unchecked negative facets', async () => {\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`,\n );\n\n const hideFacetLabel = el.shadowRoot?.querySelector('.hide-facet-icon');\n expect(hideFacetLabel?.textContent?.trim()).to.match(/^Hide subject: foo$/);\n });\n\n it('renders correct accessible label for checked negative facets', async () => {\n const bucket = {\n key: 'foo',\n state: 'hidden' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`,\n );\n\n const hideFacetLabel = el.shadowRoot?.querySelector('.hide-facet-icon');\n expect(hideFacetLabel?.textContent?.trim()).to.match(\n /^Unhide subject: foo$/,\n );\n });\n\n it('renders collection facets as links', async () => {\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row\n .facetType=${'collection'}\n .bucket=${bucket}\n ></facet-row>`,\n );\n\n const collectionName = el.shadowRoot?.querySelector(\n '.facet-title > a:link',\n );\n expect(collectionName).to.exist;\n expect(collectionName?.getAttribute('href')).to.equal('/details/foo');\n });\n\n it('does not render non-collection facets as links', async () => {\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`,\n );\n\n expect(el.shadowRoot?.querySelector('a:link')).not.to.exist;\n });\n\n it('emits event when facet checkbox is clicked', async () => {\n const facetClickSpy = sinon.spy();\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row\n .facetType=${'subject'}\n .bucket=${bucket}\n @facetClick=${facetClickSpy}\n ></facet-row>`,\n );\n\n const positiveFacetCheck = el.shadowRoot?.querySelector(\n '.select-facet-checkbox',\n ) as HTMLInputElement;\n expect(positiveFacetCheck).to.exist;\n positiveFacetCheck.click();\n\n expect(facetClickSpy.callCount).to.equal(1);\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\n facetType: 'subject',\n bucket: {\n key: 'foo',\n state: 'selected',\n count: 5,\n },\n negative: false,\n });\n });\n\n it('emits event when facet checkbox is unchecked', async () => {\n const facetClickSpy = sinon.spy();\n const bucket = {\n key: 'foo',\n state: 'selected' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row\n .facetType=${'subject'}\n .bucket=${bucket}\n @facetClick=${facetClickSpy}\n ></facet-row>`,\n );\n\n const positiveFacetCheck = el.shadowRoot?.querySelector(\n '.select-facet-checkbox',\n ) as HTMLInputElement;\n expect(positiveFacetCheck).to.exist;\n positiveFacetCheck.click();\n\n expect(facetClickSpy.callCount).to.equal(1);\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\n facetType: 'subject',\n bucket: {\n key: 'foo',\n state: 'none',\n count: 5,\n },\n negative: false,\n });\n });\n\n it('emits event when facet negative icon is clicked', async () => {\n const facetClickSpy = sinon.spy();\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row\n .facetType=${'subject'}\n .bucket=${bucket}\n @facetClick=${facetClickSpy}\n ></facet-row>`,\n );\n\n const negativeFacetIcon = el.shadowRoot?.querySelector(\n '.hide-facet-icon',\n ) as HTMLLabelElement;\n expect(negativeFacetIcon).to.exist;\n negativeFacetIcon.click();\n\n expect(facetClickSpy.callCount).to.equal(1);\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\n facetType: 'subject',\n bucket: {\n key: 'foo',\n state: 'hidden',\n count: 5,\n },\n negative: true,\n });\n });\n\n it('emits event when facet negative icon is unchecked', async () => {\n const facetClickSpy = sinon.spy();\n const bucket = {\n key: 'foo',\n state: 'hidden' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row\n .facetType=${'subject'}\n .bucket=${bucket}\n @facetClick=${facetClickSpy}\n ></facet-row>`,\n );\n\n const negativeFacetIcon = el.shadowRoot?.querySelector(\n '.hide-facet-icon',\n ) as HTMLLabelElement;\n expect(negativeFacetIcon).to.exist;\n negativeFacetIcon.click();\n\n expect(facetClickSpy.callCount).to.equal(1);\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\n facetType: 'subject',\n bucket: {\n key: 'foo',\n state: 'none',\n count: 5,\n },\n negative: true,\n });\n });\n\n it('selects/deselects facet when label is clicked', async () => {\n const facetClickSpy = sinon.spy();\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row\n .facetType=${'subject'}\n .bucket=${bucket}\n @facetClick=${facetClickSpy}\n ></facet-row>`,\n );\n\n const facetLabel = el.shadowRoot?.querySelector(\n '.facet-info-display',\n ) as HTMLLabelElement;\n expect(facetLabel).to.exist;\n\n // Select facet by clicking label\n facetLabel.click();\n expect(facetClickSpy.callCount).to.equal(1);\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\n facetType: 'subject',\n bucket: {\n key: 'foo',\n state: 'selected',\n count: 5,\n },\n negative: false,\n });\n\n // Deselect facet by clicking label\n facetLabel.click();\n expect(facetClickSpy.callCount).to.equal(2);\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\n facetType: 'subject',\n bucket: {\n key: 'foo',\n state: 'none',\n count: 5,\n },\n negative: false,\n });\n });\n});\n"]}
1
+ {"version":3,"file":"facet-row.test.js","sourceRoot":"","sources":["../../../test/collection-facets/facet-row.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\r\nimport sinon from 'sinon';\r\nimport { html } from 'lit';\r\nimport type { FacetRow } from '../../src/collection-facets/facet-row';\r\nimport '../../src/collection-facets/facet-row';\r\nimport type { FacetState } from '../../src/models';\r\n\r\ndescribe('Facet row', () => {\r\n it('renders nothing if no bucket provided', async () => {\r\n const el = await fixture<FacetRow>(\r\n html`<facet-row .facetType=${'subject'}></facet-row>`,\r\n );\r\n\r\n expect(el.shadowRoot?.querySelector('.facet-row-container')).not.to.exist;\r\n });\r\n\r\n it('renders nothing if no facet type provided', async () => {\r\n const bucket = {\r\n key: 'foo',\r\n state: 'none' as FacetState,\r\n count: 5,\r\n };\r\n\r\n const el = await fixture<FacetRow>(\r\n html`<facet-row .bucket=${bucket}></facet-row>`,\r\n );\r\n\r\n expect(el.shadowRoot?.querySelector('.facet-row-container')).not.to.exist;\r\n });\r\n\r\n it('renders provided bucket as facet row', async () => {\r\n const bucket = {\r\n key: 'foo',\r\n state: 'none' as FacetState,\r\n count: 5,\r\n };\r\n\r\n const el = await fixture<FacetRow>(\r\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`,\r\n );\r\n\r\n expect(el.shadowRoot?.querySelector('.facet-row-container')).to.exist;\r\n expect(\r\n el.shadowRoot?.querySelectorAll('input[type=\"checkbox\"]'),\r\n ).to.have.length(2);\r\n expect(el.shadowRoot?.querySelectorAll('label')).to.have.length(2);\r\n\r\n const labelText = el.shadowRoot?.querySelector('.facet-info-display');\r\n expect(labelText?.textContent?.trim()).to.match(/^foo\\s*5$/);\r\n });\r\n\r\n it('renders locale-appropriate facet count', async () => {\r\n const bucket = {\r\n key: 'foo',\r\n state: 'none' as FacetState,\r\n count: 54321,\r\n };\r\n\r\n const el = await fixture<FacetRow>(\r\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`,\r\n );\r\n\r\n const facetCount = el.shadowRoot?.querySelector('.facet-count');\r\n expect(facetCount?.textContent).to.equal('54,321');\r\n });\r\n\r\n it('renders selected facets with checked checkbox', async () => {\r\n const bucket = {\r\n key: 'foo',\r\n state: 'selected' as FacetState,\r\n count: 5,\r\n };\r\n\r\n const el = await fixture<FacetRow>(\r\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`,\r\n );\r\n\r\n // \"Positive\" checkbox is checked; \"Negative\" checkbox is not checked\r\n const selectCheckbox = el.shadowRoot?.querySelector(\r\n '.select-facet-checkbox',\r\n ) as HTMLInputElement;\r\n const hideCheckbox = el.shadowRoot?.querySelector(\r\n '.hide-facet-checkbox',\r\n ) as HTMLInputElement;\r\n expect(selectCheckbox?.checked).to.be.true;\r\n expect(hideCheckbox?.checked).to.be.false;\r\n\r\n // Eye icon is not in its active state\r\n expect(\r\n el.shadowRoot?.querySelector('.hide-facet-icon'),\r\n ).to.exist.and.satisfy(\r\n (icon: HTMLElement) => !icon.classList.contains('active'),\r\n );\r\n });\r\n\r\n it('renders hidden facets with closed eye icon', async () => {\r\n const bucket = {\r\n key: 'foo',\r\n state: 'hidden' as FacetState,\r\n count: 5,\r\n };\r\n\r\n const el = await fixture<FacetRow>(\r\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`,\r\n );\r\n\r\n // \"Positive\" checkbox is not checked; \"Negative\" checkbox is checked\r\n const selectCheckbox = el.shadowRoot?.querySelector(\r\n '.select-facet-checkbox',\r\n ) as HTMLInputElement;\r\n const hideCheckbox = el.shadowRoot?.querySelector(\r\n '.hide-facet-checkbox',\r\n ) as HTMLInputElement;\r\n expect(selectCheckbox?.checked).to.be.false;\r\n expect(hideCheckbox?.checked).to.be.true;\r\n\r\n // Eye icon is in its \"active\" state\r\n expect(\r\n el.shadowRoot?.querySelector('.hide-facet-icon'),\r\n ).to.exist.and.satisfy((icon: HTMLElement) =>\r\n icon.classList.contains('active'),\r\n );\r\n });\r\n\r\n it('renders correct accessible label for unchecked negative facets', async () => {\r\n const bucket = {\r\n key: 'foo',\r\n state: 'none' as FacetState,\r\n count: 5,\r\n };\r\n\r\n const el = await fixture<FacetRow>(\r\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`,\r\n );\r\n\r\n const hideFacetLabel = el.shadowRoot?.querySelector('.hide-facet-icon');\r\n expect(hideFacetLabel?.textContent?.trim()).to.match(/^Hide subject: foo$/);\r\n });\r\n\r\n it('renders correct accessible label for checked negative facets', async () => {\r\n const bucket = {\r\n key: 'foo',\r\n state: 'hidden' as FacetState,\r\n count: 5,\r\n };\r\n\r\n const el = await fixture<FacetRow>(\r\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`,\r\n );\r\n\r\n const hideFacetLabel = el.shadowRoot?.querySelector('.hide-facet-icon');\r\n expect(hideFacetLabel?.textContent?.trim()).to.match(\r\n /^Unhide subject: foo$/,\r\n );\r\n });\r\n\r\n it('renders collection facets as links', async () => {\r\n const bucket = {\r\n key: 'foo',\r\n state: 'none' as FacetState,\r\n count: 5,\r\n };\r\n\r\n const el = await fixture<FacetRow>(\r\n html`<facet-row\r\n .facetType=${'collection'}\r\n .bucket=${bucket}\r\n ></facet-row>`,\r\n );\r\n\r\n const collectionName = el.shadowRoot?.querySelector(\r\n '.facet-title > a:link',\r\n );\r\n expect(collectionName).to.exist;\r\n expect(collectionName?.getAttribute('href')).to.equal('/details/foo');\r\n });\r\n\r\n it('does not render non-collection facets as links', async () => {\r\n const bucket = {\r\n key: 'foo',\r\n state: 'none' as FacetState,\r\n count: 5,\r\n };\r\n\r\n const el = await fixture<FacetRow>(\r\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`,\r\n );\r\n\r\n expect(el.shadowRoot?.querySelector('a:link')).not.to.exist;\r\n });\r\n\r\n it('emits event when facet checkbox is clicked', async () => {\r\n const facetClickSpy = sinon.spy();\r\n const bucket = {\r\n key: 'foo',\r\n state: 'none' as FacetState,\r\n count: 5,\r\n };\r\n\r\n const el = await fixture<FacetRow>(\r\n html`<facet-row\r\n .facetType=${'subject'}\r\n .bucket=${bucket}\r\n @facetClick=${facetClickSpy}\r\n ></facet-row>`,\r\n );\r\n\r\n const positiveFacetCheck = el.shadowRoot?.querySelector(\r\n '.select-facet-checkbox',\r\n ) as HTMLInputElement;\r\n expect(positiveFacetCheck).to.exist;\r\n positiveFacetCheck.click();\r\n\r\n expect(facetClickSpy.callCount).to.equal(1);\r\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\r\n facetType: 'subject',\r\n bucket: {\r\n key: 'foo',\r\n state: 'selected',\r\n count: 5,\r\n },\r\n negative: false,\r\n });\r\n });\r\n\r\n it('emits event when facet checkbox is unchecked', async () => {\r\n const facetClickSpy = sinon.spy();\r\n const bucket = {\r\n key: 'foo',\r\n state: 'selected' as FacetState,\r\n count: 5,\r\n };\r\n\r\n const el = await fixture<FacetRow>(\r\n html`<facet-row\r\n .facetType=${'subject'}\r\n .bucket=${bucket}\r\n @facetClick=${facetClickSpy}\r\n ></facet-row>`,\r\n );\r\n\r\n const positiveFacetCheck = el.shadowRoot?.querySelector(\r\n '.select-facet-checkbox',\r\n ) as HTMLInputElement;\r\n expect(positiveFacetCheck).to.exist;\r\n positiveFacetCheck.click();\r\n\r\n expect(facetClickSpy.callCount).to.equal(1);\r\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\r\n facetType: 'subject',\r\n bucket: {\r\n key: 'foo',\r\n state: 'none',\r\n count: 5,\r\n },\r\n negative: false,\r\n });\r\n });\r\n\r\n it('emits event when facet negative icon is clicked', async () => {\r\n const facetClickSpy = sinon.spy();\r\n const bucket = {\r\n key: 'foo',\r\n state: 'none' as FacetState,\r\n count: 5,\r\n };\r\n\r\n const el = await fixture<FacetRow>(\r\n html`<facet-row\r\n .facetType=${'subject'}\r\n .bucket=${bucket}\r\n @facetClick=${facetClickSpy}\r\n ></facet-row>`,\r\n );\r\n\r\n const negativeFacetIcon = el.shadowRoot?.querySelector(\r\n '.hide-facet-icon',\r\n ) as HTMLLabelElement;\r\n expect(negativeFacetIcon).to.exist;\r\n negativeFacetIcon.click();\r\n\r\n expect(facetClickSpy.callCount).to.equal(1);\r\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\r\n facetType: 'subject',\r\n bucket: {\r\n key: 'foo',\r\n state: 'hidden',\r\n count: 5,\r\n },\r\n negative: true,\r\n });\r\n });\r\n\r\n it('emits event when facet negative icon is unchecked', async () => {\r\n const facetClickSpy = sinon.spy();\r\n const bucket = {\r\n key: 'foo',\r\n state: 'hidden' as FacetState,\r\n count: 5,\r\n };\r\n\r\n const el = await fixture<FacetRow>(\r\n html`<facet-row\r\n .facetType=${'subject'}\r\n .bucket=${bucket}\r\n @facetClick=${facetClickSpy}\r\n ></facet-row>`,\r\n );\r\n\r\n const negativeFacetIcon = el.shadowRoot?.querySelector(\r\n '.hide-facet-icon',\r\n ) as HTMLLabelElement;\r\n expect(negativeFacetIcon).to.exist;\r\n negativeFacetIcon.click();\r\n\r\n expect(facetClickSpy.callCount).to.equal(1);\r\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\r\n facetType: 'subject',\r\n bucket: {\r\n key: 'foo',\r\n state: 'none',\r\n count: 5,\r\n },\r\n negative: true,\r\n });\r\n });\r\n\r\n it('selects/deselects facet when label is clicked', async () => {\r\n const facetClickSpy = sinon.spy();\r\n const bucket = {\r\n key: 'foo',\r\n state: 'none' as FacetState,\r\n count: 5,\r\n };\r\n\r\n const el = await fixture<FacetRow>(\r\n html`<facet-row\r\n .facetType=${'subject'}\r\n .bucket=${bucket}\r\n @facetClick=${facetClickSpy}\r\n ></facet-row>`,\r\n );\r\n\r\n const facetLabel = el.shadowRoot?.querySelector(\r\n '.facet-info-display',\r\n ) as HTMLLabelElement;\r\n expect(facetLabel).to.exist;\r\n\r\n // Select facet by clicking label\r\n facetLabel.click();\r\n expect(facetClickSpy.callCount).to.equal(1);\r\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\r\n facetType: 'subject',\r\n bucket: {\r\n key: 'foo',\r\n state: 'selected',\r\n count: 5,\r\n },\r\n negative: false,\r\n });\r\n\r\n // Deselect facet by clicking label\r\n facetLabel.click();\r\n expect(facetClickSpy.callCount).to.equal(2);\r\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\r\n facetType: 'subject',\r\n bucket: {\r\n key: 'foo',\r\n state: 'none',\r\n count: 5,\r\n },\r\n negative: false,\r\n });\r\n });\r\n});\r\n"]}
@@ -107,8 +107,8 @@ describe('Collection Facets', () => {
107
107
  it('opens modal when date picker expand button clicked', async () => {
108
108
  var _a, _b;
109
109
  const modalManager = await fixture(html `<modal-manager></modal-manager>`);
110
- const el = await fixture(html `<collection-facets
111
- .modalManager=${modalManager}
110
+ const el = await fixture(html `<collection-facets
111
+ .modalManager=${modalManager}
112
112
  ></collection-facets>`);
113
113
  el.histogramAggregationLoading = false;
114
114
  el.showHistogramDatePicker = true;
@@ -514,8 +514,8 @@ describe('Collection Facets', () => {
514
514
  });
515
515
  it('uses specified facet display order', async () => {
516
516
  var _a;
517
- const el = await fixture(html `<collection-facets
518
- .facetDisplayOrder=${['language', 'creator']}
517
+ const el = await fixture(html `<collection-facets
518
+ .facetDisplayOrder=${['language', 'creator']}
519
519
  ></collection-facets>`);
520
520
  const aggs = {
521
521
  mediatype: new Aggregation({
@@ -561,8 +561,8 @@ describe('Collection Facets', () => {
561
561
  it('Render More Facets', async () => {
562
562
  var _a, _b;
563
563
  const modalManager = await fixture(html `<modal-manager></modal-manager>`);
564
- const el = await fixture(html `<collection-facets
565
- .modalManager=${modalManager}
564
+ const el = await fixture(html `<collection-facets
565
+ .modalManager=${modalManager}
566
566
  ></collection-facets>`);
567
567
  const aggs = {
568
568
  subject: new Aggregation({
@@ -622,8 +622,8 @@ describe('Collection Facets', () => {
622
622
  it('fire analytics on more link', async () => {
623
623
  var _a;
624
624
  const mockAnalyticsHandler = new MockAnalyticsHandler();
625
- const el = await fixture(html `<collection-facets
626
- .analyticsHandler=${mockAnalyticsHandler}
625
+ const el = await fixture(html `<collection-facets
626
+ .analyticsHandler=${mockAnalyticsHandler}
627
627
  ></collection-facets>`);
628
628
  const aggs = {
629
629
  subject: new Aggregation({
@@ -671,15 +671,15 @@ describe('Collection Facets', () => {
671
671
  });
672
672
  it('includes Part Of section for collections', async () => {
673
673
  var _a, _b, _c, _d, _e, _f, _g;
674
- const el = await fixture(html `<collection-facets
675
- .baseNavigationUrl=${''}
676
- .withinCollection=${'foo'}
677
- .parentCollections=${['bar', 'baz']}
674
+ const el = await fixture(html `<collection-facets
675
+ .baseNavigationUrl=${''}
676
+ .withinCollection=${'foo'}
677
+ .parentCollections=${['bar', 'baz']}
678
678
  .collectionTitles=${new Map([
679
679
  ['foo', 'foo-name'],
680
680
  ['bar', 'bar-name'],
681
681
  ['baz', 'baz-name'],
682
- ])}
682
+ ])}
683
683
  ></collection-facets>`);
684
684
  const partOfSection = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.partof-collections');
685
685
  expect(partOfSection).to.exist;
@@ -700,8 +700,8 @@ describe('Collection Facets', () => {
700
700
  it('fires analytics on expanding date picker', async () => {
701
701
  var _a;
702
702
  const mockAnalyticsHandler = new MockAnalyticsHandler();
703
- const el = await fixture(html `<collection-facets
704
- .analyticsHandler=${mockAnalyticsHandler}
703
+ const el = await fixture(html `<collection-facets
704
+ .analyticsHandler=${mockAnalyticsHandler}
705
705
  ></collection-facets>`);
706
706
  el.histogramAggregationLoading = false;
707
707
  el.showHistogramDatePicker = true;
@@ -724,11 +724,11 @@ describe('Collection Facets', () => {
724
724
  it('fires analytics on clicking Part Of collection link', async () => {
725
725
  var _a;
726
726
  const mockAnalyticsHandler = new MockAnalyticsHandler();
727
- const el = await fixture(html `<collection-facets
728
- .baseNavigationUrl=${''}
729
- .withinCollection=${'foo'}
730
- .parentCollections=${['bar']}
731
- .analyticsHandler=${mockAnalyticsHandler}
727
+ const el = await fixture(html `<collection-facets
728
+ .baseNavigationUrl=${''}
729
+ .withinCollection=${'foo'}
730
+ .parentCollections=${['bar']}
731
+ .analyticsHandler=${mockAnalyticsHandler}
732
732
  ></collection-facets>`);
733
733
  const partOfLinks = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('.partof-collections a[href]');
734
734
  expect(partOfLinks === null || partOfLinks === void 0 ? void 0 : partOfLinks.length).to.equal(1);
@@ -1 +1 @@
1
- {"version":3,"file":"collection-facets.test.js","sourceRoot":"","sources":["../../test/collection-facets.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport sinon from 'sinon';\nimport { html } from 'lit';\nimport { Aggregation } from '@internetarchive/search-service';\nimport {\n ModalManager,\n ModalManagerInterface,\n} from '@internetarchive/modal-manager';\nimport type { CollectionFacets } from '../src/collection-facets';\nimport '@internetarchive/modal-manager';\nimport '../src/collection-facets';\nimport {\n FacetOption,\n // SelectedFacets, Used in lending tests (disabled)\n getDefaultSelectedFacets,\n} from '../src/models';\nimport { MockAnalyticsHandler } from './mocks/mock-analytics-handler';\nimport type { FacetRow } from '../src/collection-facets/facet-row';\n// import type { FacetsTemplate } from '../src/collection-facets/facets-template'; Used in lending tests (disabled)\n\ndescribe('Collection Facets', () => {\n it('has loader', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets ?facetsLoading=${true}></collection-facets>`,\n );\n\n expect(\n el.shadowRoot?.querySelector('#container')?.classList.contains('loading'),\n ).to.be.true;\n\n el.facetsLoading = false;\n await el.updateComplete;\n\n expect(\n el.shadowRoot?.querySelector('#container')?.classList.contains('loading'),\n ).to.be.false;\n });\n\n it('renders a date picker loading placeholder when date picker enabled', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`,\n );\n\n el.histogramAggregationLoading = true;\n el.showHistogramDatePicker = true;\n el.histogramAggregation = new Aggregation({\n buckets: [1, 2, 3],\n first_bucket_key: 0,\n last_bucket_key: 2,\n });\n await el.updateComplete;\n\n const histogramLoader = el.shadowRoot?.querySelector(\n '.histogram-loading-indicator',\n );\n expect(histogramLoader).to.exist;\n });\n\n it('does not render a date picker loading placeholder when date picker disabled', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`,\n );\n\n el.histogramAggregationLoading = true;\n el.showHistogramDatePicker = false;\n el.histogramAggregation = new Aggregation({\n buckets: [1, 2, 3],\n first_bucket_key: 0,\n last_bucket_key: 2,\n });\n await el.updateComplete;\n\n const histogramLoader = el.shadowRoot?.querySelector(\n '.histogram-loading-indicator',\n );\n expect(histogramLoader).to.be.null;\n });\n\n it('renders the date picker when enabled with data present', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`,\n );\n\n el.histogramAggregationLoading = false;\n el.showHistogramDatePicker = true;\n el.histogramAggregation = new Aggregation({\n buckets: [1, 2, 3],\n first_bucket_key: 0,\n last_bucket_key: 2,\n });\n await el.updateComplete;\n\n const histogram = el.shadowRoot?.querySelector('histogram-date-range');\n expect(histogram).to.exist;\n });\n\n it('does not render the date picker when disabled', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`,\n );\n\n el.histogramAggregationLoading = false;\n el.showHistogramDatePicker = false;\n el.histogramAggregation = new Aggregation({\n buckets: [1, 2, 3],\n first_bucket_key: 0,\n last_bucket_key: 2,\n });\n await el.updateComplete;\n\n const histogram = el.shadowRoot?.querySelector('histogram-date-range');\n expect(histogram).to.be.null;\n });\n\n it('renders button to expand the date picker when allowed', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`,\n );\n\n el.histogramAggregationLoading = false;\n el.showHistogramDatePicker = true;\n el.allowExpandingDatePicker = true;\n el.histogramAggregation = new Aggregation({\n buckets: [1, 2, 3],\n first_bucket_key: 0,\n last_bucket_key: 2,\n });\n await el.updateComplete;\n\n const expandBtn = el.shadowRoot?.querySelector('.expand-date-picker-btn');\n expect(expandBtn).to.exist;\n });\n\n it('does not render button to expand the date picker when disallowed', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`,\n );\n\n el.histogramAggregationLoading = false;\n el.showHistogramDatePicker = true;\n el.allowExpandingDatePicker = false;\n el.histogramAggregation = new Aggregation({\n buckets: [1, 2, 3],\n first_bucket_key: 0,\n last_bucket_key: 2,\n });\n await el.updateComplete;\n\n const expandBtn = el.shadowRoot?.querySelector('.expand-date-picker-btn');\n expect(expandBtn).to.be.null;\n });\n\n it('opens modal when date picker expand button clicked', async () => {\n const modalManager = await fixture<ModalManager>(\n html`<modal-manager></modal-manager>`,\n );\n\n const el = await fixture<CollectionFacets>(\n html`<collection-facets\n .modalManager=${modalManager}\n ></collection-facets>`,\n );\n\n el.histogramAggregationLoading = false;\n el.showHistogramDatePicker = true;\n el.allowExpandingDatePicker = true;\n el.histogramAggregation = new Aggregation({\n buckets: [1, 2, 3],\n first_bucket_key: 0,\n last_bucket_key: 2,\n });\n await el.updateComplete;\n\n const expandBtn = el.shadowRoot?.querySelector(\n '.expand-date-picker-btn',\n ) as HTMLButtonElement;\n expect(expandBtn).to.exist;\n\n const showModalSpy = sinon.spy(\n el.modalManager as ModalManagerInterface,\n 'showModal',\n );\n\n // Click the expand button to open the modal\n expandBtn?.click();\n await el.updateComplete;\n\n expect(showModalSpy.callCount).to.equal(1);\n expect(el.modalManager?.classList.contains('expanded-date-picker')).to.be\n .true;\n });\n\n it('renders aggregations as facets', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`,\n );\n\n const aggs: Record<string, Aggregation> = {\n subject: new Aggregation({\n buckets: [\n {\n key: 'foo',\n doc_count: 5,\n },\n ],\n }),\n };\n\n el.aggregations = aggs;\n await el.updateComplete;\n const facetGroups = el.shadowRoot?.querySelectorAll('.facet-group');\n expect(facetGroups?.length).to.equal(1);\n\n const titleFacetGroup = facetGroups?.[0];\n const facetGroupHeader = titleFacetGroup?.querySelector('h3');\n // Every facet group header has an invisible \" filters\" suffix for screen-readers\n expect(\n facetGroupHeader?.querySelector('span.sr-only')?.textContent?.trim(),\n ).to.equal('filters');\n // Ignoring the screen-reader suffix, we should be left with only the readable, capitalized title\n expect(\n facetGroupHeader?.textContent?.trim().replace(/\\s*filters$/, ''),\n ).to.equal('Subject');\n\n const titleFacetRow = titleFacetGroup\n ?.querySelector('facets-template')\n ?.shadowRoot?.querySelector('facet-row') as FacetRow;\n await titleFacetRow.updateComplete;\n });\n\n it('renders multiple aggregation types', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`,\n );\n\n const aggs: Record<string, Aggregation> = {\n subject: new Aggregation({\n buckets: [\n {\n key: 'foo',\n doc_count: 5,\n },\n ],\n }),\n mediatype: new Aggregation({\n buckets: [\n {\n key: 'bar',\n doc_count: 10,\n },\n ],\n }),\n };\n\n el.aggregations = aggs;\n await el.updateComplete;\n\n const facetGroups = el.shadowRoot?.querySelectorAll('.facet-group');\n expect(facetGroups?.length).to.equal(2);\n });\n\n it('does not render suppressed collection facets', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`,\n );\n\n const aggs: Record<string, Aggregation> = {\n collection: new Aggregation({\n buckets: [\n {\n key: 'deemphasize',\n doc_count: 5,\n },\n {\n key: 'community',\n doc_count: 5,\n },\n {\n key: 'foo',\n doc_count: 5,\n },\n ],\n }),\n };\n\n el.aggregations = aggs;\n await el.updateComplete;\n\n const collectionFacets = el.shadowRoot\n ?.querySelector('facets-template')\n ?.shadowRoot?.querySelectorAll('facet-row') as ArrayLike<FacetRow>;\n expect(collectionFacets?.length).to.equal(1);\n\n // The first (and only) collection link should be for 'foo'\n expect(collectionFacets[0].bucket?.key).to.equal('foo');\n });\n\n // Lending tests disabled because lending facet disabled\n // it('renders lending facets with human-readable names', async () => {\n // const el = await fixture<CollectionFacets>(\n // html`<collection-facets></collection-facets>`\n // );\n\n // const aggs: Record<string, Aggregation> = {\n // lending: new Aggregation({\n // buckets: [\n // {\n // key: 'is_lendable',\n // doc_count: 3,\n // },\n // {\n // key: 'available_to_borrow',\n // doc_count: 2,\n // },\n // {\n // key: 'is_readable',\n // doc_count: 1,\n // },\n // ],\n // }),\n // };\n\n // el.aggregations = aggs;\n // await el.updateComplete;\n\n // const facetsTemplate = el.shadowRoot?.querySelector(\n // 'facets-template'\n // ) as FacetsTemplate;\n // await facetsTemplate?.updateComplete;\n\n // const lendingFacets = facetsTemplate?.shadowRoot?.querySelectorAll(\n // 'facet-row'\n // ) as ArrayLike<FacetRow>;\n // expect(lendingFacets?.length).to.equal(3);\n\n // expect(lendingFacets[0].shadowRoot?.textContent?.trim()).to.match(\n // /^Lending Library\\s*3$/\n // );\n // expect(lendingFacets[1].shadowRoot?.textContent?.trim()).to.match(\n // /^Borrow 14 Days\\s*2$/\n // );\n // expect(lendingFacets[2].shadowRoot?.textContent?.trim()).to.match(\n // /^Always Available\\s*1$/\n // );\n // });\n\n // it('renders selected/negative lending facets with human-readable names', async () => {\n // const el = await fixture<CollectionFacets>(\n // html`<collection-facets></collection-facets>`\n // );\n\n // const selectedFacets: SelectedFacets = {\n // subject: {},\n // lending: {\n // is_lendable: {\n // key: 'is_lendable',\n // count: 5,\n // state: 'selected',\n // },\n // available_to_borrow: {\n // key: 'available_to_borrow',\n // count: 4,\n // state: 'selected',\n // },\n // is_readable: {\n // key: 'is_readable',\n // count: 3,\n // state: 'hidden',\n // },\n // },\n // mediatype: {},\n // language: {},\n // creator: {},\n // collection: {},\n // year: {},\n // };\n\n // el.selectedFacets = selectedFacets;\n // await el.updateComplete;\n\n // const facetsTemplate = el.shadowRoot?.querySelector(\n // 'facets-template'\n // ) as FacetsTemplate;\n // await facetsTemplate?.updateComplete;\n\n // const lendingFacets = facetsTemplate?.shadowRoot?.querySelectorAll(\n // 'facet-row'\n // ) as ArrayLike<FacetRow>;\n // expect(lendingFacets?.length).to.equal(3);\n\n // expect(lendingFacets[0].shadowRoot?.textContent?.trim()).to.match(\n // /^Lending Library\\s*5$/\n // );\n // expect(lendingFacets[1].shadowRoot?.textContent?.trim()).to.match(\n // /^Borrow 14 Days\\s*4$/\n // );\n // expect(lendingFacets[2].shadowRoot?.textContent?.trim()).to.match(\n // /^Always Available\\s*3$/\n // );\n // });\n\n // it('only renders lending facets for is_lendable, available_to_borrow, and is_readable', async () => {\n // const el = await fixture<CollectionFacets>(\n // html`<collection-facets></collection-facets>`\n // );\n\n // const aggs: Record<string, Aggregation> = {\n // lending: new Aggregation({\n // buckets: [\n // {\n // key: 'is_lendable',\n // doc_count: 5,\n // },\n // {\n // key: 'is_borrowable',\n // doc_count: 4,\n // },\n // {\n // key: 'available_to_borrow',\n // doc_count: 5,\n // },\n // {\n // key: 'is_browsable',\n // doc_count: 4,\n // },\n // {\n // key: 'available_to_browse',\n // doc_count: 5,\n // },\n // {\n // key: 'is_readable',\n // doc_count: 4,\n // },\n // {\n // key: 'available_to_waitlist',\n // doc_count: 5,\n // },\n // ],\n // }),\n // };\n\n // el.aggregations = aggs;\n // await el.updateComplete;\n\n // const facetsTemplate = el.shadowRoot?.querySelector(\n // 'facets-template'\n // ) as FacetsTemplate;\n // await facetsTemplate?.updateComplete;\n // await new Promise(res => {\n // setTimeout(res, 100);\n // });\n\n // const lendingFacets = facetsTemplate?.shadowRoot?.querySelectorAll(\n // 'facet-row'\n // ) as ArrayLike<FacetRow>;\n // expect(lendingFacets?.length).to.equal(3);\n\n // expect(lendingFacets[0].shadowRoot?.textContent?.trim()).to.match(\n // /^Lending Library\\s*5$/\n // );\n // expect(lendingFacets[1].shadowRoot?.textContent?.trim()).to.match(\n // /^Borrow 14 Days\\s*5$/\n // );\n // expect(lendingFacets[2].shadowRoot?.textContent?.trim()).to.match(\n // /^Always Available\\s*4$/\n // );\n // });\n\n // it('does not render a More... link for lending facets', async () => {\n // const el = await fixture<CollectionFacets>(\n // html`<collection-facets></collection-facets>`\n // );\n\n // const aggs: Record<string, Aggregation> = {\n // lending: new Aggregation({\n // buckets: [\n // {\n // key: 'is_lendable',\n // doc_count: 5,\n // },\n // {\n // key: 'is_borrowable',\n // doc_count: 4,\n // },\n // {\n // key: 'available_to_borrow',\n // doc_count: 5,\n // },\n // {\n // key: 'is_browsable',\n // doc_count: 4,\n // },\n // {\n // key: 'available_to_browse',\n // doc_count: 5,\n // },\n // {\n // key: 'is_readable',\n // doc_count: 4,\n // },\n // {\n // key: 'available_to_waitlist',\n // doc_count: 5,\n // },\n // ],\n // }),\n // };\n\n // el.aggregations = aggs;\n // await el.updateComplete;\n\n // const moreLink = el.shadowRoot?.querySelector('.more-link');\n // expect(moreLink).not.to.exist;\n // });\n\n it('always renders the mediatype:collection facet when present', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`,\n );\n\n const aggs: Record<string, Aggregation> = {\n mediatype: new Aggregation({\n buckets: [\n {\n key: 'texts',\n doc_count: 10000,\n },\n {\n key: 'image',\n doc_count: 9000,\n },\n {\n key: 'audio',\n doc_count: 8000,\n },\n {\n key: 'movies',\n doc_count: 7000,\n },\n {\n key: 'software',\n doc_count: 6000,\n },\n {\n key: 'data',\n doc_count: 5000,\n },\n {\n key: 'etree',\n doc_count: 4000,\n },\n {\n key: 'collection',\n doc_count: 1,\n },\n ],\n }),\n };\n\n el.aggregations = aggs;\n await el.updateComplete;\n\n const facetsTemplate = el.shadowRoot?.querySelector('facets-template');\n const facetRows = facetsTemplate?.shadowRoot?.querySelectorAll(\n 'facet-row',\n ) as ArrayLike<FacetRow>;\n expect(facetRows?.length).to.equal(6);\n expect(facetRows?.[5]?.bucket?.key).to.equal('collection');\n });\n\n it('renders the mediatype:collection facet even when >=6 other mediatypes are selected', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`,\n );\n\n const aggs: Record<string, Aggregation> = {\n mediatype: new Aggregation({\n buckets: [\n {\n key: 'texts',\n doc_count: 10000,\n },\n {\n key: 'image',\n doc_count: 9000,\n },\n {\n key: 'audio',\n doc_count: 8000,\n },\n {\n key: 'movies',\n doc_count: 7000,\n },\n {\n key: 'software',\n doc_count: 6000,\n },\n {\n key: 'data',\n doc_count: 5000,\n },\n {\n key: 'etree',\n doc_count: 4000,\n },\n {\n key: 'collection',\n doc_count: 1,\n },\n ],\n }),\n };\n\n const selectedFacets = getDefaultSelectedFacets();\n selectedFacets.mediatype = {\n texts: { key: 'texts', count: 10000, state: 'selected' },\n image: { key: 'image', count: 9000, state: 'selected' },\n audio: { key: 'audio', count: 8000, state: 'selected' },\n movies: { key: 'movies', count: 7000, state: 'selected' },\n software: { key: 'software', count: 6000, state: 'selected' },\n data: { key: 'data', count: 5000, state: 'selected' },\n etree: { key: 'etree', count: 4000, state: 'selected' },\n };\n\n el.aggregations = aggs;\n el.selectedFacets = selectedFacets;\n await el.updateComplete;\n\n const facetsTemplate = el.shadowRoot?.querySelector('facets-template');\n const facetRows = facetsTemplate?.shadowRoot?.querySelectorAll(\n 'facet-row',\n ) as ArrayLike<FacetRow>;\n expect(facetRows?.length).to.equal(8);\n expect(facetRows?.[7]?.bucket?.key).to.equal('collection');\n });\n\n it('uses specified facet display order', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets\n .facetDisplayOrder=${['language', 'creator'] as FacetOption[]}\n ></collection-facets>`,\n );\n\n const aggs: Record<string, Aggregation> = {\n mediatype: new Aggregation({\n buckets: [{ key: 'texts', doc_count: 5 }],\n }),\n collection: new Aggregation({\n buckets: [{ key: 'foo', doc_count: 10 }],\n }),\n creator: new Aggregation({\n buckets: [{ key: 'bar', doc_count: 15 }],\n }),\n language: new Aggregation({\n buckets: [{ key: 'baz', doc_count: 20 }],\n }),\n };\n\n el.aggregations = aggs;\n await el.updateComplete;\n\n const facetHeaders = el.shadowRoot?.querySelectorAll('.facet-group-header');\n\n // The only two facet groups should be Language and Creator (in that order)\n expect(facetHeaders?.length).to.equal(2);\n expect(facetHeaders?.[0].textContent).to.contain('Language');\n expect(facetHeaders?.[1].textContent).to.contain('Creator');\n });\n\n describe('More Facets', () => {\n it('Does not render < allowedFacetCount', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`,\n );\n\n const aggs: Record<string, Aggregation> = {\n subject: new Aggregation({\n buckets: [\n {\n key: 'foo',\n doc_count: 5,\n },\n ],\n }),\n };\n\n el.aggregations = aggs;\n await el.updateComplete;\n\n const moreLink = el.shadowRoot?.querySelector('.more-link');\n expect(moreLink).to.be.null;\n });\n\n it('Render More Facets', async () => {\n const modalManager = await fixture<ModalManager>(\n html`<modal-manager></modal-manager>`,\n );\n\n const el = await fixture<CollectionFacets>(\n html`<collection-facets\n .modalManager=${modalManager}\n ></collection-facets>`,\n );\n\n const aggs: Record<string, Aggregation> = {\n subject: new Aggregation({\n buckets: [\n {\n key: 'foo',\n doc_count: 5,\n },\n {\n key: 'fi',\n doc_count: 5,\n },\n {\n key: 'fum',\n doc_count: 5,\n },\n {\n key: 'flee',\n doc_count: 5,\n },\n {\n key: 'wheee',\n doc_count: 5,\n },\n {\n key: 'whooo',\n doc_count: 5,\n },\n {\n key: 'boop',\n doc_count: 5,\n },\n ],\n }),\n };\n\n el.aggregations = aggs;\n await el.updateComplete;\n\n let eventCaught = false;\n let eventFacet = '';\n el.addEventListener('showMoreFacets', e => {\n eventFacet = (e as CustomEvent).detail;\n eventCaught = true;\n });\n\n const moreLink = el.shadowRoot?.querySelector(\n '.more-link',\n ) as HTMLButtonElement;\n expect(moreLink).to.exist; // has link\n\n const showModalSpy = sinon.spy(\n el.modalManager as ModalManagerInterface,\n 'showModal',\n );\n // let's pop up modal\n moreLink?.click();\n await el.updateComplete;\n\n expect(showModalSpy.callCount).to.equal(1);\n expect(el.modalManager?.classList.contains('more-search-facets')).to.be\n .true;\n expect(eventCaught).to.be.true;\n expect(eventFacet).to.equal('subject' as FacetOption);\n });\n });\n\n it('fire analytics on more link', async () => {\n const mockAnalyticsHandler = new MockAnalyticsHandler();\n\n const el = await fixture<CollectionFacets>(\n html`<collection-facets\n .analyticsHandler=${mockAnalyticsHandler}\n ></collection-facets>`,\n );\n const aggs: Record<string, Aggregation> = {\n subject: new Aggregation({\n buckets: [\n {\n key: 'foo',\n doc_count: 5,\n },\n {\n key: 'fi',\n doc_count: 5,\n },\n {\n key: 'fum',\n doc_count: 5,\n },\n {\n key: 'flee',\n doc_count: 5,\n },\n {\n key: 'wheee',\n doc_count: 5,\n },\n {\n key: 'whooo',\n doc_count: 5,\n },\n {\n key: 'boop',\n doc_count: 5,\n },\n ],\n }),\n };\n\n el.aggregations = aggs;\n await el.updateComplete;\n\n const moreLink = el.shadowRoot?.querySelector(\n '.more-link',\n ) as HTMLButtonElement;\n\n expect(moreLink).to.exist; // has link\n\n moreLink?.click();\n await el.updateComplete;\n\n expect(mockAnalyticsHandler.callCategory).to.equal('collection-browser');\n expect(mockAnalyticsHandler.callAction).to.equal('showMoreFacetsModal');\n expect(mockAnalyticsHandler.callLabel).to.equal('subject');\n });\n\n it('includes Part Of section for collections', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets\n .baseNavigationUrl=${''}\n .withinCollection=${'foo'}\n .parentCollections=${['bar', 'baz']}\n .collectionTitles=${new Map([\n ['foo', 'foo-name'],\n ['bar', 'bar-name'],\n ['baz', 'baz-name'],\n ])}\n ></collection-facets>`,\n );\n\n const partOfSection = el.shadowRoot?.querySelector('.partof-collections');\n expect(partOfSection).to.exist;\n\n const partOfLinks = partOfSection?.querySelectorAll('a[href]');\n expect(partOfLinks?.length).to.equal(2);\n\n expect(partOfLinks?.[0]?.textContent?.trim()).to.equal('bar-name');\n expect(partOfLinks?.[0]?.getAttribute('href')).to.equal('/details/bar');\n expect(partOfLinks?.[1]?.textContent?.trim()).to.equal('baz-name');\n expect(partOfLinks?.[1]?.getAttribute('href')).to.equal('/details/baz');\n });\n\n it('does not include Part Of section without parent collections', async () => {\n // No parentCollections prop\n const el = await fixture<CollectionFacets>(\n html`<collection-facets .withinCollection=${'foo'}></collection-facets>`,\n );\n\n const partOfSection = el.shadowRoot?.querySelector('.partof-collections');\n expect(partOfSection).not.to.exist;\n });\n\n it('fires analytics on expanding date picker', async () => {\n const mockAnalyticsHandler = new MockAnalyticsHandler();\n\n const el = await fixture<CollectionFacets>(\n html`<collection-facets\n .analyticsHandler=${mockAnalyticsHandler}\n ></collection-facets>`,\n );\n\n el.histogramAggregationLoading = false;\n el.showHistogramDatePicker = true;\n el.allowExpandingDatePicker = true;\n el.histogramAggregation = new Aggregation({\n buckets: [1, 2, 3],\n first_bucket_key: 0,\n last_bucket_key: 2,\n });\n await el.updateComplete;\n\n const expandBtn = el.shadowRoot?.querySelector(\n '.expand-date-picker-btn',\n ) as HTMLButtonElement;\n expect(expandBtn).to.exist;\n\n // Click the expand button to open the modal\n expandBtn?.click();\n await el.updateComplete;\n\n expect(mockAnalyticsHandler.callCategory).to.equal('collection-browser');\n expect(mockAnalyticsHandler.callAction).to.equal('histogramExpanded');\n expect(mockAnalyticsHandler.callLabel).to.equal(window.location.href);\n });\n\n it('fires analytics on clicking Part Of collection link', async () => {\n const mockAnalyticsHandler = new MockAnalyticsHandler();\n\n const el = await fixture<CollectionFacets>(\n html`<collection-facets\n .baseNavigationUrl=${''}\n .withinCollection=${'foo'}\n .parentCollections=${['bar']}\n .analyticsHandler=${mockAnalyticsHandler}\n ></collection-facets>`,\n );\n\n const partOfLinks = el.shadowRoot?.querySelectorAll(\n '.partof-collections a[href]',\n );\n expect(partOfLinks?.length).to.equal(1);\n\n // Click the expand button to open the modal\n const link = partOfLinks?.[0] as HTMLAnchorElement;\n link?.addEventListener('click', e => e.preventDefault());\n link?.click();\n await el.updateComplete;\n\n expect(mockAnalyticsHandler.callCategory).to.equal('collection-browser');\n expect(mockAnalyticsHandler.callAction).to.equal('partOfCollectionClicked');\n expect(mockAnalyticsHandler.callLabel).to.equal('bar');\n });\n});\n"]}
1
+ {"version":3,"file":"collection-facets.test.js","sourceRoot":"","sources":["../../test/collection-facets.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\r\nimport sinon from 'sinon';\r\nimport { html } from 'lit';\r\nimport { Aggregation } from '@internetarchive/search-service';\r\nimport {\r\n ModalManager,\r\n ModalManagerInterface,\r\n} from '@internetarchive/modal-manager';\r\nimport type { CollectionFacets } from '../src/collection-facets';\r\nimport '@internetarchive/modal-manager';\r\nimport '../src/collection-facets';\r\nimport {\r\n FacetOption,\r\n // SelectedFacets, Used in lending tests (disabled)\r\n getDefaultSelectedFacets,\r\n} from '../src/models';\r\nimport { MockAnalyticsHandler } from './mocks/mock-analytics-handler';\r\nimport type { FacetRow } from '../src/collection-facets/facet-row';\r\n// import type { FacetsTemplate } from '../src/collection-facets/facets-template'; Used in lending tests (disabled)\r\n\r\ndescribe('Collection Facets', () => {\r\n it('has loader', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets ?facetsLoading=${true}></collection-facets>`,\r\n );\r\n\r\n expect(\r\n el.shadowRoot?.querySelector('#container')?.classList.contains('loading'),\r\n ).to.be.true;\r\n\r\n el.facetsLoading = false;\r\n await el.updateComplete;\r\n\r\n expect(\r\n el.shadowRoot?.querySelector('#container')?.classList.contains('loading'),\r\n ).to.be.false;\r\n });\r\n\r\n it('renders a date picker loading placeholder when date picker enabled', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n el.histogramAggregationLoading = true;\r\n el.showHistogramDatePicker = true;\r\n el.histogramAggregation = new Aggregation({\r\n buckets: [1, 2, 3],\r\n first_bucket_key: 0,\r\n last_bucket_key: 2,\r\n });\r\n await el.updateComplete;\r\n\r\n const histogramLoader = el.shadowRoot?.querySelector(\r\n '.histogram-loading-indicator',\r\n );\r\n expect(histogramLoader).to.exist;\r\n });\r\n\r\n it('does not render a date picker loading placeholder when date picker disabled', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n el.histogramAggregationLoading = true;\r\n el.showHistogramDatePicker = false;\r\n el.histogramAggregation = new Aggregation({\r\n buckets: [1, 2, 3],\r\n first_bucket_key: 0,\r\n last_bucket_key: 2,\r\n });\r\n await el.updateComplete;\r\n\r\n const histogramLoader = el.shadowRoot?.querySelector(\r\n '.histogram-loading-indicator',\r\n );\r\n expect(histogramLoader).to.be.null;\r\n });\r\n\r\n it('renders the date picker when enabled with data present', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n el.histogramAggregationLoading = false;\r\n el.showHistogramDatePicker = true;\r\n el.histogramAggregation = new Aggregation({\r\n buckets: [1, 2, 3],\r\n first_bucket_key: 0,\r\n last_bucket_key: 2,\r\n });\r\n await el.updateComplete;\r\n\r\n const histogram = el.shadowRoot?.querySelector('histogram-date-range');\r\n expect(histogram).to.exist;\r\n });\r\n\r\n it('does not render the date picker when disabled', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n el.histogramAggregationLoading = false;\r\n el.showHistogramDatePicker = false;\r\n el.histogramAggregation = new Aggregation({\r\n buckets: [1, 2, 3],\r\n first_bucket_key: 0,\r\n last_bucket_key: 2,\r\n });\r\n await el.updateComplete;\r\n\r\n const histogram = el.shadowRoot?.querySelector('histogram-date-range');\r\n expect(histogram).to.be.null;\r\n });\r\n\r\n it('renders button to expand the date picker when allowed', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n el.histogramAggregationLoading = false;\r\n el.showHistogramDatePicker = true;\r\n el.allowExpandingDatePicker = true;\r\n el.histogramAggregation = new Aggregation({\r\n buckets: [1, 2, 3],\r\n first_bucket_key: 0,\r\n last_bucket_key: 2,\r\n });\r\n await el.updateComplete;\r\n\r\n const expandBtn = el.shadowRoot?.querySelector('.expand-date-picker-btn');\r\n expect(expandBtn).to.exist;\r\n });\r\n\r\n it('does not render button to expand the date picker when disallowed', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n el.histogramAggregationLoading = false;\r\n el.showHistogramDatePicker = true;\r\n el.allowExpandingDatePicker = false;\r\n el.histogramAggregation = new Aggregation({\r\n buckets: [1, 2, 3],\r\n first_bucket_key: 0,\r\n last_bucket_key: 2,\r\n });\r\n await el.updateComplete;\r\n\r\n const expandBtn = el.shadowRoot?.querySelector('.expand-date-picker-btn');\r\n expect(expandBtn).to.be.null;\r\n });\r\n\r\n it('opens modal when date picker expand button clicked', async () => {\r\n const modalManager = await fixture<ModalManager>(\r\n html`<modal-manager></modal-manager>`,\r\n );\r\n\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets\r\n .modalManager=${modalManager}\r\n ></collection-facets>`,\r\n );\r\n\r\n el.histogramAggregationLoading = false;\r\n el.showHistogramDatePicker = true;\r\n el.allowExpandingDatePicker = true;\r\n el.histogramAggregation = new Aggregation({\r\n buckets: [1, 2, 3],\r\n first_bucket_key: 0,\r\n last_bucket_key: 2,\r\n });\r\n await el.updateComplete;\r\n\r\n const expandBtn = el.shadowRoot?.querySelector(\r\n '.expand-date-picker-btn',\r\n ) as HTMLButtonElement;\r\n expect(expandBtn).to.exist;\r\n\r\n const showModalSpy = sinon.spy(\r\n el.modalManager as ModalManagerInterface,\r\n 'showModal',\r\n );\r\n\r\n // Click the expand button to open the modal\r\n expandBtn?.click();\r\n await el.updateComplete;\r\n\r\n expect(showModalSpy.callCount).to.equal(1);\r\n expect(el.modalManager?.classList.contains('expanded-date-picker')).to.be\r\n .true;\r\n });\r\n\r\n it('renders aggregations as facets', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n subject: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'foo',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n const facetGroups = el.shadowRoot?.querySelectorAll('.facet-group');\r\n expect(facetGroups?.length).to.equal(1);\r\n\r\n const titleFacetGroup = facetGroups?.[0];\r\n const facetGroupHeader = titleFacetGroup?.querySelector('h3');\r\n // Every facet group header has an invisible \" filters\" suffix for screen-readers\r\n expect(\r\n facetGroupHeader?.querySelector('span.sr-only')?.textContent?.trim(),\r\n ).to.equal('filters');\r\n // Ignoring the screen-reader suffix, we should be left with only the readable, capitalized title\r\n expect(\r\n facetGroupHeader?.textContent?.trim().replace(/\\s*filters$/, ''),\r\n ).to.equal('Subject');\r\n\r\n const titleFacetRow = titleFacetGroup\r\n ?.querySelector('facets-template')\r\n ?.shadowRoot?.querySelector('facet-row') as FacetRow;\r\n await titleFacetRow.updateComplete;\r\n });\r\n\r\n it('renders multiple aggregation types', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n subject: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'foo',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n mediatype: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'bar',\r\n doc_count: 10,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const facetGroups = el.shadowRoot?.querySelectorAll('.facet-group');\r\n expect(facetGroups?.length).to.equal(2);\r\n });\r\n\r\n it('does not render suppressed collection facets', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n collection: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'deemphasize',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'community',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'foo',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const collectionFacets = el.shadowRoot\r\n ?.querySelector('facets-template')\r\n ?.shadowRoot?.querySelectorAll('facet-row') as ArrayLike<FacetRow>;\r\n expect(collectionFacets?.length).to.equal(1);\r\n\r\n // The first (and only) collection link should be for 'foo'\r\n expect(collectionFacets[0].bucket?.key).to.equal('foo');\r\n });\r\n\r\n // Lending tests disabled because lending facet disabled\r\n // it('renders lending facets with human-readable names', async () => {\r\n // const el = await fixture<CollectionFacets>(\r\n // html`<collection-facets></collection-facets>`\r\n // );\r\n\r\n // const aggs: Record<string, Aggregation> = {\r\n // lending: new Aggregation({\r\n // buckets: [\r\n // {\r\n // key: 'is_lendable',\r\n // doc_count: 3,\r\n // },\r\n // {\r\n // key: 'available_to_borrow',\r\n // doc_count: 2,\r\n // },\r\n // {\r\n // key: 'is_readable',\r\n // doc_count: 1,\r\n // },\r\n // ],\r\n // }),\r\n // };\r\n\r\n // el.aggregations = aggs;\r\n // await el.updateComplete;\r\n\r\n // const facetsTemplate = el.shadowRoot?.querySelector(\r\n // 'facets-template'\r\n // ) as FacetsTemplate;\r\n // await facetsTemplate?.updateComplete;\r\n\r\n // const lendingFacets = facetsTemplate?.shadowRoot?.querySelectorAll(\r\n // 'facet-row'\r\n // ) as ArrayLike<FacetRow>;\r\n // expect(lendingFacets?.length).to.equal(3);\r\n\r\n // expect(lendingFacets[0].shadowRoot?.textContent?.trim()).to.match(\r\n // /^Lending Library\\s*3$/\r\n // );\r\n // expect(lendingFacets[1].shadowRoot?.textContent?.trim()).to.match(\r\n // /^Borrow 14 Days\\s*2$/\r\n // );\r\n // expect(lendingFacets[2].shadowRoot?.textContent?.trim()).to.match(\r\n // /^Always Available\\s*1$/\r\n // );\r\n // });\r\n\r\n // it('renders selected/negative lending facets with human-readable names', async () => {\r\n // const el = await fixture<CollectionFacets>(\r\n // html`<collection-facets></collection-facets>`\r\n // );\r\n\r\n // const selectedFacets: SelectedFacets = {\r\n // subject: {},\r\n // lending: {\r\n // is_lendable: {\r\n // key: 'is_lendable',\r\n // count: 5,\r\n // state: 'selected',\r\n // },\r\n // available_to_borrow: {\r\n // key: 'available_to_borrow',\r\n // count: 4,\r\n // state: 'selected',\r\n // },\r\n // is_readable: {\r\n // key: 'is_readable',\r\n // count: 3,\r\n // state: 'hidden',\r\n // },\r\n // },\r\n // mediatype: {},\r\n // language: {},\r\n // creator: {},\r\n // collection: {},\r\n // year: {},\r\n // };\r\n\r\n // el.selectedFacets = selectedFacets;\r\n // await el.updateComplete;\r\n\r\n // const facetsTemplate = el.shadowRoot?.querySelector(\r\n // 'facets-template'\r\n // ) as FacetsTemplate;\r\n // await facetsTemplate?.updateComplete;\r\n\r\n // const lendingFacets = facetsTemplate?.shadowRoot?.querySelectorAll(\r\n // 'facet-row'\r\n // ) as ArrayLike<FacetRow>;\r\n // expect(lendingFacets?.length).to.equal(3);\r\n\r\n // expect(lendingFacets[0].shadowRoot?.textContent?.trim()).to.match(\r\n // /^Lending Library\\s*5$/\r\n // );\r\n // expect(lendingFacets[1].shadowRoot?.textContent?.trim()).to.match(\r\n // /^Borrow 14 Days\\s*4$/\r\n // );\r\n // expect(lendingFacets[2].shadowRoot?.textContent?.trim()).to.match(\r\n // /^Always Available\\s*3$/\r\n // );\r\n // });\r\n\r\n // it('only renders lending facets for is_lendable, available_to_borrow, and is_readable', async () => {\r\n // const el = await fixture<CollectionFacets>(\r\n // html`<collection-facets></collection-facets>`\r\n // );\r\n\r\n // const aggs: Record<string, Aggregation> = {\r\n // lending: new Aggregation({\r\n // buckets: [\r\n // {\r\n // key: 'is_lendable',\r\n // doc_count: 5,\r\n // },\r\n // {\r\n // key: 'is_borrowable',\r\n // doc_count: 4,\r\n // },\r\n // {\r\n // key: 'available_to_borrow',\r\n // doc_count: 5,\r\n // },\r\n // {\r\n // key: 'is_browsable',\r\n // doc_count: 4,\r\n // },\r\n // {\r\n // key: 'available_to_browse',\r\n // doc_count: 5,\r\n // },\r\n // {\r\n // key: 'is_readable',\r\n // doc_count: 4,\r\n // },\r\n // {\r\n // key: 'available_to_waitlist',\r\n // doc_count: 5,\r\n // },\r\n // ],\r\n // }),\r\n // };\r\n\r\n // el.aggregations = aggs;\r\n // await el.updateComplete;\r\n\r\n // const facetsTemplate = el.shadowRoot?.querySelector(\r\n // 'facets-template'\r\n // ) as FacetsTemplate;\r\n // await facetsTemplate?.updateComplete;\r\n // await new Promise(res => {\r\n // setTimeout(res, 100);\r\n // });\r\n\r\n // const lendingFacets = facetsTemplate?.shadowRoot?.querySelectorAll(\r\n // 'facet-row'\r\n // ) as ArrayLike<FacetRow>;\r\n // expect(lendingFacets?.length).to.equal(3);\r\n\r\n // expect(lendingFacets[0].shadowRoot?.textContent?.trim()).to.match(\r\n // /^Lending Library\\s*5$/\r\n // );\r\n // expect(lendingFacets[1].shadowRoot?.textContent?.trim()).to.match(\r\n // /^Borrow 14 Days\\s*5$/\r\n // );\r\n // expect(lendingFacets[2].shadowRoot?.textContent?.trim()).to.match(\r\n // /^Always Available\\s*4$/\r\n // );\r\n // });\r\n\r\n // it('does not render a More... link for lending facets', async () => {\r\n // const el = await fixture<CollectionFacets>(\r\n // html`<collection-facets></collection-facets>`\r\n // );\r\n\r\n // const aggs: Record<string, Aggregation> = {\r\n // lending: new Aggregation({\r\n // buckets: [\r\n // {\r\n // key: 'is_lendable',\r\n // doc_count: 5,\r\n // },\r\n // {\r\n // key: 'is_borrowable',\r\n // doc_count: 4,\r\n // },\r\n // {\r\n // key: 'available_to_borrow',\r\n // doc_count: 5,\r\n // },\r\n // {\r\n // key: 'is_browsable',\r\n // doc_count: 4,\r\n // },\r\n // {\r\n // key: 'available_to_browse',\r\n // doc_count: 5,\r\n // },\r\n // {\r\n // key: 'is_readable',\r\n // doc_count: 4,\r\n // },\r\n // {\r\n // key: 'available_to_waitlist',\r\n // doc_count: 5,\r\n // },\r\n // ],\r\n // }),\r\n // };\r\n\r\n // el.aggregations = aggs;\r\n // await el.updateComplete;\r\n\r\n // const moreLink = el.shadowRoot?.querySelector('.more-link');\r\n // expect(moreLink).not.to.exist;\r\n // });\r\n\r\n it('always renders the mediatype:collection facet when present', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n mediatype: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'texts',\r\n doc_count: 10000,\r\n },\r\n {\r\n key: 'image',\r\n doc_count: 9000,\r\n },\r\n {\r\n key: 'audio',\r\n doc_count: 8000,\r\n },\r\n {\r\n key: 'movies',\r\n doc_count: 7000,\r\n },\r\n {\r\n key: 'software',\r\n doc_count: 6000,\r\n },\r\n {\r\n key: 'data',\r\n doc_count: 5000,\r\n },\r\n {\r\n key: 'etree',\r\n doc_count: 4000,\r\n },\r\n {\r\n key: 'collection',\r\n doc_count: 1,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const facetsTemplate = el.shadowRoot?.querySelector('facets-template');\r\n const facetRows = facetsTemplate?.shadowRoot?.querySelectorAll(\r\n 'facet-row',\r\n ) as ArrayLike<FacetRow>;\r\n expect(facetRows?.length).to.equal(6);\r\n expect(facetRows?.[5]?.bucket?.key).to.equal('collection');\r\n });\r\n\r\n it('renders the mediatype:collection facet even when >=6 other mediatypes are selected', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n mediatype: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'texts',\r\n doc_count: 10000,\r\n },\r\n {\r\n key: 'image',\r\n doc_count: 9000,\r\n },\r\n {\r\n key: 'audio',\r\n doc_count: 8000,\r\n },\r\n {\r\n key: 'movies',\r\n doc_count: 7000,\r\n },\r\n {\r\n key: 'software',\r\n doc_count: 6000,\r\n },\r\n {\r\n key: 'data',\r\n doc_count: 5000,\r\n },\r\n {\r\n key: 'etree',\r\n doc_count: 4000,\r\n },\r\n {\r\n key: 'collection',\r\n doc_count: 1,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n const selectedFacets = getDefaultSelectedFacets();\r\n selectedFacets.mediatype = {\r\n texts: { key: 'texts', count: 10000, state: 'selected' },\r\n image: { key: 'image', count: 9000, state: 'selected' },\r\n audio: { key: 'audio', count: 8000, state: 'selected' },\r\n movies: { key: 'movies', count: 7000, state: 'selected' },\r\n software: { key: 'software', count: 6000, state: 'selected' },\r\n data: { key: 'data', count: 5000, state: 'selected' },\r\n etree: { key: 'etree', count: 4000, state: 'selected' },\r\n };\r\n\r\n el.aggregations = aggs;\r\n el.selectedFacets = selectedFacets;\r\n await el.updateComplete;\r\n\r\n const facetsTemplate = el.shadowRoot?.querySelector('facets-template');\r\n const facetRows = facetsTemplate?.shadowRoot?.querySelectorAll(\r\n 'facet-row',\r\n ) as ArrayLike<FacetRow>;\r\n expect(facetRows?.length).to.equal(8);\r\n expect(facetRows?.[7]?.bucket?.key).to.equal('collection');\r\n });\r\n\r\n it('uses specified facet display order', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets\r\n .facetDisplayOrder=${['language', 'creator'] as FacetOption[]}\r\n ></collection-facets>`,\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n mediatype: new Aggregation({\r\n buckets: [{ key: 'texts', doc_count: 5 }],\r\n }),\r\n collection: new Aggregation({\r\n buckets: [{ key: 'foo', doc_count: 10 }],\r\n }),\r\n creator: new Aggregation({\r\n buckets: [{ key: 'bar', doc_count: 15 }],\r\n }),\r\n language: new Aggregation({\r\n buckets: [{ key: 'baz', doc_count: 20 }],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const facetHeaders = el.shadowRoot?.querySelectorAll('.facet-group-header');\r\n\r\n // The only two facet groups should be Language and Creator (in that order)\r\n expect(facetHeaders?.length).to.equal(2);\r\n expect(facetHeaders?.[0].textContent).to.contain('Language');\r\n expect(facetHeaders?.[1].textContent).to.contain('Creator');\r\n });\r\n\r\n describe('More Facets', () => {\r\n it('Does not render < allowedFacetCount', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`,\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n subject: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'foo',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const moreLink = el.shadowRoot?.querySelector('.more-link');\r\n expect(moreLink).to.be.null;\r\n });\r\n\r\n it('Render More Facets', async () => {\r\n const modalManager = await fixture<ModalManager>(\r\n html`<modal-manager></modal-manager>`,\r\n );\r\n\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets\r\n .modalManager=${modalManager}\r\n ></collection-facets>`,\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n subject: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'foo',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'fi',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'fum',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'flee',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'wheee',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'whooo',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'boop',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n let eventCaught = false;\r\n let eventFacet = '';\r\n el.addEventListener('showMoreFacets', e => {\r\n eventFacet = (e as CustomEvent).detail;\r\n eventCaught = true;\r\n });\r\n\r\n const moreLink = el.shadowRoot?.querySelector(\r\n '.more-link',\r\n ) as HTMLButtonElement;\r\n expect(moreLink).to.exist; // has link\r\n\r\n const showModalSpy = sinon.spy(\r\n el.modalManager as ModalManagerInterface,\r\n 'showModal',\r\n );\r\n // let's pop up modal\r\n moreLink?.click();\r\n await el.updateComplete;\r\n\r\n expect(showModalSpy.callCount).to.equal(1);\r\n expect(el.modalManager?.classList.contains('more-search-facets')).to.be\r\n .true;\r\n expect(eventCaught).to.be.true;\r\n expect(eventFacet).to.equal('subject' as FacetOption);\r\n });\r\n });\r\n\r\n it('fire analytics on more link', async () => {\r\n const mockAnalyticsHandler = new MockAnalyticsHandler();\r\n\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets\r\n .analyticsHandler=${mockAnalyticsHandler}\r\n ></collection-facets>`,\r\n );\r\n const aggs: Record<string, Aggregation> = {\r\n subject: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'foo',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'fi',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'fum',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'flee',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'wheee',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'whooo',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'boop',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const moreLink = el.shadowRoot?.querySelector(\r\n '.more-link',\r\n ) as HTMLButtonElement;\r\n\r\n expect(moreLink).to.exist; // has link\r\n\r\n moreLink?.click();\r\n await el.updateComplete;\r\n\r\n expect(mockAnalyticsHandler.callCategory).to.equal('collection-browser');\r\n expect(mockAnalyticsHandler.callAction).to.equal('showMoreFacetsModal');\r\n expect(mockAnalyticsHandler.callLabel).to.equal('subject');\r\n });\r\n\r\n it('includes Part Of section for collections', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets\r\n .baseNavigationUrl=${''}\r\n .withinCollection=${'foo'}\r\n .parentCollections=${['bar', 'baz']}\r\n .collectionTitles=${new Map([\r\n ['foo', 'foo-name'],\r\n ['bar', 'bar-name'],\r\n ['baz', 'baz-name'],\r\n ])}\r\n ></collection-facets>`,\r\n );\r\n\r\n const partOfSection = el.shadowRoot?.querySelector('.partof-collections');\r\n expect(partOfSection).to.exist;\r\n\r\n const partOfLinks = partOfSection?.querySelectorAll('a[href]');\r\n expect(partOfLinks?.length).to.equal(2);\r\n\r\n expect(partOfLinks?.[0]?.textContent?.trim()).to.equal('bar-name');\r\n expect(partOfLinks?.[0]?.getAttribute('href')).to.equal('/details/bar');\r\n expect(partOfLinks?.[1]?.textContent?.trim()).to.equal('baz-name');\r\n expect(partOfLinks?.[1]?.getAttribute('href')).to.equal('/details/baz');\r\n });\r\n\r\n it('does not include Part Of section without parent collections', async () => {\r\n // No parentCollections prop\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets .withinCollection=${'foo'}></collection-facets>`,\r\n );\r\n\r\n const partOfSection = el.shadowRoot?.querySelector('.partof-collections');\r\n expect(partOfSection).not.to.exist;\r\n });\r\n\r\n it('fires analytics on expanding date picker', async () => {\r\n const mockAnalyticsHandler = new MockAnalyticsHandler();\r\n\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets\r\n .analyticsHandler=${mockAnalyticsHandler}\r\n ></collection-facets>`,\r\n );\r\n\r\n el.histogramAggregationLoading = false;\r\n el.showHistogramDatePicker = true;\r\n el.allowExpandingDatePicker = true;\r\n el.histogramAggregation = new Aggregation({\r\n buckets: [1, 2, 3],\r\n first_bucket_key: 0,\r\n last_bucket_key: 2,\r\n });\r\n await el.updateComplete;\r\n\r\n const expandBtn = el.shadowRoot?.querySelector(\r\n '.expand-date-picker-btn',\r\n ) as HTMLButtonElement;\r\n expect(expandBtn).to.exist;\r\n\r\n // Click the expand button to open the modal\r\n expandBtn?.click();\r\n await el.updateComplete;\r\n\r\n expect(mockAnalyticsHandler.callCategory).to.equal('collection-browser');\r\n expect(mockAnalyticsHandler.callAction).to.equal('histogramExpanded');\r\n expect(mockAnalyticsHandler.callLabel).to.equal(window.location.href);\r\n });\r\n\r\n it('fires analytics on clicking Part Of collection link', async () => {\r\n const mockAnalyticsHandler = new MockAnalyticsHandler();\r\n\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets\r\n .baseNavigationUrl=${''}\r\n .withinCollection=${'foo'}\r\n .parentCollections=${['bar']}\r\n .analyticsHandler=${mockAnalyticsHandler}\r\n ></collection-facets>`,\r\n );\r\n\r\n const partOfLinks = el.shadowRoot?.querySelectorAll(\r\n '.partof-collections a[href]',\r\n );\r\n expect(partOfLinks?.length).to.equal(1);\r\n\r\n // Click the expand button to open the modal\r\n const link = partOfLinks?.[0] as HTMLAnchorElement;\r\n link?.addEventListener('click', e => e.preventDefault());\r\n link?.click();\r\n await el.updateComplete;\r\n\r\n expect(mockAnalyticsHandler.callCategory).to.equal('collection-browser');\r\n expect(mockAnalyticsHandler.callAction).to.equal('partOfCollectionClicked');\r\n expect(mockAnalyticsHandler.callLabel).to.equal('bar');\r\n });\r\n});\r\n"]}
@@ -168,28 +168,29 @@ describe('Restoration state handler', () => {
168
168
  expect((_a = restorationState.selectedFacets.year) === null || _a === void 0 ? void 0 : _a['2018'].state).to.equal('hidden');
169
169
  });
170
170
  it('should restore any TV clip filters from URL', async () => {
171
+ var _a, _b, _c;
171
172
  const handler = new RestorationStateHandler({ context: 'search' });
172
173
  const url = new URL(window.location.href);
173
174
  // Commercials
174
175
  url.search = '?only_commercials=1';
175
176
  window.history.replaceState({ path: url.href }, '', url.href);
176
177
  const commercialsRestorationState = handler.getRestorationState();
177
- expect(commercialsRestorationState.tvClipFilter).to.equal('commercials');
178
+ expect((_a = commercialsRestorationState.selectedFacets.clip_type) === null || _a === void 0 ? void 0 : _a.commercial.state).to.equal('selected');
178
179
  // Fact checks
179
180
  url.search = '?only_factchecks=1';
180
181
  window.history.replaceState({ path: url.href }, '', url.href);
181
182
  const factchecksRestorationState = handler.getRestorationState();
182
- expect(factchecksRestorationState.tvClipFilter).to.equal('factchecks');
183
+ expect((_b = factchecksRestorationState.selectedFacets.clip_type) === null || _b === void 0 ? void 0 : _b['fact check'].state).to.equal('selected');
183
184
  // Quotes
184
185
  url.search = '?only_quotes=1';
185
186
  window.history.replaceState({ path: url.href }, '', url.href);
186
187
  const quotesRestorationState = handler.getRestorationState();
187
- expect(quotesRestorationState.tvClipFilter).to.equal('quotes');
188
+ expect((_c = quotesRestorationState.selectedFacets.clip_type) === null || _c === void 0 ? void 0 : _c.quote.state).to.equal('selected');
188
189
  // No filter param
189
190
  url.search = '';
190
191
  window.history.replaceState({ path: url.href }, '', url.href);
191
192
  const unfilteredRestorationState = handler.getRestorationState();
192
- expect(unfilteredRestorationState.tvClipFilter).not.to.exist;
193
+ expect(unfilteredRestorationState.selectedFacets.clip_type).to.deep.equal({});
193
194
  });
194
195
  it('should restore sort from URL (space format)', async () => {
195
196
  const handler = new RestorationStateHandler({ context: 'search' });
@@ -292,39 +293,6 @@ describe('Restoration state handler', () => {
292
293
  });
293
294
  expect(window.location.search).to.equal('?page=2');
294
295
  });
295
- it('should persist TV clip filter types to the URL', async () => {
296
- const url = new URL(window.location.href);
297
- url.search = '';
298
- window.history.replaceState({ path: url.href }, '', url.href);
299
- // Commercials
300
- const handler = new RestorationStateHandler({ context: 'search' });
301
- handler.persistState({
302
- tvClipFilter: 'commercials',
303
- selectedFacets: getDefaultSelectedFacets(),
304
- });
305
- expect(window.location.search).to.equal('?only_commercials=1');
306
- // Fact checks
307
- window.history.replaceState({ path: url.href }, '', url.href);
308
- handler.persistState({
309
- tvClipFilter: 'factchecks',
310
- selectedFacets: getDefaultSelectedFacets(),
311
- });
312
- expect(window.location.search).to.equal('?only_factchecks=1');
313
- // Quotes
314
- window.history.replaceState({ path: url.href }, '', url.href);
315
- handler.persistState({
316
- tvClipFilter: 'quotes',
317
- selectedFacets: getDefaultSelectedFacets(),
318
- });
319
- expect(window.location.search).to.equal('?only_quotes=1');
320
- // Unfiltered
321
- window.history.replaceState({ path: url.href }, '', url.href);
322
- handler.persistState({
323
- tvClipFilter: 'all',
324
- selectedFacets: getDefaultSelectedFacets(),
325
- });
326
- expect(window.location.search).to.equal('');
327
- });
328
296
  it('should upgrade legacy search params to new ones', async () => {
329
297
  const url = new URL(window.location.href);
330
298
  url.search = '?q=foo';