@internetarchive/collection-browser 0.2.11 → 0.2.12
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/package.json +2 -2
- package/renovate.json +6 -0
- package/src/assets/img/icons/login-required.ts +30 -0
- package/src/collection-browser.ts +15 -10
- package/src/styles/item-image-styles.ts +4 -3
- package/src/tiles/grid/item-tile.ts +22 -19
- package/src/tiles/image-block.ts +124 -0
- package/src/tiles/item-image.ts +3 -1
- package/src/tiles/list/tile-list-compact.ts +19 -56
- package/src/tiles/list/tile-list.ts +18 -54
- package/src/tiles/overlay/icon-overlay.ts +34 -0
- package/src/tiles/overlay/text-overlay.ts +48 -0
- package/src/tiles/tile-dispatcher.ts +13 -4
- package/test/icon-overlay.test.ts +41 -0
- package/test/item-image.test.ts +82 -0
- package/test/text-overlay.test.ts +57 -0
- package/test/tiles/grid/item-tile.test.ts +2 -2
- package/dist/index.d.ts +0 -9
- package/dist/index.js.map +0 -1
- package/dist/src/app-root.d.ts +0 -32
- package/dist/src/app-root.js +0 -285
- package/dist/src/app-root.js.map +0 -1
- package/dist/src/assets/img/icons/chevron.d.ts +0 -2
- package/dist/src/assets/img/icons/chevron.js +0 -4
- package/dist/src/assets/img/icons/chevron.js.map +0 -1
- package/dist/src/assets/img/icons/empty-query.d.ts +0 -2
- package/dist/src/assets/img/icons/empty-query.js +0 -5
- package/dist/src/assets/img/icons/empty-query.js.map +0 -1
- package/dist/src/assets/img/icons/eye-closed.d.ts +0 -2
- package/dist/src/assets/img/icons/eye-closed.js +0 -5
- package/dist/src/assets/img/icons/eye-closed.js.map +0 -1
- package/dist/src/assets/img/icons/eye.d.ts +0 -2
- package/dist/src/assets/img/icons/eye.js +0 -5
- package/dist/src/assets/img/icons/eye.js.map +0 -1
- package/dist/src/assets/img/icons/favorite-filled.d.ts +0 -1
- package/dist/src/assets/img/icons/favorite-filled.js +0 -11
- package/dist/src/assets/img/icons/favorite-filled.js.map +0 -1
- package/dist/src/assets/img/icons/mediatype/account.d.ts +0 -1
- package/dist/src/assets/img/icons/mediatype/account.js +0 -14
- package/dist/src/assets/img/icons/mediatype/account.js.map +0 -1
- package/dist/src/assets/img/icons/mediatype/audio.d.ts +0 -1
- package/dist/src/assets/img/icons/mediatype/audio.js +0 -14
- package/dist/src/assets/img/icons/mediatype/audio.js.map +0 -1
- package/dist/src/assets/img/icons/mediatype/collection.d.ts +0 -1
- package/dist/src/assets/img/icons/mediatype/collection.js +0 -12
- package/dist/src/assets/img/icons/mediatype/collection.js.map +0 -1
- package/dist/src/assets/img/icons/mediatype/data.d.ts +0 -1
- package/dist/src/assets/img/icons/mediatype/data.js +0 -15
- package/dist/src/assets/img/icons/mediatype/data.js.map +0 -1
- package/dist/src/assets/img/icons/mediatype/etree.d.ts +0 -1
- package/dist/src/assets/img/icons/mediatype/etree.js +0 -14
- package/dist/src/assets/img/icons/mediatype/etree.js.map +0 -1
- package/dist/src/assets/img/icons/mediatype/film.d.ts +0 -1
- package/dist/src/assets/img/icons/mediatype/film.js +0 -14
- package/dist/src/assets/img/icons/mediatype/film.js.map +0 -1
- package/dist/src/assets/img/icons/mediatype/images.d.ts +0 -1
- package/dist/src/assets/img/icons/mediatype/images.js +0 -13
- package/dist/src/assets/img/icons/mediatype/images.js.map +0 -1
- package/dist/src/assets/img/icons/mediatype/radio.d.ts +0 -1
- package/dist/src/assets/img/icons/mediatype/radio.js +0 -15
- package/dist/src/assets/img/icons/mediatype/radio.js.map +0 -1
- package/dist/src/assets/img/icons/mediatype/software.d.ts +0 -1
- package/dist/src/assets/img/icons/mediatype/software.js +0 -13
- package/dist/src/assets/img/icons/mediatype/software.js.map +0 -1
- package/dist/src/assets/img/icons/mediatype/texts.d.ts +0 -1
- package/dist/src/assets/img/icons/mediatype/texts.js +0 -13
- package/dist/src/assets/img/icons/mediatype/texts.js.map +0 -1
- package/dist/src/assets/img/icons/mediatype/tv.d.ts +0 -1
- package/dist/src/assets/img/icons/mediatype/tv.js +0 -14
- package/dist/src/assets/img/icons/mediatype/tv.js.map +0 -1
- package/dist/src/assets/img/icons/mediatype/video.d.ts +0 -1
- package/dist/src/assets/img/icons/mediatype/video.js +0 -14
- package/dist/src/assets/img/icons/mediatype/video.js.map +0 -1
- package/dist/src/assets/img/icons/mediatype/web.d.ts +0 -1
- package/dist/src/assets/img/icons/mediatype/web.js +0 -13
- package/dist/src/assets/img/icons/mediatype/web.js.map +0 -1
- package/dist/src/assets/img/icons/null-result.d.ts +0 -2
- package/dist/src/assets/img/icons/null-result.js +0 -5
- package/dist/src/assets/img/icons/null-result.js.map +0 -1
- package/dist/src/assets/img/icons/restricted.d.ts +0 -1
- package/dist/src/assets/img/icons/restricted.js +0 -29
- package/dist/src/assets/img/icons/restricted.js.map +0 -1
- package/dist/src/assets/img/icons/reviews.d.ts +0 -1
- package/dist/src/assets/img/icons/reviews.js +0 -11
- package/dist/src/assets/img/icons/reviews.js.map +0 -1
- package/dist/src/assets/img/icons/upload.d.ts +0 -1
- package/dist/src/assets/img/icons/upload.js +0 -12
- package/dist/src/assets/img/icons/upload.js.map +0 -1
- package/dist/src/assets/img/icons/views.d.ts +0 -1
- package/dist/src/assets/img/icons/views.js +0 -11
- package/dist/src/assets/img/icons/views.js.map +0 -1
- package/dist/src/circular-activity-indicator.d.ts +0 -5
- package/dist/src/circular-activity-indicator.js +0 -66
- package/dist/src/circular-activity-indicator.js.map +0 -1
- package/dist/src/collection-browser.d.ts +0 -214
- package/dist/src/collection-browser.js +0 -1236
- package/dist/src/collection-browser.js.map +0 -1
- package/dist/src/collection-facets.d.ts +0 -63
- package/dist/src/collection-facets.js +0 -560
- package/dist/src/collection-facets.js.map +0 -1
- package/dist/src/empty-placeholder.d.ts +0 -11
- package/dist/src/empty-placeholder.js +0 -83
- package/dist/src/empty-placeholder.js.map +0 -1
- package/dist/src/language-code-handler/language-code-handler.d.ts +0 -37
- package/dist/src/language-code-handler/language-code-handler.js +0 -27
- package/dist/src/language-code-handler/language-code-handler.js.map +0 -1
- package/dist/src/language-code-handler/language-code-mapping.d.ts +0 -1
- package/dist/src/language-code-handler/language-code-mapping.js +0 -563
- package/dist/src/language-code-handler/language-code-mapping.js.map +0 -1
- package/dist/src/mediatype/mediatype-config.d.ts +0 -3
- package/dist/src/mediatype/mediatype-config.js +0 -86
- package/dist/src/mediatype/mediatype-config.js.map +0 -1
- package/dist/src/models.d.ts +0 -84
- package/dist/src/models.js +0 -58
- package/dist/src/models.js.map +0 -1
- package/dist/src/restoration-state-handler.d.ts +0 -38
- package/dist/src/restoration-state-handler.js +0 -204
- package/dist/src/restoration-state-handler.js.map +0 -1
- package/dist/src/sort-filter-bar/alpha-bar.d.ts +0 -9
- package/dist/src/sort-filter-bar/alpha-bar.js +0 -98
- package/dist/src/sort-filter-bar/alpha-bar.js.map +0 -1
- package/dist/src/sort-filter-bar/img/compact.d.ts +0 -1
- package/dist/src/sort-filter-bar/img/compact.js +0 -5
- package/dist/src/sort-filter-bar/img/compact.js.map +0 -1
- package/dist/src/sort-filter-bar/img/list.d.ts +0 -1
- package/dist/src/sort-filter-bar/img/list.js +0 -5
- package/dist/src/sort-filter-bar/img/list.js.map +0 -1
- package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +0 -1
- package/dist/src/sort-filter-bar/img/sort-triangle.js +0 -5
- package/dist/src/sort-filter-bar/img/sort-triangle.js.map +0 -1
- package/dist/src/sort-filter-bar/img/tile.d.ts +0 -1
- package/dist/src/sort-filter-bar/img/tile.js +0 -5
- package/dist/src/sort-filter-bar/img/tile.js.map +0 -1
- package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +0 -85
- package/dist/src/sort-filter-bar/sort-filter-bar.js +0 -698
- package/dist/src/sort-filter-bar/sort-filter-bar.js.map +0 -1
- package/dist/src/styles/item-image-styles.d.ts +0 -8
- package/dist/src/styles/item-image-styles.js +0 -101
- package/dist/src/styles/item-image-styles.js.map +0 -1
- package/dist/src/tiles/collection-browser-loading-tile.d.ts +0 -5
- package/dist/src/tiles/collection-browser-loading-tile.js +0 -32
- package/dist/src/tiles/collection-browser-loading-tile.js.map +0 -1
- package/dist/src/tiles/grid/account-tile.d.ts +0 -8
- package/dist/src/tiles/grid/account-tile.js +0 -126
- package/dist/src/tiles/grid/account-tile.js.map +0 -1
- package/dist/src/tiles/grid/collection-tile.d.ts +0 -7
- package/dist/src/tiles/grid/collection-tile.js +0 -159
- package/dist/src/tiles/grid/collection-tile.js.map +0 -1
- package/dist/src/tiles/grid/item-tile.d.ts +0 -16
- package/dist/src/tiles/grid/item-tile.js +0 -174
- package/dist/src/tiles/grid/item-tile.js.map +0 -1
- package/dist/src/tiles/grid/tile-stats.d.ts +0 -10
- package/dist/src/tiles/grid/tile-stats.js +0 -134
- package/dist/src/tiles/grid/tile-stats.js.map +0 -1
- package/dist/src/tiles/item-image.d.ts +0 -31
- package/dist/src/tiles/item-image.js +0 -117
- package/dist/src/tiles/item-image.js.map +0 -1
- package/dist/src/tiles/item-tile-image.d.ts +0 -15
- package/dist/src/tiles/item-tile-image.js +0 -68
- package/dist/src/tiles/item-tile-image.js.map +0 -1
- package/dist/src/tiles/list/account-label.d.ts +0 -1
- package/dist/src/tiles/list/account-label.js +0 -7
- package/dist/src/tiles/list/account-label.js.map +0 -1
- package/dist/src/tiles/list/date-label.d.ts +0 -1
- package/dist/src/tiles/list/date-label.js +0 -13
- package/dist/src/tiles/list/date-label.js.map +0 -1
- package/dist/src/tiles/list/tile-list-compact-header.d.ts +0 -12
- package/dist/src/tiles/list/tile-list-compact-header.js +0 -84
- package/dist/src/tiles/list/tile-list-compact-header.js.map +0 -1
- package/dist/src/tiles/list/tile-list-compact.d.ts +0 -20
- package/dist/src/tiles/list/tile-list-compact.js +0 -215
- package/dist/src/tiles/list/tile-list-compact.js.map +0 -1
- package/dist/src/tiles/list/tile-list.d.ts +0 -47
- package/dist/src/tiles/list/tile-list.js +0 -492
- package/dist/src/tiles/list/tile-list.js.map +0 -1
- package/dist/src/tiles/mediatype-icon.d.ts +0 -9
- package/dist/src/tiles/mediatype-icon.js +0 -82
- package/dist/src/tiles/mediatype-icon.js.map +0 -1
- package/dist/src/tiles/tile-dispatcher.d.ts +0 -35
- package/dist/src/tiles/tile-dispatcher.js +0 -204
- package/dist/src/tiles/tile-dispatcher.js.map +0 -1
- package/dist/src/utils/format-count.d.ts +0 -7
- package/dist/src/utils/format-count.js +0 -76
- package/dist/src/utils/format-count.js.map +0 -1
- package/dist/src/utils/format-date.d.ts +0 -2
- package/dist/src/utils/format-date.js +0 -24
- package/dist/src/utils/format-date.js.map +0 -1
- package/dist/test/collection-browser.test.d.ts +0 -1
- package/dist/test/collection-browser.test.js +0 -47
- package/dist/test/collection-browser.test.js.map +0 -1
- package/dist/test/empty-placeholder.test.d.ts +0 -1
- package/dist/test/empty-placeholder.test.js +0 -34
- package/dist/test/empty-placeholder.test.js.map +0 -1
- package/dist/test/mediatype-config.test.d.ts +0 -1
- package/dist/test/mediatype-config.test.js +0 -17
- package/dist/test/mediatype-config.test.js.map +0 -1
- package/dist/test/mocks/mock-collection-name-cache.d.ts +0 -7
- package/dist/test/mocks/mock-collection-name-cache.js +0 -14
- package/dist/test/mocks/mock-collection-name-cache.js.map +0 -1
- package/dist/test/mocks/mock-search-responses.d.ts +0 -3
- package/dist/test/mocks/mock-search-responses.js +0 -32
- package/dist/test/mocks/mock-search-responses.js.map +0 -1
- package/dist/test/mocks/mock-search-service.d.ts +0 -8
- package/dist/test/mocks/mock-search-service.js +0 -16
- package/dist/test/mocks/mock-search-service.js.map +0 -1
- package/dist/test/tile-stats.test.d.ts +0 -1
- package/dist/test/tile-stats.test.js +0 -42
- package/dist/test/tile-stats.test.js.map +0 -1
- package/dist/test/tiles/grid/item-tile.test.d.ts +0 -1
- package/dist/test/tiles/grid/item-tile.test.js +0 -96
- package/dist/test/tiles/grid/item-tile.test.js.map +0 -1
- package/dist/test/utils/format-count.test.d.ts +0 -1
- package/dist/test/utils/format-count.test.js +0 -24
- package/dist/test/utils/format-count.test.js.map +0 -1
- package/dist/test/utils/format-date.test.d.ts +0 -1
- package/dist/test/utils/format-date.test.js +0 -18
- package/dist/test/utils/format-date.test.js.map +0 -1
- package/src/tiles/item-tile-image.ts +0 -61
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sort-filter-bar.js","sourceRoot":"","sources":["../../../src/sort-filter-bar/sort-filter-bar.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n LitElement,\n html,\n css,\n nothing,\n PropertyValues,\n TemplateResult,\n} from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport {\n SharedResizeObserverInterface,\n SharedResizeObserverResizeHandlerInterface,\n} from '@internetarchive/shared-resize-observer';\nimport {\n CollectionDisplayMode,\n SortField,\n SortFieldDisplayName,\n} from '../models';\nimport './alpha-bar';\n\nimport { sortIcon } from './img/sort-triangle';\nimport { tileIcon } from './img/tile';\nimport { listIcon } from './img/list';\nimport { compactIcon } from './img/compact';\n\ntype AlphaSelector = 'creator' | 'title';\n\n@customElement('sort-filter-bar')\nexport class SortFilterBar\n extends LitElement\n implements SharedResizeObserverResizeHandlerInterface\n{\n @property({ type: String }) displayMode?: CollectionDisplayMode;\n\n @property({ type: String }) sortDirection: 'asc' | 'desc' | null = null;\n\n @property({ type: String }) selectedSort: SortField = SortField.relevance;\n\n @property({ type: String }) selectedTitleFilter: string | null = null;\n\n @property({ type: String }) selectedCreatorFilter: string | null = null;\n\n @property({ type: Boolean }) showRelevance: boolean = true;\n\n @property({ type: Object }) resizeObserver?: SharedResizeObserverInterface;\n\n @state() alphaSelectorVisible: AlphaSelector | null = null;\n\n @state() dateSortSelectorVisible = false;\n\n @state() desktopSelectorBarWidth = 0;\n\n @state() selectorBarContainerWidth = 0;\n\n @state() hoveringOverDateSortOptions = false;\n\n @query('#desktop-sort-selector')\n private desktopSortSelector!: HTMLUListElement;\n\n @query('#sort-selector-container')\n private sortSelectorContainer!: HTMLDivElement;\n\n render() {\n return html`\n <div id=\"container\">\n <div id=\"sort-bar\">\n <div id=\"sort-direction-container\">\n ${this.sortDirectionSelectorTemplate}\n </div>\n\n <div id=\"sort-selector-container\">\n ${this.mobileSortSelectorTemplate}\n ${this.desktopSortSelectorTemplate}\n </div>\n\n <div id=\"display-style-selector\">${this.displayOptionTemplate}</div>\n </div>\n\n ${this.dateSortSelectorVisible && !this.mobileSelectorVisible\n ? this.dateSortSelector\n : nothing}\n ${this.alphaBarTemplate}\n\n <div id=\"bottom-shadow\"></div>\n </div>\n `;\n }\n\n updated(changed: PropertyValues) {\n if (changed.has('displayMode')) {\n this.displayModeChanged();\n }\n\n if (changed.has('selectedSort') && this.sortDirection === null) {\n this.sortDirection = 'desc';\n }\n\n if (changed.has('selectedTitleFilter') && this.selectedTitleFilter) {\n this.alphaSelectorVisible = 'title';\n }\n\n if (changed.has('selectedCreatorFilter') && this.selectedCreatorFilter) {\n this.alphaSelectorVisible = 'creator';\n }\n\n if (changed.has('dateSortSelectorVisible')) {\n this.setupEscapeListeners();\n }\n\n if (changed.has('resizeObserver')) {\n const oldObserver = changed.get(\n 'resizeObserver'\n ) as SharedResizeObserverInterface;\n if (oldObserver) this.disconnectResizeObserver(oldObserver);\n this.setupResizeObserver();\n }\n }\n\n private setupEscapeListeners() {\n if (this.dateSortSelectorVisible) {\n document.addEventListener(\n 'keydown',\n this.boundDateSelectorEscapeListener\n );\n } else {\n document.removeEventListener(\n 'keydown',\n this.boundDateSelectorEscapeListener\n );\n }\n }\n\n private boundDateSelectorEscapeListener = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n this.dateSortSelectorVisible = false;\n }\n };\n\n disconnectedCallback(): void {\n if (this.resizeObserver) {\n this.disconnectResizeObserver(this.resizeObserver);\n }\n }\n\n private disconnectResizeObserver(\n resizeObserver: SharedResizeObserverInterface\n ) {\n resizeObserver.removeObserver({\n target: this.sortSelectorContainer,\n handler: this,\n });\n\n resizeObserver.removeObserver({\n target: this.desktopSortSelector,\n handler: this,\n });\n }\n\n private setupResizeObserver() {\n if (!this.resizeObserver) return;\n this.resizeObserver.addObserver({\n target: this.sortSelectorContainer,\n handler: this,\n });\n\n this.resizeObserver.addObserver({\n target: this.desktopSortSelector,\n handler: this,\n });\n }\n\n private get mobileSelectorVisible() {\n return this.selectorBarContainerWidth - 10 < this.desktopSelectorBarWidth;\n }\n\n private get alphaBarTemplate(): TemplateResult | typeof nothing {\n if (!['title', 'creator'].includes(this.selectedSort)) return nothing;\n\n if (this.alphaSelectorVisible === null) {\n if (this.selectedSort === 'creator') return this.creatorSelectorBar;\n if (this.selectedSort === 'title') return this.titleSelectorBar;\n } else {\n return this.alphaSelectorVisible === 'creator'\n ? this.creatorSelectorBar\n : this.titleSelectorBar;\n }\n\n return nothing;\n }\n\n handleResize(entry: ResizeObserverEntry): void {\n if (entry.target === this.desktopSortSelector) {\n this.desktopSelectorBarWidth = entry.contentRect.width;\n } else if (entry.target === this.sortSelectorContainer) {\n this.selectorBarContainerWidth = entry.contentRect.width;\n }\n }\n\n private get sortDirectionSelectorTemplate() {\n return html`\n <div id=\"sort-direction-selector\">\n <button\n id=\"sort-ascending-btn\"\n class=\"sort-button ${this.sortDirection === 'asc' ? 'selected' : ''}\"\n ?disabled=${this.selectedSort === 'relevance'}\n @click=${() => {\n this.setSortDirections('asc');\n }}\n >\n ${sortIcon}\n </button>\n <button\n id=\"sort-descending-btn\"\n class=\"sort-button ${this.sortDirection === 'desc' ? 'selected' : ''}\"\n ?disabled=${this.selectedSort === 'relevance'}\n @click=${() => {\n this.setSortDirections('desc');\n }}\n >\n ${sortIcon}\n </button>\n </div>\n `;\n }\n\n private get desktopSortSelectorTemplate() {\n return html`\n <ul\n id=\"desktop-sort-selector\"\n class=${this.mobileSelectorVisible ? 'hidden' : 'visible'}\n >\n <li id=\"sort-by-text\">Sort By</li>\n <li>\n ${this.showRelevance\n ? this.getSortDisplayOption(SortField.relevance)\n : nothing}\n </li>\n <li>${this.getSortDisplayOption(SortField.views)}</li>\n <li>\n ${this.getSortDisplayOption(SortField.title, {\n clickEvent: () => {\n this.alphaSelectorVisible = 'title';\n this.selectedCreatorFilter = null;\n this.dateSortSelectorVisible = false;\n this.setSelectedSort(SortField.title);\n this.emitCreatorLetterChangedEvent();\n },\n })}\n </li>\n <li>\n ${this.getSortDisplayOption(SortField.date, {\n clickEvent: () => {\n if (!this.dateOptionSelected)\n this.setSelectedSort(SortField.date);\n this.dateSortSelectorVisible = !this.dateSortSelectorVisible;\n this.alphaSelectorVisible = null;\n this.selectedTitleFilter = null;\n this.selectedCreatorFilter = null;\n this.emitTitleLetterChangedEvent();\n this.emitCreatorLetterChangedEvent();\n },\n displayName: html`${this.dateSortField}`,\n isSelected: () => this.dateOptionSelected,\n })}\n </li>\n <li>\n ${this.getSortDisplayOption(SortField.creator, {\n clickEvent: () => {\n this.alphaSelectorVisible = 'creator';\n this.selectedTitleFilter = null;\n this.dateSortSelectorVisible = false;\n this.setSelectedSort(SortField.creator);\n this.emitTitleLetterChangedEvent();\n },\n })}\n </li>\n </ul>\n `;\n }\n\n /**\n * This generates each of the sort option links.\n *\n * It manages the display value and the selected state of the option.\n *\n * @param sortField\n * @param options {\n * additionalClickEvent?: () => void; If this is provided, it will also be called when the option is clicked.\n * displayName?: TemplateResult; The name to display for the option. Defaults to the sortField display name.\n * isSelected?: () => boolean; A function that returns true if the option is selected. Defaults to the selectedSort === sortField.\n * }\n * @returns\n */\n private getSortDisplayOption(\n sortField: SortField,\n options?: {\n clickEvent?: (e: Event) => void;\n isSelected?: () => boolean;\n displayName?: TemplateResult;\n }\n ): TemplateResult {\n const isSelected =\n options?.isSelected ?? (() => this.selectedSort === sortField);\n const displayName = options?.displayName ?? SortFieldDisplayName[sortField];\n return html`\n <a\n href=\"#\"\n @click=${(e: Event) => {\n e.preventDefault();\n if (options?.clickEvent) {\n options.clickEvent(e);\n } else {\n this.alphaSelectorVisible = null;\n this.dateSortSelectorVisible = false;\n this.selectedTitleFilter = null;\n this.selectedCreatorFilter = null;\n this.setSelectedSort(sortField);\n this.emitTitleLetterChangedEvent();\n this.emitCreatorLetterChangedEvent();\n }\n }}\n class=${isSelected() ? 'selected' : ''}\n >\n ${displayName}\n </a>\n `;\n }\n\n private get mobileSortSelectorTemplate() {\n return html`\n <select\n id=\"mobile-sort-selector\"\n @change=${this.mobileSortChanged}\n class=${this.mobileSelectorVisible ? 'visible' : 'hidden'}\n >\n ${Object.keys(SortField).map(\n field => html`\n <option value=\"${field}\" ?selected=${this.selectedSort === field}>\n ${SortFieldDisplayName[field as SortField]}\n </option>\n `\n )}\n </select>\n `;\n }\n\n private mobileSortChanged(e: Event) {\n const target = e.target as HTMLSelectElement;\n this.setSelectedSort(target.value as SortField);\n }\n\n private get displayOptionTemplate() {\n return html`\n <ul>\n <li>\n <button\n id=\"grid-button\"\n @click=${() => {\n this.displayMode = 'grid';\n }}\n class=${this.displayMode === 'grid' ? 'active' : ''}\n title=\"Tile view\"\n >\n ${tileIcon}\n </button>\n </li>\n <li>\n <button\n id=\"grid-button\"\n @click=${() => {\n this.displayMode = 'list-detail';\n }}\n class=${this.displayMode === 'list-detail' ? 'active' : ''}\n title=\"List view\"\n >\n ${listIcon}\n </button>\n </li>\n <li>\n <button\n id=\"list-button\"\n @click=${() => {\n this.displayMode = 'list-compact';\n }}\n class=${this.displayMode === 'list-compact' ? 'active' : ''}\n title=\"Compact list view\"\n >\n ${compactIcon}\n </button>\n </li>\n </ul>\n `;\n }\n\n private get dateSortSelector() {\n return html`\n <div\n id=\"date-sort-selector-backdrop\"\n @keyup=${() => {\n this.dateSortSelectorVisible = false;\n }}\n @click=${() => {\n this.dateSortSelectorVisible = false;\n }}\n ></div>\n <div id=\"date-sort-selector\">\n <ul>\n <li>${this.getDateSortButton(SortField.datearchived)}</li>\n <li>${this.getDateSortButton(SortField.date)}</li>\n <li>${this.getDateSortButton(SortField.datereviewed)}</li>\n <li>${this.getDateSortButton(SortField.dateadded)}</li>\n </ul>\n </div>\n `;\n }\n\n private getDateSortButton(sortField: SortField) {\n return html`\n <button\n @click=${() => {\n this.selectDateSort(sortField);\n }}\n class=${this.selectedSort === sortField ? 'selected' : ''}\n >\n ${SortFieldDisplayName[sortField]}\n </button>\n `;\n }\n\n private selectDateSort(sortField: SortField) {\n this.dateSortSelectorVisible = false;\n this.setSelectedSort(sortField);\n }\n\n private setSortDirections(sortDirection: 'asc' | 'desc') {\n this.sortDirection = sortDirection;\n this.emitSortChangedEvent();\n }\n\n private setSelectedSort(sort: SortField) {\n this.selectedSort = sort;\n this.emitSortChangedEvent();\n }\n\n /**\n * There are four date sort options.\n *\n * This checks to see if the current sort is one of them.\n *\n * @readonly\n * @private\n * @type {boolean}\n * @memberof SortFilterBar\n */\n private get dateOptionSelected(): boolean {\n const dateSortFields: SortField[] = [\n SortField.datearchived,\n SortField.date,\n SortField.datereviewed,\n SortField.dateadded,\n ];\n return dateSortFields.includes(this.selectedSort);\n }\n\n /**\n * The display name of the current date field\n *\n * @readonly\n * @private\n * @type {string}\n * @memberof SortFilterBar\n */\n private get dateSortField(): string {\n const defaultSort = SortFieldDisplayName[SortField.date];\n const name = this.dateOptionSelected\n ? SortFieldDisplayName[this.selectedSort] ?? defaultSort\n : defaultSort;\n return name;\n }\n\n private get titleSelectorBar() {\n return html` <alpha-bar\n .selectedLetter=${this.selectedTitleFilter}\n @letterChanged=${this.titleLetterChanged}\n ></alpha-bar>`;\n }\n\n private get creatorSelectorBar() {\n return html` <alpha-bar\n .selectedLetter=${this.selectedCreatorFilter}\n @letterChanged=${this.creatorLetterChanged}\n ></alpha-bar>`;\n }\n\n private titleLetterChanged(\n e: CustomEvent<{ selectedLetter: string | undefined }>\n ) {\n this.selectedTitleFilter = e.detail.selectedLetter ?? null;\n this.emitTitleLetterChangedEvent();\n }\n\n private creatorLetterChanged(\n e: CustomEvent<{ selectedLetter: string | undefined }>\n ) {\n this.selectedCreatorFilter = e.detail.selectedLetter ?? null;\n this.emitCreatorLetterChangedEvent();\n }\n\n private emitTitleLetterChangedEvent() {\n const event = new CustomEvent<{ selectedLetter: string | null }>(\n 'titleLetterChanged',\n {\n detail: { selectedLetter: this.selectedTitleFilter },\n }\n );\n this.dispatchEvent(event);\n }\n\n private emitCreatorLetterChangedEvent() {\n const event = new CustomEvent<{ selectedLetter: string | null }>(\n 'creatorLetterChanged',\n {\n detail: { selectedLetter: this.selectedCreatorFilter },\n }\n );\n this.dispatchEvent(event);\n }\n\n private displayModeChanged() {\n const event = new CustomEvent('displayModeChanged', {\n detail: { displayMode: this.displayMode },\n });\n this.dispatchEvent(event);\n }\n\n private emitSortChangedEvent() {\n const event = new CustomEvent<{\n selectedSort: SortField;\n sortDirection: 'asc' | 'desc' | null;\n }>('sortChanged', {\n detail: {\n selectedSort: this.selectedSort,\n sortDirection: this.sortDirection,\n },\n });\n this.dispatchEvent(event);\n }\n\n static styles = css`\n #container {\n position: relative;\n }\n\n #sort-bar {\n display: flex;\n justify-content: space-between;\n border: 1px solid rgb(232, 232, 232);\n align-items: center;\n padding: 0.5rem 1.5rem;\n }\n\n #sort-direction-container {\n flex: 0;\n }\n\n #sort-by-text {\n text-transform: uppercase;\n }\n\n #bottom-shadow {\n height: 1px;\n width: 100%;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);\n background-color: #bbb;\n }\n\n ul {\n list-style: none;\n display: flex;\n margin: 0;\n padding: 0;\n align-items: center;\n }\n\n li {\n padding: 0;\n }\n\n .sort-button {\n background: none;\n color: inherit;\n border: none;\n padding: 0;\n cursor: pointer;\n outline: inherit;\n width: 12px;\n height: 12px;\n opacity: 0.5;\n }\n\n .sort-button.selected {\n opacity: 1;\n }\n\n .sort-button:disabled {\n opacity: 0.25;\n cursor: default;\n }\n\n #date-sort-selector {\n position: absolute;\n left: 150px;\n top: 45px;\n\n z-index: 1;\n padding: 1rem;\n background-color: white;\n border-radius: 2.5rem;\n border: 1px solid #404142;\n }\n\n #date-sort-selector button {\n background: none;\n border-radius: 15px;\n color: #404142;\n border: none;\n appearance: none;\n cursor: pointer;\n -webkit-appearance: none;\n font-size: 1.4rem;\n font-weight: 400;\n padding: 0.5rem 1.2rem;\n }\n\n #date-sort-selector button.selected {\n background-color: #404142;\n color: white;\n }\n\n #show-details {\n text-transform: uppercase;\n cursor: pointer;\n display: flex;\n }\n\n #show-details input {\n margin-right: 0.5rem;\n flex: 0 0 12px;\n }\n\n #sort-descending-btn {\n transform: rotate(180deg);\n }\n\n #sort-direction-selector {\n display: flex;\n flex-direction: column;\n gap: 3px;\n margin-right: 1rem;\n }\n\n #sort-selector-container {\n flex: 1;\n }\n\n /*\n we move the desktop sort selector offscreen instead of display: none\n because we need to observe the width of it vs its container to determine\n if it's wide enough to display the desktop version and if you displY: none,\n the width becomes 0\n */\n #desktop-sort-selector.hidden {\n position: absolute;\n top: -9999px;\n left: -9999px;\n }\n\n #mobile-sort-selector.hidden {\n display: none;\n }\n\n #date-sort-selector-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 1;\n background-color: rgba(255, 255, 255, 0.5);\n }\n\n #desktop-sort-selector {\n display: inline-flex;\n }\n\n #desktop-sort-selector li {\n display: flex;\n align-items: center;\n }\n\n #desktop-sort-selector li a {\n text-decoration: none;\n text-transform: uppercase;\n font-size: 1.4rem;\n color: #333;\n line-height: 2.5;\n }\n\n #desktop-sort-selector li a.selected {\n font-weight: bold;\n }\n\n #desktop-sort-selector li::after {\n content: '•';\n padding-left: 1rem;\n padding-right: 1rem;\n }\n\n #desktop-sort-selector li:first-child::after {\n content: '';\n }\n\n #desktop-sort-selector li:last-child::after {\n content: '';\n }\n\n #display-style-selector {\n flex: 0;\n }\n\n #display-style-selector button {\n background: none;\n color: inherit;\n border: none;\n appearance: none;\n cursor: pointer;\n -webkit-appearance: none;\n opacity: 0.5;\n }\n\n #display-style-selector button.active {\n opacity: 1;\n }\n\n #display-style-selector button svg {\n width: 24px;\n height: 24px;\n }\n `;\n}\n"]}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { css } from 'lit';
|
|
2
|
-
/**
|
|
3
|
-
* Base item-image styles
|
|
4
|
-
*/
|
|
5
|
-
export const baseItemImageStyles = css `
|
|
6
|
-
.drop-shadow {
|
|
7
|
-
filter: drop-shadow(1px 1px 2px rgba(0, 0, 0, 0.8));
|
|
8
|
-
overflow: hidden;
|
|
9
|
-
height: 100%;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
.list-box {
|
|
13
|
-
width: 100%;
|
|
14
|
-
height: 100%;
|
|
15
|
-
overflow: hidden;
|
|
16
|
-
box-sizing: border-box;
|
|
17
|
-
display: flex;
|
|
18
|
-
position: relative;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
.contain {
|
|
22
|
-
object-fit: contain;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
.cover {
|
|
26
|
-
object-fit: cover;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.blur {
|
|
30
|
-
filter: blur(15px);
|
|
31
|
-
width: 100%;
|
|
32
|
-
transform: scale(1.1);
|
|
33
|
-
}
|
|
34
|
-
`;
|
|
35
|
-
/**
|
|
36
|
-
* Waveform styles
|
|
37
|
-
*/
|
|
38
|
-
export const waveformGradientStyles = css `
|
|
39
|
-
.waveform {
|
|
40
|
-
mix-blend-mode: screen;
|
|
41
|
-
position: relative;
|
|
42
|
-
height: 62.5%;
|
|
43
|
-
top: 50%;
|
|
44
|
-
transform: translateY(-50%);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
.waveform-grad0 {
|
|
48
|
-
background: linear-gradient(
|
|
49
|
-
hsl(340, 80%, 55%),
|
|
50
|
-
hsl(0, 80%, 33%) 35%,
|
|
51
|
-
hsl(0, 80%, 22%) 70%,
|
|
52
|
-
hsl(0, 0%, 0%)
|
|
53
|
-
);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
.waveform-grad1 {
|
|
57
|
-
background: linear-gradient(
|
|
58
|
-
hsl(300, 80%, 55%),
|
|
59
|
-
hsl(330, 80%, 33%) 35%,
|
|
60
|
-
hsl(330, 80%, 22%) 70%,
|
|
61
|
-
hsl(0, 0%, 0%)
|
|
62
|
-
);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
.waveform-grad2 {
|
|
66
|
-
background: linear-gradient(
|
|
67
|
-
hsl(200, 80%, 55%),
|
|
68
|
-
hsl(230, 80%, 33%) 35%,
|
|
69
|
-
hsl(230, 80%, 22%) 70%,
|
|
70
|
-
hsl(0, 0%, 0%)
|
|
71
|
-
);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
.waveform-grad3 {
|
|
75
|
-
background: linear-gradient(
|
|
76
|
-
hsl(160, 80%, 55%),
|
|
77
|
-
hsl(190, 80%, 33%) 35%,
|
|
78
|
-
hsl(190, 80%, 22%) 70%,
|
|
79
|
-
hsl(0, 0%, 0%)
|
|
80
|
-
);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
.waveform-grad4 {
|
|
84
|
-
background: linear-gradient(
|
|
85
|
-
hsl(250, 80%, 55%),
|
|
86
|
-
hsl(280, 80%, 33%) 35%,
|
|
87
|
-
hsl(280, 80%, 22%) 70%,
|
|
88
|
-
hsl(0, 0%, 0%)
|
|
89
|
-
);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
.waveform-grad5 {
|
|
93
|
-
background: linear-gradient(
|
|
94
|
-
hsl(280, 80%, 55%),
|
|
95
|
-
hsl(310, 80%, 33%) 35%,
|
|
96
|
-
hsl(310, 80%, 22%) 70%,
|
|
97
|
-
hsl(0, 0%, 0%)
|
|
98
|
-
);
|
|
99
|
-
}
|
|
100
|
-
`;
|
|
101
|
-
//# sourceMappingURL=item-image-styles.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"item-image-styles.js","sourceRoot":"","sources":["../../../src/styles/item-image-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BrC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8DxC,CAAC","sourcesContent":["import { css } from 'lit';\n\n/**\n * Base item-image styles\n */\nexport const baseItemImageStyles = css`\n .drop-shadow {\n filter: drop-shadow(1px 1px 2px rgba(0, 0, 0, 0.8));\n overflow: hidden;\n height: 100%;\n }\n\n .list-box {\n width: 100%;\n height: 100%;\n overflow: hidden;\n box-sizing: border-box;\n display: flex;\n position: relative;\n }\n\n .contain {\n object-fit: contain;\n }\n\n .cover {\n object-fit: cover;\n }\n\n .blur {\n filter: blur(15px);\n width: 100%;\n transform: scale(1.1);\n }\n`;\n\n/**\n * Waveform styles\n */\nexport const waveformGradientStyles = css`\n .waveform {\n mix-blend-mode: screen;\n position: relative;\n height: 62.5%;\n top: 50%;\n transform: translateY(-50%);\n }\n\n .waveform-grad0 {\n background: linear-gradient(\n hsl(340, 80%, 55%),\n hsl(0, 80%, 33%) 35%,\n hsl(0, 80%, 22%) 70%,\n hsl(0, 0%, 0%)\n );\n }\n\n .waveform-grad1 {\n background: linear-gradient(\n hsl(300, 80%, 55%),\n hsl(330, 80%, 33%) 35%,\n hsl(330, 80%, 22%) 70%,\n hsl(0, 0%, 0%)\n );\n }\n\n .waveform-grad2 {\n background: linear-gradient(\n hsl(200, 80%, 55%),\n hsl(230, 80%, 33%) 35%,\n hsl(230, 80%, 22%) 70%,\n hsl(0, 0%, 0%)\n );\n }\n\n .waveform-grad3 {\n background: linear-gradient(\n hsl(160, 80%, 55%),\n hsl(190, 80%, 33%) 35%,\n hsl(190, 80%, 22%) 70%,\n hsl(0, 0%, 0%)\n );\n }\n\n .waveform-grad4 {\n background: linear-gradient(\n hsl(250, 80%, 55%),\n hsl(280, 80%, 33%) 35%,\n hsl(280, 80%, 22%) 70%,\n hsl(0, 0%, 0%)\n );\n }\n\n .waveform-grad5 {\n background: linear-gradient(\n hsl(280, 80%, 55%),\n hsl(310, 80%, 33%) 35%,\n hsl(310, 80%, 22%) 70%,\n hsl(0, 0%, 0%)\n );\n }\n`;\n"]}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { css, html, LitElement } from 'lit';
|
|
3
|
-
import { customElement } from 'lit/decorators.js';
|
|
4
|
-
let CollectionBrowserLoadingTile = class CollectionBrowserLoadingTile extends LitElement {
|
|
5
|
-
render() {
|
|
6
|
-
return html ` <div id="container"></div> `;
|
|
7
|
-
}
|
|
8
|
-
static get styles() {
|
|
9
|
-
return css `
|
|
10
|
-
:host {
|
|
11
|
-
display: block;
|
|
12
|
-
height: 100%;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
#container {
|
|
16
|
-
background: linear-gradient(
|
|
17
|
-
to right,
|
|
18
|
-
rgba(25, 69, 154, 0.1),
|
|
19
|
-
rgb(105, 161, 234, 0.2)
|
|
20
|
-
);
|
|
21
|
-
background-size: 100% 100%;
|
|
22
|
-
display: block;
|
|
23
|
-
height: 100%;
|
|
24
|
-
}
|
|
25
|
-
`;
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
CollectionBrowserLoadingTile = __decorate([
|
|
29
|
-
customElement('collection-browser-loading-tile')
|
|
30
|
-
], CollectionBrowserLoadingTile);
|
|
31
|
-
export { CollectionBrowserLoadingTile };
|
|
32
|
-
//# sourceMappingURL=collection-browser-loading-tile.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"collection-browser-loading-tile.js","sourceRoot":"","sources":["../../../src/tiles/collection-browser-loading-tile.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,IAAa,4BAA4B,GAAzC,MAAa,4BAA6B,SAAQ,UAAU;IAC1D,MAAM;QACJ,OAAO,IAAI,CAAA,8BAA8B,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;KAgBT,CAAC;IACJ,CAAC;CACF,CAAA;AAxBY,4BAA4B;IADxC,aAAa,CAAC,iCAAiC,CAAC;GACpC,4BAA4B,CAwBxC;SAxBY,4BAA4B","sourcesContent":["import { css, html, LitElement } from 'lit';\nimport { customElement } from 'lit/decorators.js';\n\n@customElement('collection-browser-loading-tile')\nexport class CollectionBrowserLoadingTile extends LitElement {\n render() {\n return html` <div id=\"container\"></div> `;\n }\n\n static get styles() {\n return css`\n :host {\n display: block;\n height: 100%;\n }\n\n #container {\n background: linear-gradient(\n to right,\n rgba(25, 69, 154, 0.1),\n rgb(105, 161, 234, 0.2)\n );\n background-size: 100% 100%;\n display: block;\n height: 100%;\n }\n `;\n }\n}\n"]}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { LitElement } from 'lit';
|
|
2
|
-
import { TileModel } from '../../models';
|
|
3
|
-
import './tile-stats';
|
|
4
|
-
export declare class AccountTile extends LitElement {
|
|
5
|
-
model?: TileModel;
|
|
6
|
-
render(): import("lit-html").TemplateResult<1>;
|
|
7
|
-
static get styles(): import("lit").CSSResult;
|
|
8
|
-
}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { css, html, LitElement } from 'lit';
|
|
3
|
-
import { customElement, property } from 'lit/decorators.js';
|
|
4
|
-
import './tile-stats';
|
|
5
|
-
let AccountTile = class AccountTile extends LitElement {
|
|
6
|
-
render() {
|
|
7
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
8
|
-
return html `
|
|
9
|
-
<div class="account-tile-main">
|
|
10
|
-
<div id="title">
|
|
11
|
-
<h1 class="truncated">${(_a = this.model) === null || _a === void 0 ? void 0 : _a.identifier}</h1>
|
|
12
|
-
</div>
|
|
13
|
-
|
|
14
|
-
<div class="account-info">
|
|
15
|
-
<div id="avatar-info">
|
|
16
|
-
<img
|
|
17
|
-
id="avatar"
|
|
18
|
-
alt="patron-avatar"
|
|
19
|
-
src="https://archive.org/services/img/${(_b = this.model) === null || _b === void 0 ? void 0 : _b.identifier}"
|
|
20
|
-
/>
|
|
21
|
-
</div>
|
|
22
|
-
|
|
23
|
-
<span id="archivist-since">
|
|
24
|
-
Archivist since ${(_d = (_c = this.model) === null || _c === void 0 ? void 0 : _c.dateAdded) === null || _d === void 0 ? void 0 : _d.getFullYear()}
|
|
25
|
-
</span>
|
|
26
|
-
</div>
|
|
27
|
-
|
|
28
|
-
<tile-stats
|
|
29
|
-
.mediatype=${(_e = this.model) === null || _e === void 0 ? void 0 : _e.mediatype}
|
|
30
|
-
.itemCount=${(_f = this.model) === null || _f === void 0 ? void 0 : _f.itemCount}
|
|
31
|
-
.favCount=${(_g = this.model) === null || _g === void 0 ? void 0 : _g.favCount}
|
|
32
|
-
.commentCount=${(_h = this.model) === null || _h === void 0 ? void 0 : _h.commentCount}
|
|
33
|
-
>
|
|
34
|
-
</tile-stats>
|
|
35
|
-
</div>
|
|
36
|
-
`;
|
|
37
|
-
}
|
|
38
|
-
static get styles() {
|
|
39
|
-
return css `
|
|
40
|
-
h1 {
|
|
41
|
-
color: black;
|
|
42
|
-
font-size: 16px;
|
|
43
|
-
margin: 0;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
span {
|
|
47
|
-
font-size: 14px;
|
|
48
|
-
color: #2c2c2c;
|
|
49
|
-
margin: 0px;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
.account-tile-main {
|
|
53
|
-
background-color: #fcf5e6;
|
|
54
|
-
border: 1px #2c2c2c;
|
|
55
|
-
border-radius: 4px;
|
|
56
|
-
box-shadow: 1px 1px 2px 0px;
|
|
57
|
-
height: 100%;
|
|
58
|
-
display: flex;
|
|
59
|
-
flex-direction: column;
|
|
60
|
-
text-align: center;
|
|
61
|
-
width: 100%;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
.account-info {
|
|
65
|
-
flex-grow: 1;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
#title {
|
|
69
|
-
padding: 5px 5px 0px 5px;
|
|
70
|
-
flex-shrink: 0;
|
|
71
|
-
height: 40px;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
.account-tile-main:hover > #title > .truncated {
|
|
75
|
-
text-decoration: underline;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/** this is a workaround for Safari 15 where the hover effects are not working */
|
|
79
|
-
#title:hover > .truncated {
|
|
80
|
-
text-decoration: underline;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
#avatar-info {
|
|
84
|
-
margin-top: 5px;
|
|
85
|
-
margin-bottom: 5px;
|
|
86
|
-
display: flex;
|
|
87
|
-
align-items: center;
|
|
88
|
-
justify-content: center;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
#avatar {
|
|
92
|
-
background-position: 50% 50%;
|
|
93
|
-
border-radius: 50%;
|
|
94
|
-
width: 160px;
|
|
95
|
-
height: 160px;
|
|
96
|
-
box-shadow: 1px 1px 2px #888888;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
#archivist-since {
|
|
100
|
-
margin-bottom: 5px;
|
|
101
|
-
height: 40px;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
.truncated {
|
|
105
|
-
flex: 1;
|
|
106
|
-
min-width: 0; /* Important for long words! */
|
|
107
|
-
-webkit-line-clamp: 2;
|
|
108
|
-
text-overflow: ellipsis;
|
|
109
|
-
overflow: hidden;
|
|
110
|
-
display: -webkit-box;
|
|
111
|
-
-webkit-box-orient: vertical;
|
|
112
|
-
word-wrap: break-word;
|
|
113
|
-
line-height: 2rem;
|
|
114
|
-
text-align: center;
|
|
115
|
-
}
|
|
116
|
-
`;
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
__decorate([
|
|
120
|
-
property({ type: Object })
|
|
121
|
-
], AccountTile.prototype, "model", void 0);
|
|
122
|
-
AccountTile = __decorate([
|
|
123
|
-
customElement('account-tile')
|
|
124
|
-
], AccountTile);
|
|
125
|
-
export { AccountTile };
|
|
126
|
-
//# sourceMappingURL=account-tile.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"account-tile.js","sourceRoot":"","sources":["../../../../src/tiles/grid/account-tile.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,cAAc,CAAC;AAGtB,IAAa,WAAW,GAAxB,MAAa,WAAY,SAAQ,UAAU;IAGzC,MAAM;;QACJ,OAAO,IAAI,CAAA;;;kCAGmB,MAAA,IAAI,CAAC,KAAK,0CAAE,UAAU;;;;;;;;sDAQF,MAAA,IAAI,CAAC,KAAK,0CAAE,UAAU;;;;;8BAK9C,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS,0CAAE,WAAW,EAAE;;;;;uBAK3C,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS;uBACrB,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS;sBACtB,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ;0BAChB,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY;;;;KAI7C,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6ET,CAAC;IACJ,CAAC;CACF,CAAA;AAlH6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAAmB;AADnC,WAAW;IADvB,aAAa,CAAC,cAAc,CAAC;GACjB,WAAW,CAmHvB;SAnHY,WAAW","sourcesContent":["import { css, html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { TileModel } from '../../models';\n\nimport './tile-stats';\n\n@customElement('account-tile')\nexport class AccountTile extends LitElement {\n @property({ type: Object }) model?: TileModel;\n\n render() {\n return html`\n <div class=\"account-tile-main\">\n <div id=\"title\">\n <h1 class=\"truncated\">${this.model?.identifier}</h1>\n </div>\n\n <div class=\"account-info\">\n <div id=\"avatar-info\">\n <img\n id=\"avatar\"\n alt=\"patron-avatar\"\n src=\"https://archive.org/services/img/${this.model?.identifier}\"\n />\n </div>\n\n <span id=\"archivist-since\">\n Archivist since ${this.model?.dateAdded?.getFullYear()}\n </span>\n </div>\n\n <tile-stats\n .mediatype=${this.model?.mediatype}\n .itemCount=${this.model?.itemCount}\n .favCount=${this.model?.favCount}\n .commentCount=${this.model?.commentCount}\n >\n </tile-stats>\n </div>\n `;\n }\n\n static get styles() {\n return css`\n h1 {\n color: black;\n font-size: 16px;\n margin: 0;\n }\n\n span {\n font-size: 14px;\n color: #2c2c2c;\n margin: 0px;\n }\n\n .account-tile-main {\n background-color: #fcf5e6;\n border: 1px #2c2c2c;\n border-radius: 4px;\n box-shadow: 1px 1px 2px 0px;\n height: 100%;\n display: flex;\n flex-direction: column;\n text-align: center;\n width: 100%;\n }\n\n .account-info {\n flex-grow: 1;\n }\n\n #title {\n padding: 5px 5px 0px 5px;\n flex-shrink: 0;\n height: 40px;\n }\n\n .account-tile-main:hover > #title > .truncated {\n text-decoration: underline;\n }\n\n /** this is a workaround for Safari 15 where the hover effects are not working */\n #title:hover > .truncated {\n text-decoration: underline;\n }\n\n #avatar-info {\n margin-top: 5px;\n margin-bottom: 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n #avatar {\n background-position: 50% 50%;\n border-radius: 50%;\n width: 160px;\n height: 160px;\n box-shadow: 1px 1px 2px #888888;\n }\n\n #archivist-since {\n margin-bottom: 5px;\n height: 40px;\n }\n\n .truncated {\n flex: 1;\n min-width: 0; /* Important for long words! */\n -webkit-line-clamp: 2;\n text-overflow: ellipsis;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n word-wrap: break-word;\n line-height: 2rem;\n text-align: center;\n }\n `;\n }\n}\n"]}
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { msg } from '@lit/localize';
|
|
3
|
-
import { css, html, LitElement } from 'lit';
|
|
4
|
-
import { customElement, property } from 'lit/decorators.js';
|
|
5
|
-
import { collectionIcon } from '../../assets/img/icons/mediatype/collection';
|
|
6
|
-
let CollectionTile = class CollectionTile extends LitElement {
|
|
7
|
-
render() {
|
|
8
|
-
var _a, _b, _c;
|
|
9
|
-
return html `
|
|
10
|
-
<div id="container">
|
|
11
|
-
<div id="collection-image-title">
|
|
12
|
-
<div id="collection-title">${(_a = this.model) === null || _a === void 0 ? void 0 : _a.title}</div>
|
|
13
|
-
<div id="collection-image-container">
|
|
14
|
-
<div
|
|
15
|
-
id="collection-image"
|
|
16
|
-
style="background-image:url('https://archive.org/services/img/${(_b = this
|
|
17
|
-
.model) === null || _b === void 0 ? void 0 : _b.identifier}')"
|
|
18
|
-
></div>
|
|
19
|
-
</div>
|
|
20
|
-
</div>
|
|
21
|
-
<div id="item-count-container">
|
|
22
|
-
<div id="item-count-image-container">${collectionIcon}</div>
|
|
23
|
-
<div id="item-count-stacked-text">
|
|
24
|
-
<div id="item-count">${(_c = this.model) === null || _c === void 0 ? void 0 : _c.itemCount.toLocaleString()}</div>
|
|
25
|
-
<div id="items-text">${msg('items')}</div>
|
|
26
|
-
</div>
|
|
27
|
-
</div>
|
|
28
|
-
</div>
|
|
29
|
-
`;
|
|
30
|
-
}
|
|
31
|
-
static get styles() {
|
|
32
|
-
const cornerRadiusCss = css `var(--collectionTileCornerRadius, 4px)`;
|
|
33
|
-
return css `
|
|
34
|
-
#collection-image-container {
|
|
35
|
-
display: flex;
|
|
36
|
-
justify-content: center;
|
|
37
|
-
flex: 1;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
#collection-image {
|
|
41
|
-
width: 16rem;
|
|
42
|
-
height: 16rem;
|
|
43
|
-
border-radius: 0.8rem;
|
|
44
|
-
overflow: hidden;
|
|
45
|
-
box-shadow: 1px 1px 2px 0px;
|
|
46
|
-
object-fit: cover;
|
|
47
|
-
background-position: center;
|
|
48
|
-
background-size: cover;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
#item-count-image-container svg {
|
|
52
|
-
filter: invert(100%);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
#collection-image-title {
|
|
56
|
-
background-color: #666;
|
|
57
|
-
border: 1px solid #2c2c2c;
|
|
58
|
-
padding: 0.5rem;
|
|
59
|
-
border-top-left-radius: ${cornerRadiusCss};
|
|
60
|
-
border-top-right-radius: ${cornerRadiusCss};
|
|
61
|
-
display: flex;
|
|
62
|
-
flex-direction: column;
|
|
63
|
-
flex: 1;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
#collection-title {
|
|
67
|
-
font-weight: bold;
|
|
68
|
-
color: #fff;
|
|
69
|
-
font-size: 1.6rem;
|
|
70
|
-
text-align: center;
|
|
71
|
-
margin-bottom: 0.5rem;
|
|
72
|
-
overflow: hidden;
|
|
73
|
-
text-overflow: ellipsis;
|
|
74
|
-
display: -webkit-box;
|
|
75
|
-
-webkit-line-clamp: 2;
|
|
76
|
-
-webkit-box-orient: vertical;
|
|
77
|
-
line-height: 2rem;
|
|
78
|
-
height: 4rem;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
#container {
|
|
82
|
-
box-shadow: 1px 1px 2px 0px;
|
|
83
|
-
border-radius: ${cornerRadiusCss};
|
|
84
|
-
height: 100%;
|
|
85
|
-
display: flex;
|
|
86
|
-
flex-direction: column;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
#container:hover > #collection-image-title > #collection-title {
|
|
90
|
-
text-decoration: underline;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/* this is a workaround for Safari 15 where the hover effects are not working */
|
|
94
|
-
#collection-image-title:hover > #collection-title {
|
|
95
|
-
text-decoration: underline;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
#container:hover > #collection-image-title {
|
|
99
|
-
background-color: #757575;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
#item-count-container {
|
|
103
|
-
background-color: #444;
|
|
104
|
-
border-bottom: 1px solid #2c2c2c;
|
|
105
|
-
border-left: 1px solid #2c2c2c;
|
|
106
|
-
border-right: 1px solid #2c2c2c;
|
|
107
|
-
border-bottom-left-radius: ${cornerRadiusCss};
|
|
108
|
-
border-bottom-right-radius: ${cornerRadiusCss};
|
|
109
|
-
display: flex;
|
|
110
|
-
padding: 0rem 0.5rem;
|
|
111
|
-
height: 5.5rem;
|
|
112
|
-
align-items: center;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
#item-count-image-container {
|
|
116
|
-
margin-right: 0.5rem;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
#item-count-stacked-text {
|
|
120
|
-
display: flex;
|
|
121
|
-
align-items: baseline;
|
|
122
|
-
color: #fff;
|
|
123
|
-
}
|
|
124
|
-
#item-count-image-container svg {
|
|
125
|
-
height: 2.5rem;
|
|
126
|
-
align-items: baseline;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
#container:hover > #item-count-container {
|
|
130
|
-
background-color: #575757;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
#item-count {
|
|
134
|
-
font-size: 1.4rem;
|
|
135
|
-
font-weight: bold;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
#item-count-image {
|
|
139
|
-
width: 3rem;
|
|
140
|
-
height: 3rem;
|
|
141
|
-
margin-right: 1rem;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
#items-text {
|
|
145
|
-
font-size: 1.4rem;
|
|
146
|
-
font-weight: bold;
|
|
147
|
-
margin-left: 0.5rem;
|
|
148
|
-
}
|
|
149
|
-
`;
|
|
150
|
-
}
|
|
151
|
-
};
|
|
152
|
-
__decorate([
|
|
153
|
-
property({ type: Object })
|
|
154
|
-
], CollectionTile.prototype, "model", void 0);
|
|
155
|
-
CollectionTile = __decorate([
|
|
156
|
-
customElement('collection-tile')
|
|
157
|
-
], CollectionTile);
|
|
158
|
-
export { CollectionTile };
|
|
159
|
-
//# sourceMappingURL=collection-tile.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"collection-tile.js","sourceRoot":"","sources":["../../../../src/tiles/grid/collection-tile.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,GAAG,EAAkB,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAI7E,IAAa,cAAc,GAA3B,MAAa,cAAe,SAAQ,UAAU;IAG5C,MAAM;;QACJ,OAAO,IAAI,CAAA;;;uCAGwB,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK;;;;8EAIsB,MAAA,IAAI;aACjE,KAAK,0CAAE,UAAU;;;;;iDAKe,cAAc;;mCAE5B,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS,CAAC,cAAc,EAAE;mCACtC,GAAG,CAAC,OAAO,CAAC;;;;KAI1C,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,MAAM,eAAe,GAAG,GAAG,CAAA,wCAAwC,CAAC;QAEpE,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;kCA0BoB,eAAe;mCACd,eAAe;;;;;;;;;;;;;;;;;;;;;;;yBAuBzB,eAAe;;;;;;;;;;;;;;;;;;;;;;;;qCAwBH,eAAe;sCACd,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAyChD,CAAC;IACJ,CAAC;CACF,CAAA;AAnJ6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAAmB;AADnC,cAAc;IAD1B,aAAa,CAAC,iBAAiB,CAAC;GACpB,cAAc,CAoJ1B;SApJY,cAAc","sourcesContent":["import { msg } from '@lit/localize';\nimport { css, CSSResultGroup, html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { collectionIcon } from '../../assets/img/icons/mediatype/collection';\nimport { TileModel } from '../../models';\n\n@customElement('collection-tile')\nexport class CollectionTile extends LitElement {\n @property({ type: Object }) model?: TileModel;\n\n render() {\n return html`\n <div id=\"container\">\n <div id=\"collection-image-title\">\n <div id=\"collection-title\">${this.model?.title}</div>\n <div id=\"collection-image-container\">\n <div\n id=\"collection-image\"\n style=\"background-image:url('https://archive.org/services/img/${this\n .model?.identifier}')\"\n ></div>\n </div>\n </div>\n <div id=\"item-count-container\">\n <div id=\"item-count-image-container\">${collectionIcon}</div>\n <div id=\"item-count-stacked-text\">\n <div id=\"item-count\">${this.model?.itemCount.toLocaleString()}</div>\n <div id=\"items-text\">${msg('items')}</div>\n </div>\n </div>\n </div>\n `;\n }\n\n static get styles(): CSSResultGroup {\n const cornerRadiusCss = css`var(--collectionTileCornerRadius, 4px)`;\n\n return css`\n #collection-image-container {\n display: flex;\n justify-content: center;\n flex: 1;\n }\n\n #collection-image {\n width: 16rem;\n height: 16rem;\n border-radius: 0.8rem;\n overflow: hidden;\n box-shadow: 1px 1px 2px 0px;\n object-fit: cover;\n background-position: center;\n background-size: cover;\n }\n\n #item-count-image-container svg {\n filter: invert(100%);\n }\n\n #collection-image-title {\n background-color: #666;\n border: 1px solid #2c2c2c;\n padding: 0.5rem;\n border-top-left-radius: ${cornerRadiusCss};\n border-top-right-radius: ${cornerRadiusCss};\n display: flex;\n flex-direction: column;\n flex: 1;\n }\n\n #collection-title {\n font-weight: bold;\n color: #fff;\n font-size: 1.6rem;\n text-align: center;\n margin-bottom: 0.5rem;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n line-height: 2rem;\n height: 4rem;\n }\n\n #container {\n box-shadow: 1px 1px 2px 0px;\n border-radius: ${cornerRadiusCss};\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n #container:hover > #collection-image-title > #collection-title {\n text-decoration: underline;\n }\n\n /* this is a workaround for Safari 15 where the hover effects are not working */\n #collection-image-title:hover > #collection-title {\n text-decoration: underline;\n }\n\n #container:hover > #collection-image-title {\n background-color: #757575;\n }\n\n #item-count-container {\n background-color: #444;\n border-bottom: 1px solid #2c2c2c;\n border-left: 1px solid #2c2c2c;\n border-right: 1px solid #2c2c2c;\n border-bottom-left-radius: ${cornerRadiusCss};\n border-bottom-right-radius: ${cornerRadiusCss};\n display: flex;\n padding: 0rem 0.5rem;\n height: 5.5rem;\n align-items: center;\n }\n\n #item-count-image-container {\n margin-right: 0.5rem;\n }\n\n #item-count-stacked-text {\n display: flex;\n align-items: baseline;\n color: #fff;\n }\n #item-count-image-container svg {\n height: 2.5rem;\n align-items: baseline;\n }\n\n #container:hover > #item-count-container {\n background-color: #575757;\n }\n\n #item-count {\n font-size: 1.4rem;\n font-weight: bold;\n }\n\n #item-count-image {\n width: 3rem;\n height: 3rem;\n margin-right: 1rem;\n }\n\n #items-text {\n font-size: 1.4rem;\n font-weight: bold;\n margin-left: 0.5rem;\n }\n `;\n }\n}\n"]}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { CSSResultGroup, LitElement } from 'lit';
|
|
2
|
-
import { SortParam } from '@internetarchive/search-service';
|
|
3
|
-
import { TileModel } from '../../models';
|
|
4
|
-
import '../mediatype-icon';
|
|
5
|
-
import '../item-image';
|
|
6
|
-
import './tile-stats';
|
|
7
|
-
export declare class ItemTile extends LitElement {
|
|
8
|
-
model?: TileModel;
|
|
9
|
-
baseImageUrl?: string;
|
|
10
|
-
sortParam?: SortParam;
|
|
11
|
-
render(): import("lit-html").TemplateResult<1>;
|
|
12
|
-
private get doesSortedByDate();
|
|
13
|
-
private get sortedDateInfoTemplate();
|
|
14
|
-
private get creatorTemplate();
|
|
15
|
-
static get styles(): CSSResultGroup;
|
|
16
|
-
}
|