@internetarchive/collection-browser 4.1.0-alpha-webdev8186.4 → 4.1.0

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.
@@ -7,8 +7,8 @@ describe('Sort dropdown behavior', () => {
7
7
  let el;
8
8
  let sortDropdown;
9
9
  beforeEach(async () => {
10
- el = await fixture(html `
11
- <sort-filter-bar></sort-filter-bar>
10
+ el = await fixture(html `
11
+ <sort-filter-bar></sort-filter-bar>
12
12
  `);
13
13
  sortDropdown = el.shadowRoot?.querySelector('#sort-dropdown');
14
14
  await el.updateComplete;
@@ -164,8 +164,8 @@ describe('Sort dropdown behavior', () => {
164
164
  expect(el.selectedCreatorFilter).to.be.null;
165
165
  });
166
166
  it('contains sort-options slot when enabled', async () => {
167
- const slotEl = await fixture(html `
168
- <sort-filter-bar .enableSortOptionsSlot=${true}></sort-filter-bar>
167
+ const slotEl = await fixture(html `
168
+ <sort-filter-bar .enableSortOptionsSlot=${true}></sort-filter-bar>
169
169
  `);
170
170
  await slotEl.updateComplete;
171
171
  const sortOptionsSlot = slotEl?.shadowRoot?.querySelector('slot[name="sort-options"]');
@@ -176,8 +176,8 @@ describe('Sort dropdown behavior', () => {
176
176
  });
177
177
  describe('Sort direction button behavior', () => {
178
178
  it('should disable sort direction button when sorting by relevance', async () => {
179
- const el = await fixture(html `
180
- <sort-filter-bar> </sort-filter-bar>
179
+ const el = await fixture(html `
180
+ <sort-filter-bar> </sort-filter-bar>
181
181
  `);
182
182
  el.selectedSort = 'relevance';
183
183
  await el.updateComplete;
@@ -186,8 +186,8 @@ describe('Sort direction button behavior', () => {
186
186
  expect(sortDirectionButton.disabled).to.be.true;
187
187
  });
188
188
  it('should enable sort direction button when not sorting by relevance', async () => {
189
- const el = await fixture(html `
190
- <sort-filter-bar> </sort-filter-bar>
189
+ const el = await fixture(html `
190
+ <sort-filter-bar> </sort-filter-bar>
191
191
  `);
192
192
  el.selectedSort = 'title';
193
193
  await el.updateComplete;
@@ -196,8 +196,8 @@ describe('Sort direction button behavior', () => {
196
196
  expect(sortDirectionButton.disabled).to.be.false;
197
197
  });
198
198
  it('should toggle sort direction when clicked', async () => {
199
- const el = await fixture(html `
200
- <sort-filter-bar> </sort-filter-bar>
199
+ const el = await fixture(html `
200
+ <sort-filter-bar> </sort-filter-bar>
201
201
  `);
202
202
  el.selectedSort = 'title';
203
203
  el.sortDirection = 'asc';
@@ -213,8 +213,8 @@ describe('Sort direction button behavior', () => {
213
213
  });
214
214
  describe('Display mode/style buttons', () => {
215
215
  it('should render all display mode buttons', async () => {
216
- const el = await fixture(html `
217
- <sort-filter-bar> </sort-filter-bar>
216
+ const el = await fixture(html `
217
+ <sort-filter-bar> </sort-filter-bar>
218
218
  `);
219
219
  const displayModeButtonList = el.shadowRoot
220
220
  ?.querySelector('#display-style-selector')
@@ -233,15 +233,15 @@ describe('Display mode/style buttons', () => {
233
233
  expect(compactListButton).to.exist;
234
234
  });
235
235
  it('should not render display mode buttons when suppressed', async () => {
236
- const el = await fixture(html `
237
- <sort-filter-bar suppressDisplayModes></sort-filter-bar>
236
+ const el = await fixture(html `
237
+ <sort-filter-bar suppressDisplayModes></sort-filter-bar>
238
238
  `);
239
239
  const displayModeButtonList = el.shadowRoot?.querySelector('#display-style-selector');
240
240
  expect(displayModeButtonList).not.to.exist;
241
241
  });
242
242
  it('should active current display mode', async () => {
243
- const el = await fixture(html `
244
- <sort-filter-bar> </sort-filter-bar>
243
+ const el = await fixture(html `
244
+ <sort-filter-bar> </sort-filter-bar>
245
245
  `);
246
246
  el.displayMode = 'grid';
247
247
  await el.updateComplete;
@@ -252,8 +252,8 @@ describe('Display mode/style buttons', () => {
252
252
  expect(displayModeTitle).to.equal('Tile view');
253
253
  });
254
254
  it('should change displayMode prop to the one clicked', async () => {
255
- const el = await fixture(html `
256
- <sort-filter-bar> </sort-filter-bar>
255
+ const el = await fixture(html `
256
+ <sort-filter-bar> </sort-filter-bar>
257
257
  `);
258
258
  el.displayMode = 'grid';
259
259
  await el.updateComplete;
@@ -273,8 +273,8 @@ describe('Display mode/style buttons', () => {
273
273
  });
274
274
  describe('Sort/filter bar letter behavior', () => {
275
275
  it('sets the selected title letter when clicked', async () => {
276
- const el = await fixture(html `
277
- <sort-filter-bar></sort-filter-bar>
276
+ const el = await fixture(html `
277
+ <sort-filter-bar></sort-filter-bar>
278
278
  `);
279
279
  el.selectedSort = 'title';
280
280
  el.prefixFilterCountMap = { title: { T: 1 }, creator: {} };
@@ -287,8 +287,8 @@ describe('Sort/filter bar letter behavior', () => {
287
287
  expect(el.selectedTitleFilter).to.equal('T');
288
288
  });
289
289
  it('sets the selected creator letter when clicked', async () => {
290
- const el = await fixture(html `
291
- <sort-filter-bar></sort-filter-bar>
290
+ const el = await fixture(html `
291
+ <sort-filter-bar></sort-filter-bar>
292
292
  `);
293
293
  el.selectedSort = 'creator';
294
294
  el.prefixFilterCountMap = { title: {}, creator: { C: 1 } };
@@ -1 +1 @@
1
- {"version":3,"file":"sort-filter-bar.test.js","sourceRoot":"","sources":["../../../test/sort-filter-bar/sort-filter-bar.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 { IaDropdown } from '@internetarchive/ia-dropdown';\nimport type { SortFilterBar } from '../../src/sort-filter-bar/sort-filter-bar';\nimport { SortField, defaultSortAvailability } from '../../src/models';\n\nimport '../../src/sort-filter-bar/sort-filter-bar';\n\ndescribe('Sort dropdown behavior', () => {\n let el: SortFilterBar;\n let sortDropdown: IaDropdown;\n\n beforeEach(async () => {\n el = await fixture<SortFilterBar>(html`\n <sort-filter-bar></sort-filter-bar>\n `);\n sortDropdown = el.shadowRoot?.querySelector('#sort-dropdown') as IaDropdown;\n await el.updateComplete;\n });\n\n it('should render basic component', async () => {\n const sortSelectorContainer = el.shadowRoot?.querySelector(\n '#sort-selector-container',\n );\n expect(sortSelectorContainer).to.exist;\n });\n\n it('should render sort-by label', async () => {\n const sortByLabel = el.shadowRoot?.querySelector('.sort-by-text');\n expect(sortByLabel).to.exist;\n expect(sortByLabel?.textContent?.trim()).to.equal('Sort by:');\n });\n\n it('should render sort direction button', async () => {\n const sortDirections = el.shadowRoot?.querySelector(\n '.sort-direction-container',\n );\n expect(sortDirections).to.exist;\n expect(sortDirections?.querySelector('.sort-direction-icon')).to.exist;\n });\n\n it('renders default set of sort options in dropdown', async () => {\n expect(sortDropdown).to.exist;\n expect(sortDropdown.options.map(o => o.id)).to.deep.equal([\n SortField.relevance,\n SortField.alltimeview,\n SortField.weeklyview,\n SortField.title,\n SortField.date,\n SortField.datearchived,\n SortField.datereviewed,\n SortField.dateadded,\n SortField.creator,\n ]);\n });\n\n it('respects overridden sort field availability', async () => {\n const customSortAvailability: Record<SortField, boolean> = {\n ...defaultSortAvailability,\n [SortField.title]: false,\n [SortField.datearchived]: false,\n [SortField.datereviewed]: false,\n [SortField.creator]: false,\n };\n\n el.sortFieldAvailability = customSortAvailability;\n await el.updateComplete;\n\n const dropdown = el.shadowRoot?.querySelector(\n '#sort-dropdown',\n ) as IaDropdown;\n expect(dropdown.options.length).to.equal(5);\n expect(dropdown.options.map(o => o.id)).to.deep.equal([\n SortField.relevance,\n SortField.alltimeview,\n SortField.weeklyview,\n SortField.date,\n SortField.dateadded,\n ]);\n });\n\n it('shows the display name of the selected sort', async () => {\n el.selectedSort = SortField.alltimeview;\n await el.updateComplete;\n\n const label = sortDropdown?.querySelector('.dropdown-label');\n expect(label?.textContent?.trim()).to.equal('All-time views');\n });\n\n it('falls back to first available sort when default is unavailable', async () => {\n el.selectedSort = SortField.default;\n el.defaultSortField = SortField.relevance;\n el.sortFieldAvailability = {\n ...defaultSortAvailability,\n [SortField.relevance]: false,\n };\n await el.updateComplete;\n\n const label = sortDropdown?.querySelector('.dropdown-label');\n // No relevance, so fall back to the first one in the list\n expect(label?.textContent?.trim()).to.equal('All-time views');\n });\n\n it('changes selected sort when dropdown option selected', async () => {\n expect(sortDropdown).to.exist;\n\n sortDropdown.selectedOption = 'title';\n const option = { id: 'title' };\n sortDropdown.dispatchEvent(\n new CustomEvent('optionSelected', { detail: { option } }),\n );\n await el.updateComplete;\n\n expect(el.selectedSort).to.equal('title');\n });\n\n it('selects a sort option by clicking it in the dropdown', async () => {\n el.selectedSort = SortField.title;\n await el.updateComplete;\n\n const dropdown = el.shadowRoot?.querySelector(\n '#sort-dropdown',\n ) as IaDropdown;\n expect(dropdown).to.exist;\n\n const firstOption = dropdown?.shadowRoot?.querySelector(\n 'li > button',\n ) as HTMLButtonElement;\n expect(firstOption).to.exist;\n\n firstOption?.click();\n await el.updateComplete;\n\n // The first option is relevance by default\n expect(el.selectedSort).to.equal(SortField.relevance);\n });\n\n it('emits sortChanged event when sort option selected', async () => {\n const sortChangedHandler = sinon.spy();\n el.addEventListener('sortChanged', sortChangedHandler);\n\n const option = { id: SortField.title };\n sortDropdown.dispatchEvent(\n new CustomEvent('optionSelected', { detail: { option } }),\n );\n await el.updateComplete;\n\n expect(sortChangedHandler.calledOnce).to.be.true;\n const eventDetail = sortChangedHandler.firstCall.args[0].detail;\n expect(eventDetail.selectedSort).to.equal(SortField.title);\n expect(eventDetail.sortDirection).to.equal('asc');\n });\n\n it('renders sort selector backdrop when dropdown is open', async () => {\n expect(sortDropdown).to.exist;\n\n const caret = sortDropdown?.shadowRoot?.querySelector(\n '.caret',\n ) as HTMLElement;\n expect(caret).to.exist;\n\n caret!.click();\n await el.updateComplete;\n\n let backdrop = el.shadowRoot?.querySelector(\n '#sort-selector-backdrop',\n ) as HTMLElement;\n expect(backdrop).to.exist;\n\n // Clicking the backdrop should close the dropdown\n backdrop!.click();\n await el.updateComplete;\n\n backdrop = el.shadowRoot?.querySelector(\n '#sort-selector-backdrop',\n ) as HTMLElement;\n expect(backdrop).not.to.exist;\n });\n\n it('pressing Escape key closes the dropdown', async () => {\n expect(sortDropdown).to.exist;\n\n const caret = sortDropdown?.shadowRoot?.querySelector(\n '.caret',\n ) as HTMLElement;\n expect(caret).to.exist;\n\n caret!.click();\n await el.updateComplete;\n\n let backdrop = el.shadowRoot?.querySelector(\n '#sort-selector-backdrop',\n ) as HTMLElement;\n expect(backdrop).to.exist;\n\n document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape' }));\n await el.updateComplete;\n\n backdrop = el.shadowRoot?.querySelector(\n '#sort-selector-backdrop',\n ) as HTMLElement;\n expect(backdrop).not.to.exist;\n });\n\n it('clears title filter when sort changed from title', async () => {\n el.selectedSort = 'title' as SortField;\n el.selectedTitleFilter = 'A';\n await el.updateComplete;\n\n const dropdown = el.shadowRoot?.querySelector(\n '#sort-dropdown',\n ) as IaDropdown;\n expect(dropdown).to.exist;\n\n dropdown.selectedOption = 'relevance';\n const option = { id: 'relevance' };\n dropdown.dispatchEvent(\n new CustomEvent('optionSelected', { detail: { option } }),\n );\n await el.updateComplete;\n\n expect(el.selectedSort).to.equal('relevance');\n expect(el.selectedTitleFilter).to.be.null;\n });\n\n it('clears creator filter when sort changed from creator', async () => {\n el.selectedSort = 'creator' as SortField;\n el.selectedCreatorFilter = 'A';\n await el.updateComplete;\n\n const dropdown = el.shadowRoot?.querySelector(\n '#sort-dropdown',\n ) as IaDropdown;\n expect(dropdown).to.exist;\n\n dropdown.selectedOption = 'relevance';\n const option = { id: 'relevance' };\n dropdown.dispatchEvent(\n new CustomEvent('optionSelected', { detail: { option } }),\n );\n await el.updateComplete;\n\n expect(el.selectedSort).to.equal('relevance');\n expect(el.selectedCreatorFilter).to.be.null;\n });\n\n it('contains sort-options slot when enabled', async () => {\n const slotEl = await fixture<SortFilterBar>(html`\n <sort-filter-bar .enableSortOptionsSlot=${true}></sort-filter-bar>\n `);\n await slotEl.updateComplete;\n\n const sortOptionsSlot = slotEl?.shadowRoot?.querySelector(\n 'slot[name=\"sort-options\"]',\n );\n expect(sortOptionsSlot).to.exist;\n\n expect(slotEl?.shadowRoot?.querySelector('#sort-selector-container')).to.not\n .exist;\n });\n});\n\ndescribe('Sort direction button behavior', () => {\n it('should disable sort direction button when sorting by relevance', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar> </sort-filter-bar>\n `);\n\n el.selectedSort = 'relevance' as SortField;\n await el.updateComplete;\n\n const sortDirectionButton = el.shadowRoot?.querySelector(\n '.sort-direction-selector',\n ) as HTMLButtonElement;\n expect(sortDirectionButton).to.exist;\n expect(sortDirectionButton.disabled).to.be.true;\n });\n\n it('should enable sort direction button when not sorting by relevance', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar> </sort-filter-bar>\n `);\n\n el.selectedSort = 'title' as SortField;\n await el.updateComplete;\n\n const sortDirectionButton = el.shadowRoot?.querySelector(\n '.sort-direction-selector',\n ) as HTMLButtonElement;\n expect(sortDirectionButton).to.exist;\n expect(sortDirectionButton.disabled).to.be.false;\n });\n\n it('should toggle sort direction when clicked', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar> </sort-filter-bar>\n `);\n\n el.selectedSort = 'title' as SortField;\n el.sortDirection = 'asc';\n await el.updateComplete;\n\n const sortDirectionButton = el.shadowRoot?.querySelector(\n '.sort-direction-selector',\n ) as HTMLButtonElement;\n\n sortDirectionButton.click();\n await el.updateComplete;\n expect(el.sortDirection).to.equal('desc');\n\n sortDirectionButton.click();\n await el.updateComplete;\n expect(el.sortDirection).to.equal('asc');\n });\n});\n\ndescribe('Display mode/style buttons', () => {\n it('should render all display mode buttons', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar> </sort-filter-bar>\n `);\n\n const displayModeButtonList = el.shadowRoot\n ?.querySelector('#display-style-selector')\n ?.querySelector('ul');\n\n const gridButton = displayModeButtonList?.children\n .item(0)\n ?.querySelector('#grid-button');\n expect(gridButton).to.exist;\n\n const detailListButton = displayModeButtonList?.children\n .item(1)\n ?.querySelector('#list-detail-button');\n expect(detailListButton).to.exist;\n\n const compactListButton = displayModeButtonList?.children\n .item(2)\n ?.querySelector('#list-compact-button');\n expect(compactListButton).to.exist;\n });\n\n it('should not render display mode buttons when suppressed', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar suppressDisplayModes></sort-filter-bar>\n `);\n\n const displayModeButtonList = el.shadowRoot?.querySelector(\n '#display-style-selector',\n );\n expect(displayModeButtonList).not.to.exist;\n });\n\n it('should active current display mode', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar> </sort-filter-bar>\n `);\n\n el.displayMode = 'grid';\n await el.updateComplete;\n\n const displayModeTitle = el.shadowRoot\n ?.querySelector('#display-style-selector')\n ?.querySelector('button.active')\n ?.getAttribute('title');\n expect(displayModeTitle).to.equal('Tile view');\n });\n\n it('should change displayMode prop to the one clicked', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar> </sort-filter-bar>\n `);\n\n el.displayMode = 'grid';\n await el.updateComplete;\n\n const extendedListButton = el.shadowRoot?.querySelector(\n '#list-detail-button',\n ) as HTMLElement;\n extendedListButton.click();\n await el.updateComplete;\n expect(el.displayMode).to.equal('list-detail');\n\n const compactListButton = el.shadowRoot?.querySelector(\n '#list-compact-button',\n ) as HTMLElement;\n compactListButton.click();\n await el.updateComplete;\n expect(el.displayMode).to.equal('list-compact');\n\n const gridModeButton = el.shadowRoot?.querySelector(\n '#grid-button',\n ) as HTMLElement;\n gridModeButton.click();\n await el.updateComplete;\n expect(el.displayMode).to.equal('grid');\n });\n});\n\ndescribe('Sort/filter bar letter behavior', () => {\n it('sets the selected title letter when clicked', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar></sort-filter-bar>\n `);\n\n el.selectedSort = 'title' as SortField;\n el.prefixFilterCountMap = { title: { T: 1 }, creator: {} };\n await el.updateComplete;\n\n const alphaBar = el.shadowRoot?.querySelector('alpha-bar');\n const letterLink = alphaBar?.shadowRoot?.querySelector(\n 'li > button:not(:disabled)',\n ) as HTMLAnchorElement;\n expect(letterLink?.textContent?.trim()).to.equal('T');\n\n letterLink?.click();\n await el.updateComplete;\n\n expect(el.selectedTitleFilter).to.equal('T');\n });\n\n it('sets the selected creator letter when clicked', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar></sort-filter-bar>\n `);\n\n el.selectedSort = 'creator' as SortField;\n el.prefixFilterCountMap = { title: {}, creator: { C: 1 } };\n await el.updateComplete;\n\n const alphaBar = el.shadowRoot?.querySelector('alpha-bar');\n const letterLink = alphaBar?.shadowRoot?.querySelector(\n 'li > button:not(:disabled)',\n ) as HTMLAnchorElement;\n expect(letterLink?.textContent?.trim()).to.equal('C');\n\n letterLink?.click();\n await el.updateComplete;\n\n expect(el.selectedCreatorFilter).to.equal('C');\n });\n});\n"]}
1
+ {"version":3,"file":"sort-filter-bar.test.js","sourceRoot":"","sources":["../../../test/sort-filter-bar/sort-filter-bar.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 { IaDropdown } from '@internetarchive/ia-dropdown';\r\nimport type { SortFilterBar } from '../../src/sort-filter-bar/sort-filter-bar';\r\nimport { SortField, defaultSortAvailability } from '../../src/models';\r\n\r\nimport '../../src/sort-filter-bar/sort-filter-bar';\r\n\r\ndescribe('Sort dropdown behavior', () => {\r\n let el: SortFilterBar;\r\n let sortDropdown: IaDropdown;\r\n\r\n beforeEach(async () => {\r\n el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar></sort-filter-bar>\r\n `);\r\n sortDropdown = el.shadowRoot?.querySelector('#sort-dropdown') as IaDropdown;\r\n await el.updateComplete;\r\n });\r\n\r\n it('should render basic component', async () => {\r\n const sortSelectorContainer = el.shadowRoot?.querySelector(\r\n '#sort-selector-container',\r\n );\r\n expect(sortSelectorContainer).to.exist;\r\n });\r\n\r\n it('should render sort-by label', async () => {\r\n const sortByLabel = el.shadowRoot?.querySelector('.sort-by-text');\r\n expect(sortByLabel).to.exist;\r\n expect(sortByLabel?.textContent?.trim()).to.equal('Sort by:');\r\n });\r\n\r\n it('should render sort direction button', async () => {\r\n const sortDirections = el.shadowRoot?.querySelector(\r\n '.sort-direction-container',\r\n );\r\n expect(sortDirections).to.exist;\r\n expect(sortDirections?.querySelector('.sort-direction-icon')).to.exist;\r\n });\r\n\r\n it('renders default set of sort options in dropdown', async () => {\r\n expect(sortDropdown).to.exist;\r\n expect(sortDropdown.options.map(o => o.id)).to.deep.equal([\r\n SortField.relevance,\r\n SortField.alltimeview,\r\n SortField.weeklyview,\r\n SortField.title,\r\n SortField.date,\r\n SortField.datearchived,\r\n SortField.datereviewed,\r\n SortField.dateadded,\r\n SortField.creator,\r\n ]);\r\n });\r\n\r\n it('respects overridden sort field availability', async () => {\r\n const customSortAvailability: Record<SortField, boolean> = {\r\n ...defaultSortAvailability,\r\n [SortField.title]: false,\r\n [SortField.datearchived]: false,\r\n [SortField.datereviewed]: false,\r\n [SortField.creator]: false,\r\n };\r\n\r\n el.sortFieldAvailability = customSortAvailability;\r\n await el.updateComplete;\r\n\r\n const dropdown = el.shadowRoot?.querySelector(\r\n '#sort-dropdown',\r\n ) as IaDropdown;\r\n expect(dropdown.options.length).to.equal(5);\r\n expect(dropdown.options.map(o => o.id)).to.deep.equal([\r\n SortField.relevance,\r\n SortField.alltimeview,\r\n SortField.weeklyview,\r\n SortField.date,\r\n SortField.dateadded,\r\n ]);\r\n });\r\n\r\n it('shows the display name of the selected sort', async () => {\r\n el.selectedSort = SortField.alltimeview;\r\n await el.updateComplete;\r\n\r\n const label = sortDropdown?.querySelector('.dropdown-label');\r\n expect(label?.textContent?.trim()).to.equal('All-time views');\r\n });\r\n\r\n it('falls back to first available sort when default is unavailable', async () => {\r\n el.selectedSort = SortField.default;\r\n el.defaultSortField = SortField.relevance;\r\n el.sortFieldAvailability = {\r\n ...defaultSortAvailability,\r\n [SortField.relevance]: false,\r\n };\r\n await el.updateComplete;\r\n\r\n const label = sortDropdown?.querySelector('.dropdown-label');\r\n // No relevance, so fall back to the first one in the list\r\n expect(label?.textContent?.trim()).to.equal('All-time views');\r\n });\r\n\r\n it('changes selected sort when dropdown option selected', async () => {\r\n expect(sortDropdown).to.exist;\r\n\r\n sortDropdown.selectedOption = 'title';\r\n const option = { id: 'title' };\r\n sortDropdown.dispatchEvent(\r\n new CustomEvent('optionSelected', { detail: { option } }),\r\n );\r\n await el.updateComplete;\r\n\r\n expect(el.selectedSort).to.equal('title');\r\n });\r\n\r\n it('selects a sort option by clicking it in the dropdown', async () => {\r\n el.selectedSort = SortField.title;\r\n await el.updateComplete;\r\n\r\n const dropdown = el.shadowRoot?.querySelector(\r\n '#sort-dropdown',\r\n ) as IaDropdown;\r\n expect(dropdown).to.exist;\r\n\r\n const firstOption = dropdown?.shadowRoot?.querySelector(\r\n 'li > button',\r\n ) as HTMLButtonElement;\r\n expect(firstOption).to.exist;\r\n\r\n firstOption?.click();\r\n await el.updateComplete;\r\n\r\n // The first option is relevance by default\r\n expect(el.selectedSort).to.equal(SortField.relevance);\r\n });\r\n\r\n it('emits sortChanged event when sort option selected', async () => {\r\n const sortChangedHandler = sinon.spy();\r\n el.addEventListener('sortChanged', sortChangedHandler);\r\n\r\n const option = { id: SortField.title };\r\n sortDropdown.dispatchEvent(\r\n new CustomEvent('optionSelected', { detail: { option } }),\r\n );\r\n await el.updateComplete;\r\n\r\n expect(sortChangedHandler.calledOnce).to.be.true;\r\n const eventDetail = sortChangedHandler.firstCall.args[0].detail;\r\n expect(eventDetail.selectedSort).to.equal(SortField.title);\r\n expect(eventDetail.sortDirection).to.equal('asc');\r\n });\r\n\r\n it('renders sort selector backdrop when dropdown is open', async () => {\r\n expect(sortDropdown).to.exist;\r\n\r\n const caret = sortDropdown?.shadowRoot?.querySelector(\r\n '.caret',\r\n ) as HTMLElement;\r\n expect(caret).to.exist;\r\n\r\n caret!.click();\r\n await el.updateComplete;\r\n\r\n let backdrop = el.shadowRoot?.querySelector(\r\n '#sort-selector-backdrop',\r\n ) as HTMLElement;\r\n expect(backdrop).to.exist;\r\n\r\n // Clicking the backdrop should close the dropdown\r\n backdrop!.click();\r\n await el.updateComplete;\r\n\r\n backdrop = el.shadowRoot?.querySelector(\r\n '#sort-selector-backdrop',\r\n ) as HTMLElement;\r\n expect(backdrop).not.to.exist;\r\n });\r\n\r\n it('pressing Escape key closes the dropdown', async () => {\r\n expect(sortDropdown).to.exist;\r\n\r\n const caret = sortDropdown?.shadowRoot?.querySelector(\r\n '.caret',\r\n ) as HTMLElement;\r\n expect(caret).to.exist;\r\n\r\n caret!.click();\r\n await el.updateComplete;\r\n\r\n let backdrop = el.shadowRoot?.querySelector(\r\n '#sort-selector-backdrop',\r\n ) as HTMLElement;\r\n expect(backdrop).to.exist;\r\n\r\n document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape' }));\r\n await el.updateComplete;\r\n\r\n backdrop = el.shadowRoot?.querySelector(\r\n '#sort-selector-backdrop',\r\n ) as HTMLElement;\r\n expect(backdrop).not.to.exist;\r\n });\r\n\r\n it('clears title filter when sort changed from title', async () => {\r\n el.selectedSort = 'title' as SortField;\r\n el.selectedTitleFilter = 'A';\r\n await el.updateComplete;\r\n\r\n const dropdown = el.shadowRoot?.querySelector(\r\n '#sort-dropdown',\r\n ) as IaDropdown;\r\n expect(dropdown).to.exist;\r\n\r\n dropdown.selectedOption = 'relevance';\r\n const option = { id: 'relevance' };\r\n dropdown.dispatchEvent(\r\n new CustomEvent('optionSelected', { detail: { option } }),\r\n );\r\n await el.updateComplete;\r\n\r\n expect(el.selectedSort).to.equal('relevance');\r\n expect(el.selectedTitleFilter).to.be.null;\r\n });\r\n\r\n it('clears creator filter when sort changed from creator', async () => {\r\n el.selectedSort = 'creator' as SortField;\r\n el.selectedCreatorFilter = 'A';\r\n await el.updateComplete;\r\n\r\n const dropdown = el.shadowRoot?.querySelector(\r\n '#sort-dropdown',\r\n ) as IaDropdown;\r\n expect(dropdown).to.exist;\r\n\r\n dropdown.selectedOption = 'relevance';\r\n const option = { id: 'relevance' };\r\n dropdown.dispatchEvent(\r\n new CustomEvent('optionSelected', { detail: { option } }),\r\n );\r\n await el.updateComplete;\r\n\r\n expect(el.selectedSort).to.equal('relevance');\r\n expect(el.selectedCreatorFilter).to.be.null;\r\n });\r\n\r\n it('contains sort-options slot when enabled', async () => {\r\n const slotEl = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar .enableSortOptionsSlot=${true}></sort-filter-bar>\r\n `);\r\n await slotEl.updateComplete;\r\n\r\n const sortOptionsSlot = slotEl?.shadowRoot?.querySelector(\r\n 'slot[name=\"sort-options\"]',\r\n );\r\n expect(sortOptionsSlot).to.exist;\r\n\r\n expect(slotEl?.shadowRoot?.querySelector('#sort-selector-container')).to.not\r\n .exist;\r\n });\r\n});\r\n\r\ndescribe('Sort direction button behavior', () => {\r\n it('should disable sort direction button when sorting by relevance', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar> </sort-filter-bar>\r\n `);\r\n\r\n el.selectedSort = 'relevance' as SortField;\r\n await el.updateComplete;\r\n\r\n const sortDirectionButton = el.shadowRoot?.querySelector(\r\n '.sort-direction-selector',\r\n ) as HTMLButtonElement;\r\n expect(sortDirectionButton).to.exist;\r\n expect(sortDirectionButton.disabled).to.be.true;\r\n });\r\n\r\n it('should enable sort direction button when not sorting by relevance', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar> </sort-filter-bar>\r\n `);\r\n\r\n el.selectedSort = 'title' as SortField;\r\n await el.updateComplete;\r\n\r\n const sortDirectionButton = el.shadowRoot?.querySelector(\r\n '.sort-direction-selector',\r\n ) as HTMLButtonElement;\r\n expect(sortDirectionButton).to.exist;\r\n expect(sortDirectionButton.disabled).to.be.false;\r\n });\r\n\r\n it('should toggle sort direction when clicked', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar> </sort-filter-bar>\r\n `);\r\n\r\n el.selectedSort = 'title' as SortField;\r\n el.sortDirection = 'asc';\r\n await el.updateComplete;\r\n\r\n const sortDirectionButton = el.shadowRoot?.querySelector(\r\n '.sort-direction-selector',\r\n ) as HTMLButtonElement;\r\n\r\n sortDirectionButton.click();\r\n await el.updateComplete;\r\n expect(el.sortDirection).to.equal('desc');\r\n\r\n sortDirectionButton.click();\r\n await el.updateComplete;\r\n expect(el.sortDirection).to.equal('asc');\r\n });\r\n});\r\n\r\ndescribe('Display mode/style buttons', () => {\r\n it('should render all display mode buttons', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar> </sort-filter-bar>\r\n `);\r\n\r\n const displayModeButtonList = el.shadowRoot\r\n ?.querySelector('#display-style-selector')\r\n ?.querySelector('ul');\r\n\r\n const gridButton = displayModeButtonList?.children\r\n .item(0)\r\n ?.querySelector('#grid-button');\r\n expect(gridButton).to.exist;\r\n\r\n const detailListButton = displayModeButtonList?.children\r\n .item(1)\r\n ?.querySelector('#list-detail-button');\r\n expect(detailListButton).to.exist;\r\n\r\n const compactListButton = displayModeButtonList?.children\r\n .item(2)\r\n ?.querySelector('#list-compact-button');\r\n expect(compactListButton).to.exist;\r\n });\r\n\r\n it('should not render display mode buttons when suppressed', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar suppressDisplayModes></sort-filter-bar>\r\n `);\r\n\r\n const displayModeButtonList = el.shadowRoot?.querySelector(\r\n '#display-style-selector',\r\n );\r\n expect(displayModeButtonList).not.to.exist;\r\n });\r\n\r\n it('should active current display mode', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar> </sort-filter-bar>\r\n `);\r\n\r\n el.displayMode = 'grid';\r\n await el.updateComplete;\r\n\r\n const displayModeTitle = el.shadowRoot\r\n ?.querySelector('#display-style-selector')\r\n ?.querySelector('button.active')\r\n ?.getAttribute('title');\r\n expect(displayModeTitle).to.equal('Tile view');\r\n });\r\n\r\n it('should change displayMode prop to the one clicked', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar> </sort-filter-bar>\r\n `);\r\n\r\n el.displayMode = 'grid';\r\n await el.updateComplete;\r\n\r\n const extendedListButton = el.shadowRoot?.querySelector(\r\n '#list-detail-button',\r\n ) as HTMLElement;\r\n extendedListButton.click();\r\n await el.updateComplete;\r\n expect(el.displayMode).to.equal('list-detail');\r\n\r\n const compactListButton = el.shadowRoot?.querySelector(\r\n '#list-compact-button',\r\n ) as HTMLElement;\r\n compactListButton.click();\r\n await el.updateComplete;\r\n expect(el.displayMode).to.equal('list-compact');\r\n\r\n const gridModeButton = el.shadowRoot?.querySelector(\r\n '#grid-button',\r\n ) as HTMLElement;\r\n gridModeButton.click();\r\n await el.updateComplete;\r\n expect(el.displayMode).to.equal('grid');\r\n });\r\n});\r\n\r\ndescribe('Sort/filter bar letter behavior', () => {\r\n it('sets the selected title letter when clicked', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar></sort-filter-bar>\r\n `);\r\n\r\n el.selectedSort = 'title' as SortField;\r\n el.prefixFilterCountMap = { title: { T: 1 }, creator: {} };\r\n await el.updateComplete;\r\n\r\n const alphaBar = el.shadowRoot?.querySelector('alpha-bar');\r\n const letterLink = alphaBar?.shadowRoot?.querySelector(\r\n 'li > button:not(:disabled)',\r\n ) as HTMLAnchorElement;\r\n expect(letterLink?.textContent?.trim()).to.equal('T');\r\n\r\n letterLink?.click();\r\n await el.updateComplete;\r\n\r\n expect(el.selectedTitleFilter).to.equal('T');\r\n });\r\n\r\n it('sets the selected creator letter when clicked', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar></sort-filter-bar>\r\n `);\r\n\r\n el.selectedSort = 'creator' as SortField;\r\n el.prefixFilterCountMap = { title: {}, creator: { C: 1 } };\r\n await el.updateComplete;\r\n\r\n const alphaBar = el.shadowRoot?.querySelector('alpha-bar');\r\n const letterLink = alphaBar?.shadowRoot?.querySelector(\r\n 'li > button:not(:disabled)',\r\n ) as HTMLAnchorElement;\r\n expect(letterLink?.textContent?.trim()).to.equal('C');\r\n\r\n letterLink?.click();\r\n await el.updateComplete;\r\n\r\n expect(el.selectedCreatorFilter).to.equal('C');\r\n });\r\n});\r\n"]}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "The Internet Archive Collection Browser.",
4
4
  "license": "AGPL-3.0-only",
5
5
  "author": "Internet Archive",
6
- "version": "4.1.0-alpha-webdev8186.4",
6
+ "version": "4.1.0",
7
7
  "main": "dist/index.js",
8
8
  "module": "dist/index.js",
9
9
  "scripts": {
@@ -114,8 +114,7 @@
114
114
  "lint-staged": {
115
115
  "*.ts": [
116
116
  "eslint --fix",
117
- "prettier --write",
118
- "git add"
117
+ "prettier --write"
119
118
  ]
120
119
  }
121
120
  }