@internetarchive/collection-browser 0.2.12 → 0.2.14-alpha.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.
- package/dist/index.d.ts +9 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/src/app-root.d.ts +32 -0
- package/dist/src/app-root.js +285 -0
- package/dist/src/app-root.js.map +1 -0
- package/dist/src/assets/img/icons/chevron.d.ts +2 -0
- package/dist/src/assets/img/icons/chevron.js +4 -0
- package/dist/src/assets/img/icons/chevron.js.map +1 -0
- package/dist/src/assets/img/icons/empty-query.d.ts +2 -0
- package/dist/src/assets/img/icons/empty-query.js +5 -0
- package/dist/src/assets/img/icons/empty-query.js.map +1 -0
- package/dist/src/assets/img/icons/eye-closed.d.ts +2 -0
- package/dist/src/assets/img/icons/eye-closed.js +5 -0
- package/dist/src/assets/img/icons/eye-closed.js.map +1 -0
- package/dist/src/assets/img/icons/eye.d.ts +2 -0
- package/dist/src/assets/img/icons/eye.js +5 -0
- package/dist/src/assets/img/icons/eye.js.map +1 -0
- package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -0
- package/dist/src/assets/img/icons/favorite-filled.js +11 -0
- package/dist/src/assets/img/icons/favorite-filled.js.map +1 -0
- package/dist/src/assets/img/icons/login-required.d.ts +1 -0
- package/dist/src/assets/img/icons/login-required.js +30 -0
- package/dist/src/assets/img/icons/login-required.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/account.js +14 -0
- package/dist/src/assets/img/icons/mediatype/account.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/audio.js +14 -0
- package/dist/src/assets/img/icons/mediatype/audio.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/collection.js +12 -0
- package/dist/src/assets/img/icons/mediatype/collection.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/data.js +15 -0
- package/dist/src/assets/img/icons/mediatype/data.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/etree.js +14 -0
- package/dist/src/assets/img/icons/mediatype/etree.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/film.js +14 -0
- package/dist/src/assets/img/icons/mediatype/film.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/images.js +13 -0
- package/dist/src/assets/img/icons/mediatype/images.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/radio.js +15 -0
- package/dist/src/assets/img/icons/mediatype/radio.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/software.js +13 -0
- package/dist/src/assets/img/icons/mediatype/software.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/texts.js +13 -0
- package/dist/src/assets/img/icons/mediatype/texts.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/tv.js +14 -0
- package/dist/src/assets/img/icons/mediatype/tv.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/video.js +14 -0
- package/dist/src/assets/img/icons/mediatype/video.js.map +1 -0
- package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -0
- package/dist/src/assets/img/icons/mediatype/web.js +13 -0
- package/dist/src/assets/img/icons/mediatype/web.js.map +1 -0
- package/dist/src/assets/img/icons/null-result.d.ts +2 -0
- package/dist/src/assets/img/icons/null-result.js +5 -0
- package/dist/src/assets/img/icons/null-result.js.map +1 -0
- package/dist/src/assets/img/icons/restricted.d.ts +1 -0
- package/dist/src/assets/img/icons/restricted.js +29 -0
- package/dist/src/assets/img/icons/restricted.js.map +1 -0
- package/dist/src/assets/img/icons/reviews.d.ts +1 -0
- package/dist/src/assets/img/icons/reviews.js +11 -0
- package/dist/src/assets/img/icons/reviews.js.map +1 -0
- package/dist/src/assets/img/icons/upload.d.ts +1 -0
- package/dist/src/assets/img/icons/upload.js +12 -0
- package/dist/src/assets/img/icons/upload.js.map +1 -0
- package/dist/src/assets/img/icons/views.d.ts +1 -0
- package/dist/src/assets/img/icons/views.js +11 -0
- package/dist/src/assets/img/icons/views.js.map +1 -0
- package/dist/src/circular-activity-indicator.d.ts +5 -0
- package/dist/src/circular-activity-indicator.js +66 -0
- package/dist/src/circular-activity-indicator.js.map +1 -0
- package/dist/src/collection-browser.d.ts +214 -0
- package/dist/src/collection-browser.js +1241 -0
- package/dist/src/collection-browser.js.map +1 -0
- package/dist/src/collection-facets.d.ts +63 -0
- package/dist/src/collection-facets.js +560 -0
- package/dist/src/collection-facets.js.map +1 -0
- package/dist/src/empty-placeholder.d.ts +11 -0
- package/dist/src/empty-placeholder.js +83 -0
- package/dist/src/empty-placeholder.js.map +1 -0
- package/dist/src/language-code-handler/language-code-handler.d.ts +37 -0
- package/dist/src/language-code-handler/language-code-handler.js +27 -0
- package/dist/src/language-code-handler/language-code-handler.js.map +1 -0
- package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -0
- package/dist/src/language-code-handler/language-code-mapping.js +563 -0
- package/dist/src/language-code-handler/language-code-mapping.js.map +1 -0
- package/dist/src/mediatype/mediatype-config.d.ts +3 -0
- package/dist/src/mediatype/mediatype-config.js +86 -0
- package/dist/src/mediatype/mediatype-config.js.map +1 -0
- package/dist/src/models.d.ts +85 -0
- package/dist/src/models.js +62 -0
- package/dist/src/models.js.map +1 -0
- package/dist/src/restoration-state-handler.d.ts +38 -0
- package/dist/src/restoration-state-handler.js +204 -0
- package/dist/src/restoration-state-handler.js.map +1 -0
- package/dist/src/sort-filter-bar/alpha-bar.d.ts +9 -0
- package/dist/src/sort-filter-bar/alpha-bar.js +98 -0
- package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -0
- package/dist/src/sort-filter-bar/img/compact.d.ts +1 -0
- package/dist/src/sort-filter-bar/img/compact.js +5 -0
- package/dist/src/sort-filter-bar/img/compact.js.map +1 -0
- package/dist/src/sort-filter-bar/img/list.d.ts +1 -0
- package/dist/src/sort-filter-bar/img/list.js +5 -0
- package/dist/src/sort-filter-bar/img/list.js.map +1 -0
- package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -0
- package/dist/src/sort-filter-bar/img/sort-triangle.js +5 -0
- package/dist/src/sort-filter-bar/img/sort-triangle.js.map +1 -0
- package/dist/src/sort-filter-bar/img/tile.d.ts +1 -0
- package/dist/src/sort-filter-bar/img/tile.js +5 -0
- package/dist/src/sort-filter-bar/img/tile.js.map +1 -0
- package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +107 -0
- package/dist/src/sort-filter-bar/sort-filter-bar.js +782 -0
- package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -0
- package/dist/src/styles/item-image-styles.d.ts +8 -0
- package/dist/src/styles/item-image-styles.js +102 -0
- package/dist/src/styles/item-image-styles.js.map +1 -0
- package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -0
- package/dist/src/tiles/collection-browser-loading-tile.js +32 -0
- package/dist/src/tiles/collection-browser-loading-tile.js.map +1 -0
- package/dist/src/tiles/grid/account-tile.d.ts +8 -0
- package/dist/src/tiles/grid/account-tile.js +126 -0
- package/dist/src/tiles/grid/account-tile.js.map +1 -0
- package/dist/src/tiles/grid/collection-tile.d.ts +7 -0
- package/dist/src/tiles/grid/collection-tile.js +159 -0
- package/dist/src/tiles/grid/collection-tile.js.map +1 -0
- package/dist/src/tiles/grid/item-tile.d.ts +21 -0
- package/dist/src/tiles/grid/item-tile.js +183 -0
- package/dist/src/tiles/grid/item-tile.js.map +1 -0
- package/dist/src/tiles/grid/tile-stats.d.ts +10 -0
- package/dist/src/tiles/grid/tile-stats.js +134 -0
- package/dist/src/tiles/grid/tile-stats.js.map +1 -0
- package/dist/src/tiles/image-block.d.ts +17 -0
- package/dist/src/tiles/image-block.js +136 -0
- package/dist/src/tiles/image-block.js.map +1 -0
- package/dist/src/tiles/item-image.d.ts +31 -0
- package/dist/src/tiles/item-image.js +118 -0
- package/dist/src/tiles/item-image.js.map +1 -0
- package/dist/src/tiles/list/account-label.d.ts +1 -0
- package/dist/src/tiles/list/account-label.js +7 -0
- package/dist/src/tiles/list/account-label.js.map +1 -0
- package/dist/src/tiles/list/date-label.d.ts +1 -0
- package/dist/src/tiles/list/date-label.js +13 -0
- package/dist/src/tiles/list/date-label.js.map +1 -0
- package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -0
- package/dist/src/tiles/list/tile-list-compact-header.js +84 -0
- package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -0
- package/dist/src/tiles/list/tile-list-compact.d.ts +20 -0
- package/dist/src/tiles/list/tile-list-compact.js +180 -0
- package/dist/src/tiles/list/tile-list-compact.js.map +1 -0
- package/dist/src/tiles/list/tile-list.d.ts +48 -0
- package/dist/src/tiles/list/tile-list.js +455 -0
- package/dist/src/tiles/list/tile-list.js.map +1 -0
- package/dist/src/tiles/mediatype-icon.d.ts +9 -0
- package/dist/src/tiles/mediatype-icon.js +82 -0
- package/dist/src/tiles/mediatype-icon.js.map +1 -0
- package/dist/src/tiles/overlay/icon-overlay.d.ts +7 -0
- package/dist/src/tiles/overlay/icon-overlay.js +43 -0
- package/dist/src/tiles/overlay/icon-overlay.js.map +1 -0
- package/dist/src/tiles/overlay/text-overlay.d.ts +8 -0
- package/dist/src/tiles/overlay/text-overlay.js +57 -0
- package/dist/src/tiles/overlay/text-overlay.js.map +1 -0
- package/dist/src/tiles/tile-dispatcher.d.ts +36 -0
- package/dist/src/tiles/tile-dispatcher.js +215 -0
- package/dist/src/tiles/tile-dispatcher.js.map +1 -0
- package/dist/src/utils/format-count.d.ts +7 -0
- package/dist/src/utils/format-count.js +76 -0
- package/dist/src/utils/format-count.js.map +1 -0
- package/dist/src/utils/format-date.d.ts +2 -0
- package/dist/src/utils/format-date.js +24 -0
- package/dist/src/utils/format-date.js.map +1 -0
- package/dist/test/collection-browser.test.d.ts +1 -0
- package/dist/test/collection-browser.test.js +47 -0
- package/dist/test/collection-browser.test.js.map +1 -0
- package/dist/test/empty-placeholder.test.d.ts +1 -0
- package/dist/test/empty-placeholder.test.js +34 -0
- package/dist/test/empty-placeholder.test.js.map +1 -0
- package/dist/test/icon-overlay.test.d.ts +1 -0
- package/dist/test/icon-overlay.test.js +31 -0
- package/dist/test/icon-overlay.test.js.map +1 -0
- package/dist/test/item-image.test.d.ts +1 -0
- package/dist/test/item-image.test.js +73 -0
- package/dist/test/item-image.test.js.map +1 -0
- package/dist/test/mediatype-config.test.d.ts +1 -0
- package/dist/test/mediatype-config.test.js +17 -0
- package/dist/test/mediatype-config.test.js.map +1 -0
- package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -0
- package/dist/test/mocks/mock-collection-name-cache.js +14 -0
- package/dist/test/mocks/mock-collection-name-cache.js.map +1 -0
- package/dist/test/mocks/mock-search-responses.d.ts +3 -0
- package/dist/test/mocks/mock-search-responses.js +32 -0
- package/dist/test/mocks/mock-search-responses.js.map +1 -0
- package/dist/test/mocks/mock-search-service.d.ts +8 -0
- package/dist/test/mocks/mock-search-service.js +16 -0
- package/dist/test/mocks/mock-search-service.js.map +1 -0
- package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -0
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js +122 -0
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -0
- package/dist/test/text-overlay.test.d.ts +1 -0
- package/dist/test/text-overlay.test.js +48 -0
- package/dist/test/text-overlay.test.js.map +1 -0
- package/dist/test/tile-stats.test.d.ts +1 -0
- package/dist/test/tile-stats.test.js +42 -0
- package/dist/test/tile-stats.test.js.map +1 -0
- package/dist/test/tiles/grid/item-tile.test.d.ts +1 -0
- package/dist/test/tiles/grid/item-tile.test.js +96 -0
- package/dist/test/tiles/grid/item-tile.test.js.map +1 -0
- package/dist/test/utils/format-count.test.d.ts +1 -0
- package/dist/test/utils/format-count.test.js +24 -0
- package/dist/test/utils/format-count.test.js.map +1 -0
- package/dist/test/utils/format-date.test.d.ts +1 -0
- package/dist/test/utils/format-date.test.js +18 -0
- package/dist/test/utils/format-date.test.js.map +1 -0
- package/package.json +3 -2
- package/src/collection-browser.ts +2 -2
- package/src/collection-facets.ts +3 -3
- package/src/models.ts +9 -4
- package/src/restoration-state-handler.ts +1 -1
- package/src/sort-filter-bar/sort-filter-bar.ts +99 -13
- package/src/tiles/grid/account-tile.ts +1 -1
- package/src/tiles/grid/collection-tile.ts +1 -1
- package/src/tiles/grid/item-tile.ts +2 -2
- package/src/tiles/image-block.ts +1 -1
- package/src/tiles/item-image.ts +1 -1
- package/src/tiles/list/tile-list-compact-header.ts +2 -2
- package/src/tiles/list/tile-list-compact.ts +2 -2
- package/src/tiles/list/tile-list.ts +4 -4
- package/src/tiles/tile-dispatcher.ts +2 -2
- package/test/collection-browser.test.ts +1 -1
- package/test/empty-placeholder.test.ts +2 -1
- package/test/icon-overlay.test.ts +1 -1
- package/test/item-image.test.ts +2 -2
- package/test/mocks/mock-collection-name-cache.ts +1 -1
- package/test/mocks/mock-search-responses.ts +1 -1
- package/test/mocks/mock-search-service.ts +2 -2
- package/test/sort-filter-bar/sort-filter-bar.test.ts +187 -0
- package/test/text-overlay.test.ts +1 -1
- package/test/tile-stats.test.ts +1 -1
- package/test/tiles/grid/item-tile.test.ts +1 -1
- package/tsconfig.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-tile.test.js","sourceRoot":"","sources":["../../../../test/tiles/grid/item-tile.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-duplicates */\nimport { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport type { ItemTile } from '../../../src/tiles/grid/item-tile';\n\nimport '../../../src/tiles/grid/item-tile';\n\ndescribe('Item Tile', () => {\n it('should render initial component', async () => {\n const el = await fixture<ItemTile>(html`<item-tile></item-tile>`);\n\n const itemInfo = el.shadowRoot?.querySelector('.item-info');\n const itemTitle = el.shadowRoot?.querySelector('#title');\n const imageBlock = el.shadowRoot?.querySelector('image-block');\n\n expect(itemInfo).to.exist;\n expect(imageBlock).to.exist;\n expect(itemTitle).to.exist;\n });\n\n it('should render with created-by element', async () => {\n const el = await fixture<ItemTile>(html`<item-tile></item-tile>`);\n\n const itemInfo = el.shadowRoot?.querySelector('.item-info');\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(itemInfo).to.exist;\n expect(createdBy).to.exist;\n expect(dateSortedBy).to.not.exist;\n });\n\n it('should not render with created-by but date element', async () => {\n const el = await fixture<ItemTile>(html`<item-tile></item-tile>`);\n\n el.sortParam = {\n field: 'date',\n direction: 'desc',\n };\n await el.updateComplete;\n\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(createdBy).to.not.exist;\n expect(dateSortedBy).to.exist;\n });\n\n it('should not render with created-by but reviewdate element', async () => {\n const el = await fixture<ItemTile>(html`<item-tile></item-tile>`);\n\n el.sortParam = {\n field: 'reviewdate',\n direction: 'desc',\n };\n await el.updateComplete;\n\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(createdBy).to.not.exist;\n expect(dateSortedBy).to.exist;\n });\n\n it('should not render with created-by but publicdate element', async () => {\n const el = await fixture<ItemTile>(html`<item-tile></item-tile>`);\n\n el.sortParam = {\n field: 'publicdate',\n direction: 'desc',\n };\n await el.updateComplete;\n\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(createdBy).to.not.exist;\n expect(dateSortedBy).to.exist;\n });\n\n it('should render with created-by when sorting not related to date', async () => {\n const el = await fixture<ItemTile>(html`<item-tile></item-tile>`);\n\n el.sortParam = {\n field: 'addeddate',\n direction: 'asc',\n };\n await el.updateComplete;\n\n const itemInfo = el.shadowRoot?.querySelector('.item-info');\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(itemInfo).to.exist;\n expect(createdBy).to.not.exist;\n expect(dateSortedBy).to.exist;\n });\n\n it('should render with created-by when sort field id not like date', async () => {\n const el = await fixture<ItemTile>(html`<item-tile></item-tile>`);\n\n el.sortParam = {\n field: 'week',\n direction: 'asc',\n };\n await el.updateComplete;\n\n const itemInfo = el.shadowRoot?.querySelector('.item-info');\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(itemInfo).to.exist;\n expect(dateSortedBy).to.not.exist; // it should be exist because this is not related to date sort\n expect(createdBy).to.exist;\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { expect } from '@open-wc/testing';
|
|
2
|
+
import { formatCount } from '../../src/utils/format-count';
|
|
3
|
+
const testCount = 805342;
|
|
4
|
+
describe('formatCount', () => {
|
|
5
|
+
it('returns blank when undefined number', () => {
|
|
6
|
+
expect(formatCount(undefined)).to.equal('');
|
|
7
|
+
});
|
|
8
|
+
it('returns blank when negative number', () => {
|
|
9
|
+
expect(formatCount(testCount * -1)).to.equal('');
|
|
10
|
+
});
|
|
11
|
+
it('returns long number when no NumberFormat', () => {
|
|
12
|
+
expect(formatCount(testCount)).to.equal('805,342');
|
|
13
|
+
});
|
|
14
|
+
it('returns short number when short NumberFormat', () => {
|
|
15
|
+
expect(formatCount(testCount, 'short')).to.equal('805K');
|
|
16
|
+
});
|
|
17
|
+
it('returns decimal when value of significant digits < 10', () => {
|
|
18
|
+
expect(formatCount(testCount * 10, 'short', 'long')).to.equal('8.1 million');
|
|
19
|
+
});
|
|
20
|
+
it('returns locale formatted number', () => {
|
|
21
|
+
expect(formatCount(testCount, 'long', 'long', 'de-DE')).to.equal('805.342');
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=format-count.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-count.test.js","sourceRoot":"","sources":["../../../test/utils/format-count.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D,MAAM,SAAS,GAAG,MAAM,CAAC;AAEzB,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,WAAW,CAAC,SAAS,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAC3D,aAAa,CACd,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { expect } from '@open-wc/testing';\nimport { formatCount } from '../../src/utils/format-count';\n\nconst testCount = 805342;\n\ndescribe('formatCount', () => {\n it('returns blank when undefined number', () => {\n expect(formatCount(undefined)).to.equal('');\n });\n\n it('returns blank when negative number', () => {\n expect(formatCount(testCount * -1)).to.equal('');\n });\n\n it('returns long number when no NumberFormat', () => {\n expect(formatCount(testCount)).to.equal('805,342');\n });\n\n it('returns short number when short NumberFormat', () => {\n expect(formatCount(testCount, 'short')).to.equal('805K');\n });\n\n it('returns decimal when value of significant digits < 10', () => {\n expect(formatCount(testCount * 10, 'short', 'long')).to.equal(\n '8.1 million'\n );\n });\n\n it('returns locale formatted number', () => {\n expect(formatCount(testCount, 'long', 'long', 'de-DE')).to.equal('805.342');\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { expect } from '@open-wc/testing';
|
|
2
|
+
import { formatDate } from '../../src/utils/format-date';
|
|
3
|
+
const testDate = new Date(Date.UTC(2020, 11, 9));
|
|
4
|
+
describe('formatDate', () => {
|
|
5
|
+
it('returns blank when undefined date', () => {
|
|
6
|
+
expect(formatDate(undefined)).to.equal('');
|
|
7
|
+
});
|
|
8
|
+
it('returns short date when no DateFormat', () => {
|
|
9
|
+
expect(formatDate(testDate)).to.equal('Dec 2020');
|
|
10
|
+
});
|
|
11
|
+
it('returns long date when long DateFormat', () => {
|
|
12
|
+
expect(formatDate(testDate, 'long')).to.equal('Dec 09, 2020');
|
|
13
|
+
});
|
|
14
|
+
it('returns locale formatted date', () => {
|
|
15
|
+
expect(formatDate(testDate, 'long', 'de-DE')).to.equal('09. Dez. 2020');
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=format-date.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-date.test.js","sourceRoot":"","sources":["../../../test/utils/format-date.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAEjD,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { expect } from '@open-wc/testing';\nimport { formatDate } from '../../src/utils/format-date';\n\nconst testDate = new Date(Date.UTC(2020, 11, 9));\n\ndescribe('formatDate', () => {\n it('returns blank when undefined date', () => {\n expect(formatDate(undefined)).to.equal('');\n });\n\n it('returns short date when no DateFormat', () => {\n expect(formatDate(testDate)).to.equal('Dec 2020');\n });\n\n it('returns long date when long DateFormat', () => {\n expect(formatDate(testDate, 'long')).to.equal('Dec 09, 2020');\n });\n\n it('returns locale formatted date', () => {\n expect(formatDate(testDate, 'long', 'de-DE')).to.equal('09. Dez. 2020');\n });\n});\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": "0.2.
|
|
6
|
+
"version": "0.2.14-alpha.0",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"module": "dist/index.js",
|
|
9
9
|
"scripts": {
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
"test:watch": "tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wtr --watch\"",
|
|
18
18
|
"deploy": "yarn run deploy:run -e $(git branch --show-current)",
|
|
19
19
|
"deploy:run": "yarn run prepare:ghpages && touch ghpages/.nojekyll && yarn run deploy:gh",
|
|
20
|
-
"deploy:gh": "gh-pages -t -d ghpages -m \"Build for $(git log --pretty=format:\"%h %an %ai %s\" -n1) [skip ci]\""
|
|
20
|
+
"deploy:gh": "gh-pages -t -d ghpages -m \"Build for $(git log --pretty=format:\"%h %an %ai %s\" -n1) [skip ci]\"",
|
|
21
|
+
"typecheck": "yarn tsc --noEmit"
|
|
21
22
|
},
|
|
22
23
|
"types": "dist/index.d.ts",
|
|
23
24
|
"dependencies": {
|
|
@@ -21,7 +21,7 @@ import type {
|
|
|
21
21
|
SortDirection,
|
|
22
22
|
SortParam,
|
|
23
23
|
} from '@internetarchive/search-service';
|
|
24
|
-
import {
|
|
24
|
+
import type {
|
|
25
25
|
SharedResizeObserverInterface,
|
|
26
26
|
SharedResizeObserverResizeHandlerInterface,
|
|
27
27
|
} from '@internetarchive/shared-resize-observer';
|
|
@@ -49,7 +49,7 @@ import {
|
|
|
49
49
|
} from './restoration-state-handler';
|
|
50
50
|
import chevronIcon from './assets/img/icons/chevron';
|
|
51
51
|
import { LanguageCodeHandler } from './language-code-handler/language-code-handler';
|
|
52
|
-
import { PlaceholderType } from './empty-placeholder';
|
|
52
|
+
import type { PlaceholderType } from './empty-placeholder';
|
|
53
53
|
import './empty-placeholder';
|
|
54
54
|
|
|
55
55
|
@customElement('collection-browser')
|
package/src/collection-facets.ts
CHANGED
|
@@ -9,11 +9,11 @@ import {
|
|
|
9
9
|
} from 'lit';
|
|
10
10
|
import { customElement, property, state } from 'lit/decorators.js';
|
|
11
11
|
import { repeat } from 'lit/directives/repeat.js';
|
|
12
|
-
import { Aggregation, Bucket } from '@internetarchive/search-service';
|
|
12
|
+
import type { Aggregation, Bucket } from '@internetarchive/search-service';
|
|
13
13
|
import '@internetarchive/histogram-date-range';
|
|
14
14
|
import '@internetarchive/feature-feedback';
|
|
15
15
|
import '@internetarchive/collection-name-cache';
|
|
16
|
-
import { CollectionNameCacheInterface } from '@internetarchive/collection-name-cache';
|
|
16
|
+
import type { CollectionNameCacheInterface } from '@internetarchive/collection-name-cache';
|
|
17
17
|
import eyeIcon from './assets/img/icons/eye';
|
|
18
18
|
import eyeClosedIcon from './assets/img/icons/eye-closed';
|
|
19
19
|
import chevronIcon from './assets/img/icons/chevron';
|
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
FacetBucket,
|
|
25
25
|
defaultSelectedFacets,
|
|
26
26
|
} from './models';
|
|
27
|
-
import { LanguageCodeHandlerInterface } from './language-code-handler/language-code-handler';
|
|
27
|
+
import type { LanguageCodeHandlerInterface } from './language-code-handler/language-code-handler';
|
|
28
28
|
|
|
29
29
|
const facetDisplayOrder: FacetOption[] = [
|
|
30
30
|
'mediatype',
|
package/src/models.ts
CHANGED
|
@@ -47,7 +47,8 @@ export type CollectionBrowserContext = 'collection' | 'search';
|
|
|
47
47
|
*/
|
|
48
48
|
export enum SortField {
|
|
49
49
|
'relevance' = 'relevance',
|
|
50
|
-
'
|
|
50
|
+
'alltimeview' = 'alltimeview',
|
|
51
|
+
'weeklyview' = 'weeklyview',
|
|
51
52
|
'title' = 'title',
|
|
52
53
|
'datearchived' = 'datearchived',
|
|
53
54
|
'date' = 'date',
|
|
@@ -60,6 +61,7 @@ export enum SortField {
|
|
|
60
61
|
* The metadata fields we sort by that map to the SortFields above
|
|
61
62
|
*/
|
|
62
63
|
export type MetadataSortField =
|
|
64
|
+
| 'downloads'
|
|
63
65
|
| 'week'
|
|
64
66
|
| 'titleSorter'
|
|
65
67
|
| 'date'
|
|
@@ -72,7 +74,8 @@ export const SortFieldDisplayName: {
|
|
|
72
74
|
[key in SortField]: string;
|
|
73
75
|
} = {
|
|
74
76
|
relevance: 'Relevance',
|
|
75
|
-
|
|
77
|
+
alltimeview: 'All-time Views',
|
|
78
|
+
weeklyview: 'Weekly Views',
|
|
76
79
|
title: 'Title',
|
|
77
80
|
datearchived: 'Date Archived',
|
|
78
81
|
date: 'Date Published',
|
|
@@ -88,7 +91,8 @@ export const SortFieldToMetadataField: {
|
|
|
88
91
|
[key in SortField]: MetadataSortField | null;
|
|
89
92
|
} = {
|
|
90
93
|
relevance: null,
|
|
91
|
-
|
|
94
|
+
alltimeview: 'downloads',
|
|
95
|
+
weeklyview: 'week',
|
|
92
96
|
title: 'titleSorter',
|
|
93
97
|
datearchived: 'publicdate',
|
|
94
98
|
date: 'date',
|
|
@@ -103,13 +107,14 @@ export const SortFieldToMetadataField: {
|
|
|
103
107
|
export const MetadataFieldToSortField: {
|
|
104
108
|
[key in MetadataSortField]: SortField;
|
|
105
109
|
} = {
|
|
110
|
+
week: SortField.weeklyview,
|
|
111
|
+
downloads: SortField.alltimeview,
|
|
106
112
|
titleSorter: SortField.title,
|
|
107
113
|
date: SortField.date,
|
|
108
114
|
publicdate: SortField.datearchived,
|
|
109
115
|
reviewdate: SortField.datereviewed,
|
|
110
116
|
addeddate: SortField.dateadded,
|
|
111
117
|
creatorSorter: SortField.creator,
|
|
112
|
-
week: SortField.views,
|
|
113
118
|
};
|
|
114
119
|
|
|
115
120
|
export type FacetOption =
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
TemplateResult,
|
|
8
8
|
} from 'lit';
|
|
9
9
|
import { customElement, property, query, state } from 'lit/decorators.js';
|
|
10
|
-
import {
|
|
10
|
+
import type {
|
|
11
11
|
SharedResizeObserverInterface,
|
|
12
12
|
SharedResizeObserverResizeHandlerInterface,
|
|
13
13
|
} from '@internetarchive/shared-resize-observer';
|
|
@@ -48,6 +48,8 @@ export class SortFilterBar
|
|
|
48
48
|
|
|
49
49
|
@state() dateSortSelectorVisible = false;
|
|
50
50
|
|
|
51
|
+
@state() viewSortSelectorVisible = false;
|
|
52
|
+
|
|
51
53
|
@state() desktopSelectorBarWidth = 0;
|
|
52
54
|
|
|
53
55
|
@state() selectorBarContainerWidth = 0;
|
|
@@ -76,6 +78,9 @@ export class SortFilterBar
|
|
|
76
78
|
<div id="display-style-selector">${this.displayOptionTemplate}</div>
|
|
77
79
|
</div>
|
|
78
80
|
|
|
81
|
+
${this.viewSortSelectorVisible && !this.mobileSelectorVisible
|
|
82
|
+
? this.viewSortSelector
|
|
83
|
+
: nothing}
|
|
79
84
|
${this.dateSortSelectorVisible && !this.mobileSelectorVisible
|
|
80
85
|
? this.dateSortSelector
|
|
81
86
|
: nothing}
|
|
@@ -103,7 +108,10 @@ export class SortFilterBar
|
|
|
103
108
|
this.alphaSelectorVisible = 'creator';
|
|
104
109
|
}
|
|
105
110
|
|
|
106
|
-
if (
|
|
111
|
+
if (
|
|
112
|
+
changed.has('dateSortSelectorVisible') ||
|
|
113
|
+
changed.has('viewSortSelectorVisible')
|
|
114
|
+
) {
|
|
107
115
|
this.setupEscapeListeners();
|
|
108
116
|
}
|
|
109
117
|
|
|
@@ -117,21 +125,22 @@ export class SortFilterBar
|
|
|
117
125
|
}
|
|
118
126
|
|
|
119
127
|
private setupEscapeListeners() {
|
|
120
|
-
if (this.dateSortSelectorVisible) {
|
|
128
|
+
if (this.dateSortSelectorVisible || this.viewSortSelectorVisible) {
|
|
121
129
|
document.addEventListener(
|
|
122
130
|
'keydown',
|
|
123
|
-
this.
|
|
131
|
+
this.boundSortBarSelectorEscapeListener
|
|
124
132
|
);
|
|
125
133
|
} else {
|
|
126
134
|
document.removeEventListener(
|
|
127
135
|
'keydown',
|
|
128
|
-
this.
|
|
136
|
+
this.boundSortBarSelectorEscapeListener
|
|
129
137
|
);
|
|
130
138
|
}
|
|
131
139
|
}
|
|
132
140
|
|
|
133
|
-
private
|
|
141
|
+
private boundSortBarSelectorEscapeListener = (e: KeyboardEvent) => {
|
|
134
142
|
if (e.key === 'Escape') {
|
|
143
|
+
this.viewSortSelectorVisible = false;
|
|
135
144
|
this.dateSortSelectorVisible = false;
|
|
136
145
|
}
|
|
137
146
|
};
|
|
@@ -235,13 +244,30 @@ export class SortFilterBar
|
|
|
235
244
|
? this.getSortDisplayOption(SortField.relevance)
|
|
236
245
|
: nothing}
|
|
237
246
|
</li>
|
|
238
|
-
<li
|
|
247
|
+
<li>
|
|
248
|
+
${this.getSortDisplayOption(SortField.weeklyview, {
|
|
249
|
+
clickEvent: () => {
|
|
250
|
+
if (!this.viewOptionSelected)
|
|
251
|
+
this.setSelectedSort(SortField.weeklyview);
|
|
252
|
+
this.viewSortSelectorVisible = !this.viewSortSelectorVisible;
|
|
253
|
+
this.dateSortSelectorVisible = false;
|
|
254
|
+
this.alphaSelectorVisible = null;
|
|
255
|
+
this.selectedTitleFilter = null;
|
|
256
|
+
this.selectedCreatorFilter = null;
|
|
257
|
+
this.emitTitleLetterChangedEvent();
|
|
258
|
+
this.emitCreatorLetterChangedEvent();
|
|
259
|
+
},
|
|
260
|
+
displayName: html`${this.viewSortField}`,
|
|
261
|
+
isSelected: () => this.viewOptionSelected,
|
|
262
|
+
})}
|
|
263
|
+
</li>
|
|
239
264
|
<li>
|
|
240
265
|
${this.getSortDisplayOption(SortField.title, {
|
|
241
266
|
clickEvent: () => {
|
|
242
267
|
this.alphaSelectorVisible = 'title';
|
|
243
268
|
this.selectedCreatorFilter = null;
|
|
244
269
|
this.dateSortSelectorVisible = false;
|
|
270
|
+
this.viewSortSelectorVisible = false;
|
|
245
271
|
this.setSelectedSort(SortField.title);
|
|
246
272
|
this.emitCreatorLetterChangedEvent();
|
|
247
273
|
},
|
|
@@ -253,6 +279,7 @@ export class SortFilterBar
|
|
|
253
279
|
if (!this.dateOptionSelected)
|
|
254
280
|
this.setSelectedSort(SortField.date);
|
|
255
281
|
this.dateSortSelectorVisible = !this.dateSortSelectorVisible;
|
|
282
|
+
this.viewSortSelectorVisible = false;
|
|
256
283
|
this.alphaSelectorVisible = null;
|
|
257
284
|
this.selectedTitleFilter = null;
|
|
258
285
|
this.selectedCreatorFilter = null;
|
|
@@ -366,7 +393,7 @@ export class SortFilterBar
|
|
|
366
393
|
</li>
|
|
367
394
|
<li>
|
|
368
395
|
<button
|
|
369
|
-
id="
|
|
396
|
+
id="list-detail-button"
|
|
370
397
|
@click=${() => {
|
|
371
398
|
this.displayMode = 'list-detail';
|
|
372
399
|
}}
|
|
@@ -378,7 +405,7 @@ export class SortFilterBar
|
|
|
378
405
|
</li>
|
|
379
406
|
<li>
|
|
380
407
|
<button
|
|
381
|
-
id="list-button"
|
|
408
|
+
id="list-compact-button"
|
|
382
409
|
@click=${() => {
|
|
383
410
|
this.displayMode = 'list-compact';
|
|
384
411
|
}}
|
|
@@ -414,6 +441,26 @@ export class SortFilterBar
|
|
|
414
441
|
`;
|
|
415
442
|
}
|
|
416
443
|
|
|
444
|
+
private get viewSortSelector() {
|
|
445
|
+
return html`
|
|
446
|
+
<div
|
|
447
|
+
id="view-sort-selector-backdrop"
|
|
448
|
+
@keyup=${() => {
|
|
449
|
+
this.viewSortSelectorVisible = false;
|
|
450
|
+
}}
|
|
451
|
+
@click=${() => {
|
|
452
|
+
this.viewSortSelectorVisible = false;
|
|
453
|
+
}}
|
|
454
|
+
></div>
|
|
455
|
+
<div id="view-sort-selector">
|
|
456
|
+
<ul>
|
|
457
|
+
<li>${this.getDateSortButton(SortField.alltimeview)}</li>
|
|
458
|
+
<li>${this.getDateSortButton(SortField.weeklyview)}</li>
|
|
459
|
+
</ul>
|
|
460
|
+
</div>
|
|
461
|
+
`;
|
|
462
|
+
}
|
|
463
|
+
|
|
417
464
|
private getDateSortButton(sortField: SortField) {
|
|
418
465
|
return html`
|
|
419
466
|
<button
|
|
@@ -429,6 +476,7 @@ export class SortFilterBar
|
|
|
429
476
|
|
|
430
477
|
private selectDateSort(sortField: SortField) {
|
|
431
478
|
this.dateSortSelectorVisible = false;
|
|
479
|
+
this.viewSortSelectorVisible = false;
|
|
432
480
|
this.setSelectedSort(sortField);
|
|
433
481
|
}
|
|
434
482
|
|
|
@@ -462,6 +510,24 @@ export class SortFilterBar
|
|
|
462
510
|
return dateSortFields.includes(this.selectedSort);
|
|
463
511
|
}
|
|
464
512
|
|
|
513
|
+
/**
|
|
514
|
+
* There are two view sort options.
|
|
515
|
+
*
|
|
516
|
+
* This checks to see if the current sort is one of them.
|
|
517
|
+
*
|
|
518
|
+
* @readonly
|
|
519
|
+
* @private
|
|
520
|
+
* @type {boolean}
|
|
521
|
+
* @memberof SortFilterBar
|
|
522
|
+
*/
|
|
523
|
+
private get viewOptionSelected(): boolean {
|
|
524
|
+
const viewSortFields: SortField[] = [
|
|
525
|
+
SortField.alltimeview,
|
|
526
|
+
SortField.weeklyview,
|
|
527
|
+
];
|
|
528
|
+
return viewSortFields.includes(this.selectedSort);
|
|
529
|
+
}
|
|
530
|
+
|
|
465
531
|
/**
|
|
466
532
|
* The display name of the current date field
|
|
467
533
|
*
|
|
@@ -478,6 +544,22 @@ export class SortFilterBar
|
|
|
478
544
|
return name;
|
|
479
545
|
}
|
|
480
546
|
|
|
547
|
+
/**
|
|
548
|
+
* The display name of the current view field
|
|
549
|
+
*
|
|
550
|
+
* @readonly
|
|
551
|
+
* @private
|
|
552
|
+
* @type {string}
|
|
553
|
+
* @memberof SortFilterBar
|
|
554
|
+
*/
|
|
555
|
+
private get viewSortField(): string {
|
|
556
|
+
const defaultSort = SortFieldDisplayName[SortField.weeklyview];
|
|
557
|
+
const name = this.viewOptionSelected
|
|
558
|
+
? SortFieldDisplayName[this.selectedSort] ?? defaultSort
|
|
559
|
+
: defaultSort;
|
|
560
|
+
return name;
|
|
561
|
+
}
|
|
562
|
+
|
|
481
563
|
private get titleSelectorBar() {
|
|
482
564
|
return html` <alpha-bar
|
|
483
565
|
.selectedLetter=${this.selectedTitleFilter}
|
|
@@ -607,7 +689,8 @@ export class SortFilterBar
|
|
|
607
689
|
cursor: default;
|
|
608
690
|
}
|
|
609
691
|
|
|
610
|
-
#date-sort-selector
|
|
692
|
+
#date-sort-selector,
|
|
693
|
+
#view-sort-selector {
|
|
611
694
|
position: absolute;
|
|
612
695
|
left: 150px;
|
|
613
696
|
top: 45px;
|
|
@@ -619,7 +702,8 @@ export class SortFilterBar
|
|
|
619
702
|
border: 1px solid #404142;
|
|
620
703
|
}
|
|
621
704
|
|
|
622
|
-
#date-sort-selector button
|
|
705
|
+
#date-sort-selector button,
|
|
706
|
+
#view-sort-selector button {
|
|
623
707
|
background: none;
|
|
624
708
|
border-radius: 15px;
|
|
625
709
|
color: #404142;
|
|
@@ -632,7 +716,8 @@ export class SortFilterBar
|
|
|
632
716
|
padding: 0.5rem 1.2rem;
|
|
633
717
|
}
|
|
634
718
|
|
|
635
|
-
#date-sort-selector button.selected
|
|
719
|
+
#date-sort-selector button.selected,
|
|
720
|
+
#view-sort-selector button.selected {
|
|
636
721
|
background-color: #404142;
|
|
637
722
|
color: white;
|
|
638
723
|
}
|
|
@@ -679,7 +764,8 @@ export class SortFilterBar
|
|
|
679
764
|
display: none;
|
|
680
765
|
}
|
|
681
766
|
|
|
682
|
-
#date-sort-selector-backdrop
|
|
767
|
+
#date-sort-selector-backdrop,
|
|
768
|
+
#view-sort-selector-backdrop {
|
|
683
769
|
position: fixed;
|
|
684
770
|
top: 0;
|
|
685
771
|
left: 0;
|
|
@@ -2,7 +2,7 @@ import { msg } from '@lit/localize';
|
|
|
2
2
|
import { css, CSSResultGroup, html, LitElement } from 'lit';
|
|
3
3
|
import { customElement, property } from 'lit/decorators.js';
|
|
4
4
|
import { collectionIcon } from '../../assets/img/icons/mediatype/collection';
|
|
5
|
-
import { TileModel } from '../../models';
|
|
5
|
+
import type { TileModel } from '../../models';
|
|
6
6
|
|
|
7
7
|
@customElement('collection-tile')
|
|
8
8
|
export class CollectionTile extends LitElement {
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import { css, CSSResultGroup, html, LitElement, nothing } from 'lit';
|
|
3
3
|
import { customElement, property } from 'lit/decorators.js';
|
|
4
4
|
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
5
|
-
import { SortParam } from '@internetarchive/search-service';
|
|
5
|
+
import type { SortParam } from '@internetarchive/search-service';
|
|
6
6
|
|
|
7
7
|
import { formatDate } from '../../utils/format-date';
|
|
8
|
-
import { TileModel } from '../../models';
|
|
8
|
+
import type { TileModel } from '../../models';
|
|
9
9
|
|
|
10
10
|
import '../image-block';
|
|
11
11
|
import '../item-image';
|
package/src/tiles/image-block.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { css, CSSResultGroup, html, LitElement, nothing } from 'lit';
|
|
|
2
2
|
import { customElement, property } from 'lit/decorators.js';
|
|
3
3
|
import { ClassInfo, classMap } from 'lit/directives/class-map.js';
|
|
4
4
|
|
|
5
|
-
import { TileModel } from '../models';
|
|
5
|
+
import type { TileModel } from '../models';
|
|
6
6
|
|
|
7
7
|
import './overlay/icon-overlay';
|
|
8
8
|
import './overlay/text-overlay';
|
package/src/tiles/item-image.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { css, CSSResultGroup, html, LitElement } from 'lit';
|
|
|
2
2
|
import { customElement, property, query, state } from 'lit/decorators.js';
|
|
3
3
|
import { ClassInfo, classMap } from 'lit/directives/class-map.js';
|
|
4
4
|
|
|
5
|
-
import { TileModel } from '../models';
|
|
5
|
+
import type { TileModel } from '../models';
|
|
6
6
|
|
|
7
7
|
import {
|
|
8
8
|
baseItemImageStyles,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { css, html, LitElement } from 'lit';
|
|
2
2
|
import { customElement, property } from 'lit/decorators.js';
|
|
3
|
-
import { SortParam } from '@internetarchive/search-service';
|
|
3
|
+
import type { SortParam } from '@internetarchive/search-service';
|
|
4
4
|
import { dateLabel } from './date-label';
|
|
5
|
-
import { TileModel } from '../../models';
|
|
5
|
+
import type { TileModel } from '../../models';
|
|
6
6
|
|
|
7
7
|
@customElement('tile-list-compact-header')
|
|
8
8
|
export class TileListCompactHeader extends LitElement {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { css, html, LitElement } from 'lit';
|
|
2
2
|
import { customElement, property } from 'lit/decorators.js';
|
|
3
|
-
import { SortParam } from '@internetarchive/search-service';
|
|
4
3
|
import DOMPurify from 'dompurify';
|
|
4
|
+
import type { SortParam } from '@internetarchive/search-service';
|
|
5
|
+
import type { TileModel } from '../../models';
|
|
5
6
|
|
|
6
|
-
import { TileModel } from '../../models';
|
|
7
7
|
import { formatCount, NumberFormat } from '../../utils/format-count';
|
|
8
8
|
import { formatDate, DateFormat } from '../../utils/format-date';
|
|
9
9
|
import { accountLabel } from './account-label';
|
|
@@ -10,14 +10,14 @@ import { ifDefined } from 'lit/directives/if-defined.js';
|
|
|
10
10
|
import { join } from 'lit/directives/join.js';
|
|
11
11
|
import { map } from 'lit/directives/map.js';
|
|
12
12
|
import { customElement, property, state } from 'lit/decorators.js';
|
|
13
|
-
|
|
14
|
-
import { CollectionNameCacheInterface } from '@internetarchive/collection-name-cache';
|
|
15
|
-
import { SortParam } from '@internetarchive/search-service';
|
|
16
13
|
import DOMPurify from 'dompurify';
|
|
17
14
|
|
|
15
|
+
import type { CollectionNameCacheInterface } from '@internetarchive/collection-name-cache';
|
|
16
|
+
import type { SortParam } from '@internetarchive/search-service';
|
|
17
|
+
import type { TileModel } from '../../models';
|
|
18
|
+
|
|
18
19
|
import { dateLabel } from './date-label';
|
|
19
20
|
import { accountLabel } from './account-label';
|
|
20
|
-
import { TileModel } from '../../models';
|
|
21
21
|
import { formatCount, NumberFormat } from '../../utils/format-count';
|
|
22
22
|
import { formatDate, DateFormat } from '../../utils/format-date';
|
|
23
23
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { css, html, LitElement, nothing, PropertyValues } from 'lit';
|
|
2
2
|
import { customElement, property, query } from 'lit/decorators.js';
|
|
3
3
|
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
4
|
-
import {
|
|
4
|
+
import type {
|
|
5
5
|
SharedResizeObserverInterface,
|
|
6
6
|
SharedResizeObserverResizeHandlerInterface,
|
|
7
7
|
} from '@internetarchive/shared-resize-observer';
|
|
8
8
|
import type { CollectionNameCacheInterface } from '@internetarchive/collection-name-cache';
|
|
9
|
-
import { SortParam } from '@internetarchive/search-service';
|
|
9
|
+
import type { SortParam } from '@internetarchive/search-service';
|
|
10
10
|
import type { TileDisplayMode, TileModel } from '../models';
|
|
11
11
|
import './grid/collection-tile';
|
|
12
12
|
import './grid/item-tile';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable import/no-duplicates */
|
|
2
2
|
import { expect, fixture } from '@open-wc/testing';
|
|
3
3
|
import { html } from 'lit';
|
|
4
|
-
import { CollectionBrowser } from '../src/collection-browser';
|
|
4
|
+
import type { CollectionBrowser } from '../src/collection-browser';
|
|
5
5
|
import '../src/collection-browser';
|
|
6
6
|
import { MockSearchService } from './mocks/mock-search-service';
|
|
7
7
|
import { MockCollectionNameCache } from './mocks/mock-collection-name-cache';
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/* eslint-disable import/no-duplicates */
|
|
2
2
|
import { expect, fixture } from '@open-wc/testing';
|
|
3
3
|
import { html } from 'lit';
|
|
4
|
-
import { EmptyPlaceholder } from '../src/empty-placeholder';
|
|
5
4
|
import '../src/empty-placeholder';
|
|
6
5
|
|
|
6
|
+
import type { EmptyPlaceholder } from '../src/empty-placeholder';
|
|
7
|
+
|
|
7
8
|
describe('Empty Placeholder', () => {
|
|
8
9
|
it('should render with empty-query placeholder', async () => {
|
|
9
10
|
const el = await fixture<EmptyPlaceholder>(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable import/no-duplicates */
|
|
2
2
|
import { expect, fixture } from '@open-wc/testing';
|
|
3
3
|
import { html } from 'lit';
|
|
4
|
-
import { IconOverlay } from '../src/tiles/overlay/icon-overlay';
|
|
4
|
+
import type { IconOverlay } from '../src/tiles/overlay/icon-overlay';
|
|
5
5
|
|
|
6
6
|
import '../src/tiles/overlay/icon-overlay';
|
|
7
7
|
|
package/test/item-image.test.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { expect, fixture } from '@open-wc/testing';
|
|
3
3
|
import { html } from 'lit';
|
|
4
4
|
|
|
5
|
-
import { TileModel } from '../src/models';
|
|
6
|
-
import { ItemImage } from '../src/tiles/item-image';
|
|
5
|
+
import type { TileModel } from '../src/models';
|
|
6
|
+
import type { ItemImage } from '../src/tiles/item-image';
|
|
7
7
|
|
|
8
8
|
import '../src/tiles/item-image';
|
|
9
9
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CollectionNameCacheInterface } from '@internetarchive/collection-name-cache';
|
|
1
|
+
import type { CollectionNameCacheInterface } from '@internetarchive/collection-name-cache';
|
|
2
2
|
|
|
3
3
|
export class MockCollectionNameCache implements CollectionNameCacheInterface {
|
|
4
4
|
collectionNamesRequested: string[] = [];
|