@internetarchive/collection-browser 2.22.1 → 3.0.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.
Files changed (71) hide show
  1. package/.editorconfig +29 -29
  2. package/.github/workflows/ci.yml +27 -27
  3. package/.github/workflows/gh-pages-main.yml +39 -39
  4. package/.github/workflows/npm-publish.yml +39 -39
  5. package/.github/workflows/pr-preview.yml +38 -38
  6. package/.husky/pre-commit +4 -4
  7. package/.prettierignore +1 -1
  8. package/LICENSE +661 -661
  9. package/README.md +83 -83
  10. package/dist/src/collection-browser.d.ts +1 -2
  11. package/dist/src/collection-browser.js +681 -687
  12. package/dist/src/collection-browser.js.map +1 -1
  13. package/dist/src/collection-facets/facet-row.js +130 -130
  14. package/dist/src/collection-facets/facet-row.js.map +1 -1
  15. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +75 -75
  16. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js.map +1 -1
  17. package/dist/src/collection-facets.js +263 -263
  18. package/dist/src/collection-facets.js.map +1 -1
  19. package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
  20. package/dist/src/data-source/collection-browser-query-state.js.map +1 -1
  21. package/dist/src/data-source/models.js.map +1 -1
  22. package/dist/src/models.js.map +1 -1
  23. package/dist/src/restoration-state-handler.js.map +1 -1
  24. package/dist/src/tiles/base-tile-component.js.map +1 -1
  25. package/dist/src/tiles/grid/item-tile.js +139 -139
  26. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  27. package/dist/src/tiles/hover/hover-pane-controller.js +21 -21
  28. package/dist/src/tiles/hover/hover-pane-controller.js.map +1 -1
  29. package/dist/src/tiles/hover/tile-hover-pane.js +108 -108
  30. package/dist/src/tiles/hover/tile-hover-pane.js.map +1 -1
  31. package/dist/src/tiles/list/tile-list-compact-header.js +45 -45
  32. package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -1
  33. package/dist/src/tiles/list/tile-list-compact.js +97 -97
  34. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  35. package/dist/src/tiles/list/tile-list.js +289 -289
  36. package/dist/src/tiles/list/tile-list.js.map +1 -1
  37. package/dist/src/tiles/tile-dispatcher.js +200 -200
  38. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  39. package/dist/src/tiles/tile-display-value-provider.js.map +1 -1
  40. package/dist/test/collection-browser.test.js +183 -197
  41. package/dist/test/collection-browser.test.js.map +1 -1
  42. package/dist/test/restoration-state-handler.test.js.map +1 -1
  43. package/eslint.config.mjs +53 -53
  44. package/index.html +24 -24
  45. package/local.archive.org.cert +86 -86
  46. package/local.archive.org.key +27 -27
  47. package/package.json +117 -117
  48. package/renovate.json +6 -6
  49. package/src/collection-browser.ts +2775 -2779
  50. package/src/collection-facets/facet-row.ts +282 -282
  51. package/src/collection-facets/smart-facets/smart-facet-bar.ts +437 -437
  52. package/src/collection-facets.ts +990 -990
  53. package/src/data-source/collection-browser-data-source.ts +1390 -1390
  54. package/src/data-source/collection-browser-query-state.ts +63 -63
  55. package/src/data-source/models.ts +43 -43
  56. package/src/models.ts +870 -870
  57. package/src/restoration-state-handler.ts +544 -544
  58. package/src/tiles/base-tile-component.ts +53 -53
  59. package/src/tiles/grid/item-tile.ts +339 -339
  60. package/src/tiles/hover/hover-pane-controller.ts +517 -517
  61. package/src/tiles/hover/tile-hover-pane.ts +180 -180
  62. package/src/tiles/list/tile-list-compact-header.ts +86 -86
  63. package/src/tiles/list/tile-list-compact.ts +236 -236
  64. package/src/tiles/list/tile-list.ts +688 -688
  65. package/src/tiles/tile-dispatcher.ts +486 -486
  66. package/src/tiles/tile-display-value-provider.ts +124 -124
  67. package/test/collection-browser.test.ts +2340 -2359
  68. package/test/restoration-state-handler.test.ts +510 -510
  69. package/tsconfig.json +20 -20
  70. package/web-dev-server.config.mjs +30 -30
  71. package/web-test-runner.config.mjs +41 -41
@@ -10,23 +10,23 @@ let TileHoverPane = class TileHoverPane extends LitElement {
10
10
  this.suppressBlurring = false;
11
11
  }
12
12
  render() {
13
- return html `
14
- <div id="container">
15
- ${this.headerTemplate}
16
- <div id="hover-tile-list">
17
- <tile-list
18
- .model=${this.model}
19
- .baseNavigationUrl=${this.baseNavigationUrl}
20
- .baseImageUrl=${this.baseImageUrl}
21
- .loggedIn=${this.loggedIn}
22
- .suppressBlurring=${this.suppressBlurring}
23
- .sortParam=${this.sortParam}
24
- .collectionTitles=${this.collectionTitles}
25
- .mobileBreakpoint=${this.mobileBreakpoint}
26
- .currentWidth=${this.currentWidth}
27
- ></tile-list>
28
- </div>
29
- </div>
13
+ return html `
14
+ <div id="container">
15
+ ${this.headerTemplate}
16
+ <div id="hover-tile-list">
17
+ <tile-list
18
+ .model=${this.model}
19
+ .baseNavigationUrl=${this.baseNavigationUrl}
20
+ .baseImageUrl=${this.baseImageUrl}
21
+ .loggedIn=${this.loggedIn}
22
+ .suppressBlurring=${this.suppressBlurring}
23
+ .sortParam=${this.sortParam}
24
+ .collectionTitles=${this.collectionTitles}
25
+ .mobileBreakpoint=${this.mobileBreakpoint}
26
+ .currentWidth=${this.currentWidth}
27
+ ></tile-list>
28
+ </div>
29
+ </div>
30
30
  `;
31
31
  }
32
32
  get headerTemplate() {
@@ -48,103 +48,103 @@ let TileHoverPane = class TileHoverPane extends LitElement {
48
48
  // let's not render that
49
49
  if (!collectionIdentifier)
50
50
  return nothing;
51
- return html `
52
- <div id="list-line-header">
53
- <a href="${this.baseNavigationUrl}/details/${collectionIdentifier}">
54
- <img
55
- src="${this.baseImageUrl}/services/img/${collectionIdentifier}"
56
- alt=""
57
- /><span>${collectionTitle}</span>
58
- </a>
59
- </div>
51
+ return html `
52
+ <div id="list-line-header">
53
+ <a href="${this.baseNavigationUrl}/details/${collectionIdentifier}">
54
+ <img
55
+ src="${this.baseImageUrl}/services/img/${collectionIdentifier}"
56
+ alt=""
57
+ /><span>${collectionTitle}</span>
58
+ </a>
59
+ </div>
60
60
  `;
61
61
  }
62
62
  static get styles() {
63
63
  const hoverPaneHeaderBGColor = css `var(--hoverPaneHeaderBGColor, #edf0ff)`;
64
64
  const iaLinkColor = css `var(--ia-theme-link-color, #4b64ff)`;
65
65
  const iaFontFamily = css `var(--ia-theme-base-font-family, "Helvetica Neue", Helvetica, Arial, sans-serif);`;
66
- return css `
67
- :host {
68
- margin: 0;
69
- border: 0;
70
- padding: 0;
71
- overflow: visible;
72
- color: inherit;
73
- background: none;
74
- visibility: hidden;
75
- opacity: 0;
76
- transform: translateY(8px);
77
- transition:
78
- opacity 0.1s ease-in,
79
- transform 0.1s ease-in;
80
- --image-width: auto;
81
- }
82
-
83
- :host(.visible) {
84
- visibility: visible;
85
- }
86
-
87
- :host(.fade-in) {
88
- opacity: 1;
89
- transform: translateY(0);
90
- }
91
-
92
- @media (prefers-reduced-motion: reduce) {
93
- :host {
94
- transition-duration: 0.001s !important; /* Imperceptibly fast */
95
- }
96
- }
97
-
98
- #container {
99
- width: max-content;
100
- max-width: min(45vw, 600px);
101
- border: 1px solid #ddd;
102
- border-radius: 4px;
103
- box-shadow: 4px 4px 8px 0 rgba(0, 0, 0, 0.8);
104
- background: white;
105
- }
106
-
107
- @media screen and (max-width: 600px) {
108
- #container {
109
- max-width: 80vw;
110
- }
111
- }
112
-
113
- /* main tile-list container */
114
- #hover-tile-list {
115
- padding: 10px;
116
- }
117
-
118
- /* header on hover panel to show collection icon and title */
119
- #list-line-header {
120
- background: ${hoverPaneHeaderBGColor};
121
- }
122
- #list-line-header a {
123
- display: flex;
124
- align-items: center;
125
- column-gap: 5px;
126
- height: 3.4rem;
127
- padding: 0 10px;
128
- border-radius: 4px 4px 0 0;
129
- width: fit-content;
130
- font-size: 1.4rem;
131
- color: ${iaLinkColor};
132
- font-family: ${iaFontFamily};
133
- text-decoration: none;
134
- width: auto;
135
- }
136
- #list-line-header a span {
137
- white-space: nowrap;
138
- overflow: hidden;
139
- text-overflow: ellipsis;
140
- }
141
- #list-line-header a:hover {
142
- text-decoration: underline;
143
- }
144
- #list-line-header a img {
145
- width: 30px;
146
- max-height: 30px;
147
- }
66
+ return css `
67
+ :host {
68
+ margin: 0;
69
+ border: 0;
70
+ padding: 0;
71
+ overflow: visible;
72
+ color: inherit;
73
+ background: none;
74
+ visibility: hidden;
75
+ opacity: 0;
76
+ transform: translateY(8px);
77
+ transition:
78
+ opacity 0.1s ease-in,
79
+ transform 0.1s ease-in;
80
+ --image-width: auto;
81
+ }
82
+
83
+ :host(.visible) {
84
+ visibility: visible;
85
+ }
86
+
87
+ :host(.fade-in) {
88
+ opacity: 1;
89
+ transform: translateY(0);
90
+ }
91
+
92
+ @media (prefers-reduced-motion: reduce) {
93
+ :host {
94
+ transition-duration: 0.001s !important; /* Imperceptibly fast */
95
+ }
96
+ }
97
+
98
+ #container {
99
+ width: max-content;
100
+ max-width: min(45vw, 600px);
101
+ border: 1px solid #ddd;
102
+ border-radius: 4px;
103
+ box-shadow: 4px 4px 8px 0 rgba(0, 0, 0, 0.8);
104
+ background: white;
105
+ }
106
+
107
+ @media screen and (max-width: 600px) {
108
+ #container {
109
+ max-width: 80vw;
110
+ }
111
+ }
112
+
113
+ /* main tile-list container */
114
+ #hover-tile-list {
115
+ padding: 10px;
116
+ }
117
+
118
+ /* header on hover panel to show collection icon and title */
119
+ #list-line-header {
120
+ background: ${hoverPaneHeaderBGColor};
121
+ }
122
+ #list-line-header a {
123
+ display: flex;
124
+ align-items: center;
125
+ column-gap: 5px;
126
+ height: 3.4rem;
127
+ padding: 0 10px;
128
+ border-radius: 4px 4px 0 0;
129
+ width: fit-content;
130
+ font-size: 1.4rem;
131
+ color: ${iaLinkColor};
132
+ font-family: ${iaFontFamily};
133
+ text-decoration: none;
134
+ width: auto;
135
+ }
136
+ #list-line-header a span {
137
+ white-space: nowrap;
138
+ overflow: hidden;
139
+ text-overflow: ellipsis;
140
+ }
141
+ #list-line-header a:hover {
142
+ text-decoration: underline;
143
+ }
144
+ #list-line-header a img {
145
+ width: 30px;
146
+ max-height: 30px;
147
+ }
148
148
  `;
149
149
  }
150
150
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tile-hover-pane.js","sourceRoot":"","sources":["../../../../src/tiles/hover/tile-hover-pane.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SortParam } from '@internetarchive/search-service';\nimport {\n css,\n CSSResultGroup,\n html,\n LitElement,\n nothing,\n TemplateResult,\n} from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { suppressedCollections, type TileModel } from '../../models';\nimport type { CollectionTitles } from '../../data-source/models';\nimport '../list/tile-list';\n\n@customElement('tile-hover-pane')\nexport class TileHoverPane extends LitElement {\n @property({ type: Object }) model?: TileModel;\n\n @property({ type: String }) baseNavigationUrl?: string;\n\n @property({ type: String }) baseImageUrl?: string;\n\n @property({ type: Boolean }) loggedIn: boolean = false;\n\n @property({ type: Boolean }) suppressBlurring: boolean = false;\n\n @property({ type: Object }) sortParam?: SortParam;\n\n @property({ type: Number }) mobileBreakpoint?: number;\n\n @property({ type: Number }) currentWidth?: number;\n\n @property({ type: Object })\n collectionTitles?: CollectionTitles;\n\n protected render(): TemplateResult {\n return html`\n <div id=\"container\">\n ${this.headerTemplate}\n <div id=\"hover-tile-list\">\n <tile-list\n .model=${this.model}\n .baseNavigationUrl=${this.baseNavigationUrl}\n .baseImageUrl=${this.baseImageUrl}\n .loggedIn=${this.loggedIn}\n .suppressBlurring=${this.suppressBlurring}\n .sortParam=${this.sortParam}\n .collectionTitles=${this.collectionTitles}\n .mobileBreakpoint=${this.mobileBreakpoint}\n .currentWidth=${this.currentWidth}\n ></tile-list>\n </div>\n </div>\n `;\n }\n\n private get headerTemplate(): TemplateResult | typeof nothing {\n // early return if item does't have parent collection\n if (this.model?.collections.length === 0) return nothing;\n\n let collectionTitle = '';\n let collectionIdentifier = '';\n\n for (const collection of this.model?.collections || []) {\n if (\n !suppressedCollections[collection] &&\n !collection.startsWith('fav-')\n ) {\n collectionTitle = this.collectionTitles?.get(collection) ?? collection;\n collectionIdentifier = collection;\n break;\n }\n }\n\n // sometimes item does have collections but they are in suppressed or favorite list,\n // let's not render that\n if (!collectionIdentifier) return nothing;\n\n return html`\n <div id=\"list-line-header\">\n <a href=\"${this.baseNavigationUrl}/details/${collectionIdentifier}\">\n <img\n src=\"${this.baseImageUrl}/services/img/${collectionIdentifier}\"\n alt=\"\"\n /><span>${collectionTitle}</span>\n </a>\n </div>\n `;\n }\n\n static get styles(): CSSResultGroup {\n const hoverPaneHeaderBGColor = css`var(--hoverPaneHeaderBGColor, #edf0ff)`;\n const iaLinkColor = css`var(--ia-theme-link-color, #4b64ff)`;\n const iaFontFamily = css`var(--ia-theme-base-font-family, \"Helvetica Neue\", Helvetica, Arial, sans-serif);`;\n\n return css`\n :host {\n margin: 0;\n border: 0;\n padding: 0;\n overflow: visible;\n color: inherit;\n background: none;\n visibility: hidden;\n opacity: 0;\n transform: translateY(8px);\n transition:\n opacity 0.1s ease-in,\n transform 0.1s ease-in;\n --image-width: auto;\n }\n\n :host(.visible) {\n visibility: visible;\n }\n\n :host(.fade-in) {\n opacity: 1;\n transform: translateY(0);\n }\n\n @media (prefers-reduced-motion: reduce) {\n :host {\n transition-duration: 0.001s !important; /* Imperceptibly fast */\n }\n }\n\n #container {\n width: max-content;\n max-width: min(45vw, 600px);\n border: 1px solid #ddd;\n border-radius: 4px;\n box-shadow: 4px 4px 8px 0 rgba(0, 0, 0, 0.8);\n background: white;\n }\n\n @media screen and (max-width: 600px) {\n #container {\n max-width: 80vw;\n }\n }\n\n /* main tile-list container */\n #hover-tile-list {\n padding: 10px;\n }\n\n /* header on hover panel to show collection icon and title */\n #list-line-header {\n background: ${hoverPaneHeaderBGColor};\n }\n #list-line-header a {\n display: flex;\n align-items: center;\n column-gap: 5px;\n height: 3.4rem;\n padding: 0 10px;\n border-radius: 4px 4px 0 0;\n width: fit-content;\n font-size: 1.4rem;\n color: ${iaLinkColor};\n font-family: ${iaFontFamily};\n text-decoration: none;\n width: auto;\n }\n #list-line-header a span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n #list-line-header a:hover {\n text-decoration: underline;\n }\n #list-line-header a img {\n width: 30px;\n max-height: 30px;\n }\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"tile-hover-pane.js","sourceRoot":"","sources":["../../../../src/tiles/hover/tile-hover-pane.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SortParam } from '@internetarchive/search-service';\r\nimport {\r\n css,\r\n CSSResultGroup,\r\n html,\r\n LitElement,\r\n nothing,\r\n TemplateResult,\r\n} from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { suppressedCollections, type TileModel } from '../../models';\r\nimport type { CollectionTitles } from '../../data-source/models';\r\nimport '../list/tile-list';\r\n\r\n@customElement('tile-hover-pane')\r\nexport class TileHoverPane extends LitElement {\r\n @property({ type: Object }) model?: TileModel;\r\n\r\n @property({ type: String }) baseNavigationUrl?: string;\r\n\r\n @property({ type: String }) baseImageUrl?: string;\r\n\r\n @property({ type: Boolean }) loggedIn: boolean = false;\r\n\r\n @property({ type: Boolean }) suppressBlurring: boolean = false;\r\n\r\n @property({ type: Object }) sortParam?: SortParam;\r\n\r\n @property({ type: Number }) mobileBreakpoint?: number;\r\n\r\n @property({ type: Number }) currentWidth?: number;\r\n\r\n @property({ type: Object })\r\n collectionTitles?: CollectionTitles;\r\n\r\n protected render(): TemplateResult {\r\n return html`\r\n <div id=\"container\">\r\n ${this.headerTemplate}\r\n <div id=\"hover-tile-list\">\r\n <tile-list\r\n .model=${this.model}\r\n .baseNavigationUrl=${this.baseNavigationUrl}\r\n .baseImageUrl=${this.baseImageUrl}\r\n .loggedIn=${this.loggedIn}\r\n .suppressBlurring=${this.suppressBlurring}\r\n .sortParam=${this.sortParam}\r\n .collectionTitles=${this.collectionTitles}\r\n .mobileBreakpoint=${this.mobileBreakpoint}\r\n .currentWidth=${this.currentWidth}\r\n ></tile-list>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n\r\n private get headerTemplate(): TemplateResult | typeof nothing {\r\n // early return if item does't have parent collection\r\n if (this.model?.collections.length === 0) return nothing;\r\n\r\n let collectionTitle = '';\r\n let collectionIdentifier = '';\r\n\r\n for (const collection of this.model?.collections || []) {\r\n if (\r\n !suppressedCollections[collection] &&\r\n !collection.startsWith('fav-')\r\n ) {\r\n collectionTitle = this.collectionTitles?.get(collection) ?? collection;\r\n collectionIdentifier = collection;\r\n break;\r\n }\r\n }\r\n\r\n // sometimes item does have collections but they are in suppressed or favorite list,\r\n // let's not render that\r\n if (!collectionIdentifier) return nothing;\r\n\r\n return html`\r\n <div id=\"list-line-header\">\r\n <a href=\"${this.baseNavigationUrl}/details/${collectionIdentifier}\">\r\n <img\r\n src=\"${this.baseImageUrl}/services/img/${collectionIdentifier}\"\r\n alt=\"\"\r\n /><span>${collectionTitle}</span>\r\n </a>\r\n </div>\r\n `;\r\n }\r\n\r\n static get styles(): CSSResultGroup {\r\n const hoverPaneHeaderBGColor = css`var(--hoverPaneHeaderBGColor, #edf0ff)`;\r\n const iaLinkColor = css`var(--ia-theme-link-color, #4b64ff)`;\r\n const iaFontFamily = css`var(--ia-theme-base-font-family, \"Helvetica Neue\", Helvetica, Arial, sans-serif);`;\r\n\r\n return css`\r\n :host {\r\n margin: 0;\r\n border: 0;\r\n padding: 0;\r\n overflow: visible;\r\n color: inherit;\r\n background: none;\r\n visibility: hidden;\r\n opacity: 0;\r\n transform: translateY(8px);\r\n transition:\r\n opacity 0.1s ease-in,\r\n transform 0.1s ease-in;\r\n --image-width: auto;\r\n }\r\n\r\n :host(.visible) {\r\n visibility: visible;\r\n }\r\n\r\n :host(.fade-in) {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n :host {\r\n transition-duration: 0.001s !important; /* Imperceptibly fast */\r\n }\r\n }\r\n\r\n #container {\r\n width: max-content;\r\n max-width: min(45vw, 600px);\r\n border: 1px solid #ddd;\r\n border-radius: 4px;\r\n box-shadow: 4px 4px 8px 0 rgba(0, 0, 0, 0.8);\r\n background: white;\r\n }\r\n\r\n @media screen and (max-width: 600px) {\r\n #container {\r\n max-width: 80vw;\r\n }\r\n }\r\n\r\n /* main tile-list container */\r\n #hover-tile-list {\r\n padding: 10px;\r\n }\r\n\r\n /* header on hover panel to show collection icon and title */\r\n #list-line-header {\r\n background: ${hoverPaneHeaderBGColor};\r\n }\r\n #list-line-header a {\r\n display: flex;\r\n align-items: center;\r\n column-gap: 5px;\r\n height: 3.4rem;\r\n padding: 0 10px;\r\n border-radius: 4px 4px 0 0;\r\n width: fit-content;\r\n font-size: 1.4rem;\r\n color: ${iaLinkColor};\r\n font-family: ${iaFontFamily};\r\n text-decoration: none;\r\n width: auto;\r\n }\r\n #list-line-header a span {\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n #list-line-header a:hover {\r\n text-decoration: underline;\r\n }\r\n #list-line-header a img {\r\n width: 30px;\r\n max-height: 30px;\r\n }\r\n `;\r\n }\r\n}\r\n"]}
@@ -19,17 +19,17 @@ let TileListCompactHeader = class TileListCompactHeader extends BaseTileComponen
19
19
  * - suppressBlurring = false;
20
20
  */
21
21
  render() {
22
- return html `
23
- <div id="list-line-header" class="${this.classSize}">
24
- <div id="thumb"></div>
25
- <div id="title">${msg('Title')}</div>
26
- <div id="creator">${msg('Creator')}</div>
27
- <div id="date">
28
- ${this.displayValueProvider.dateLabel || msg('Published')}
29
- </div>
30
- <div id="icon">${msg('Type')}</div>
31
- <div id="views">${msg('Views')}</div>
32
- </div>
22
+ return html `
23
+ <div id="list-line-header" class="${this.classSize}">
24
+ <div id="thumb"></div>
25
+ <div id="title">${msg('Title')}</div>
26
+ <div id="creator">${msg('Creator')}</div>
27
+ <div id="date">
28
+ ${this.displayValueProvider.dateLabel || msg('Published')}
29
+ </div>
30
+ <div id="icon">${msg('Type')}</div>
31
+ <div id="views">${msg('Views')}</div>
32
+ </div>
33
33
  `;
34
34
  }
35
35
  get classSize() {
@@ -41,40 +41,40 @@ let TileListCompactHeader = class TileListCompactHeader extends BaseTileComponen
41
41
  return 'desktop';
42
42
  }
43
43
  static get styles() {
44
- return css `
45
- html {
46
- font-size: unset;
47
- }
48
-
49
- div {
50
- font-size: 14px;
51
- font-weight: bold;
52
- line-height: 20px;
53
- }
54
-
55
- .mobile #views {
56
- display: none;
57
- }
58
-
59
- #views {
60
- text-align: right;
61
- padding-right: 8px;
62
- }
63
-
64
- #list-line-header {
65
- display: grid;
66
- column-gap: 10px;
67
- align-items: flex-end;
68
- padding-bottom: 2px;
69
- }
70
-
71
- #list-line-header.mobile {
72
- grid-template-columns: 36px 3fr 2fr 68px 35px;
73
- }
74
-
75
- #list-line-header.desktop {
76
- grid-template-columns: 51px 3fr 2fr 95px 30px 60px;
77
- }
44
+ return css `
45
+ html {
46
+ font-size: unset;
47
+ }
48
+
49
+ div {
50
+ font-size: 14px;
51
+ font-weight: bold;
52
+ line-height: 20px;
53
+ }
54
+
55
+ .mobile #views {
56
+ display: none;
57
+ }
58
+
59
+ #views {
60
+ text-align: right;
61
+ padding-right: 8px;
62
+ }
63
+
64
+ #list-line-header {
65
+ display: grid;
66
+ column-gap: 10px;
67
+ align-items: flex-end;
68
+ padding-bottom: 2px;
69
+ }
70
+
71
+ #list-line-header.mobile {
72
+ grid-template-columns: 36px 3fr 2fr 68px 35px;
73
+ }
74
+
75
+ #list-line-header.desktop {
76
+ grid-template-columns: 51px 3fr 2fr 95px 30px 60px;
77
+ }
78
78
  `;
79
79
  }
80
80
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tile-list-compact-header.js","sourceRoot":"","sources":["../../../../src/tiles/list/tile-list-compact-header.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGpD,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,iBAAiB;IAC1D;;;;;;;;;;;;;OAaG;IAEH,MAAM;QACJ,OAAO,IAAI,CAAA;0CAC2B,IAAI,CAAC,SAAS;;0BAE9B,GAAG,CAAC,OAAO,CAAC;4BACV,GAAG,CAAC,SAAS,CAAC;;YAE9B,IAAI,CAAC,oBAAoB,CAAC,SAAS,IAAI,GAAG,CAAC,WAAW,CAAC;;yBAE1C,GAAG,CAAC,MAAM,CAAC;0BACV,GAAG,CAAC,OAAO,CAAC;;KAEjC,CAAC;IACJ,CAAC;IAED,IAAY,SAAS;QACnB,IACE,IAAI,CAAC,gBAAgB;YACrB,IAAI,CAAC,YAAY;YACjB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,EACzC,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkCT,CAAC;IACJ,CAAC;CACF,CAAA;AA/EY,qBAAqB;IADjC,aAAa,CAAC,0BAA0B,CAAC;GAC7B,qBAAqB,CA+EjC","sourcesContent":["import { css, html } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport { msg } from '@lit/localize';\nimport { BaseTileComponent } from '../base-tile-component';\n\n@customElement('tile-list-compact-header')\nexport class TileListCompactHeader extends BaseTileComponent {\n /*\n * Reactive properties inherited from BaseTileComponent:\n * - model?: TileModel;\n * - currentWidth?: number;\n * - currentHeight?: number;\n * - baseNavigationUrl?: string;\n * - baseImageUrl?: string;\n * - collectionPagePath?: string;\n * - sortParam: SortParam | null = null;\n * - creatorFilter?: string;\n * - mobileBreakpoint?: number;\n * - loggedIn = false;\n * - suppressBlurring = false;\n */\n\n render() {\n return html`\n <div id=\"list-line-header\" class=\"${this.classSize}\">\n <div id=\"thumb\"></div>\n <div id=\"title\">${msg('Title')}</div>\n <div id=\"creator\">${msg('Creator')}</div>\n <div id=\"date\">\n ${this.displayValueProvider.dateLabel || msg('Published')}\n </div>\n <div id=\"icon\">${msg('Type')}</div>\n <div id=\"views\">${msg('Views')}</div>\n </div>\n `;\n }\n\n private get classSize(): string {\n if (\n this.mobileBreakpoint &&\n this.currentWidth &&\n this.currentWidth < this.mobileBreakpoint\n ) {\n return 'mobile';\n }\n return 'desktop';\n }\n\n static get styles() {\n return css`\n html {\n font-size: unset;\n }\n\n div {\n font-size: 14px;\n font-weight: bold;\n line-height: 20px;\n }\n\n .mobile #views {\n display: none;\n }\n\n #views {\n text-align: right;\n padding-right: 8px;\n }\n\n #list-line-header {\n display: grid;\n column-gap: 10px;\n align-items: flex-end;\n padding-bottom: 2px;\n }\n\n #list-line-header.mobile {\n grid-template-columns: 36px 3fr 2fr 68px 35px;\n }\n\n #list-line-header.desktop {\n grid-template-columns: 51px 3fr 2fr 95px 30px 60px;\n }\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"tile-list-compact-header.js","sourceRoot":"","sources":["../../../../src/tiles/list/tile-list-compact-header.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGpD,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,iBAAiB;IAC1D;;;;;;;;;;;;;OAaG;IAEH,MAAM;QACJ,OAAO,IAAI,CAAA;0CAC2B,IAAI,CAAC,SAAS;;0BAE9B,GAAG,CAAC,OAAO,CAAC;4BACV,GAAG,CAAC,SAAS,CAAC;;YAE9B,IAAI,CAAC,oBAAoB,CAAC,SAAS,IAAI,GAAG,CAAC,WAAW,CAAC;;yBAE1C,GAAG,CAAC,MAAM,CAAC;0BACV,GAAG,CAAC,OAAO,CAAC;;KAEjC,CAAC;IACJ,CAAC;IAED,IAAY,SAAS;QACnB,IACE,IAAI,CAAC,gBAAgB;YACrB,IAAI,CAAC,YAAY;YACjB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,EACzC,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkCT,CAAC;IACJ,CAAC;CACF,CAAA;AA/EY,qBAAqB;IADjC,aAAa,CAAC,0BAA0B,CAAC;GAC7B,qBAAqB,CA+EjC","sourcesContent":["import { css, html } from 'lit';\r\nimport { customElement } from 'lit/decorators.js';\r\nimport { msg } from '@lit/localize';\r\nimport { BaseTileComponent } from '../base-tile-component';\r\n\r\n@customElement('tile-list-compact-header')\r\nexport class TileListCompactHeader extends BaseTileComponent {\r\n /*\r\n * Reactive properties inherited from BaseTileComponent:\r\n * - model?: TileModel;\r\n * - currentWidth?: number;\r\n * - currentHeight?: number;\r\n * - baseNavigationUrl?: string;\r\n * - baseImageUrl?: string;\r\n * - collectionPagePath?: string;\r\n * - sortParam: SortParam | null = null;\r\n * - creatorFilter?: string;\r\n * - mobileBreakpoint?: number;\r\n * - loggedIn = false;\r\n * - suppressBlurring = false;\r\n */\r\n\r\n render() {\r\n return html`\r\n <div id=\"list-line-header\" class=\"${this.classSize}\">\r\n <div id=\"thumb\"></div>\r\n <div id=\"title\">${msg('Title')}</div>\r\n <div id=\"creator\">${msg('Creator')}</div>\r\n <div id=\"date\">\r\n ${this.displayValueProvider.dateLabel || msg('Published')}\r\n </div>\r\n <div id=\"icon\">${msg('Type')}</div>\r\n <div id=\"views\">${msg('Views')}</div>\r\n </div>\r\n `;\r\n }\r\n\r\n private get classSize(): string {\r\n if (\r\n this.mobileBreakpoint &&\r\n this.currentWidth &&\r\n this.currentWidth < this.mobileBreakpoint\r\n ) {\r\n return 'mobile';\r\n }\r\n return 'desktop';\r\n }\r\n\r\n static get styles() {\r\n return css`\r\n html {\r\n font-size: unset;\r\n }\r\n\r\n div {\r\n font-size: 14px;\r\n font-weight: bold;\r\n line-height: 20px;\r\n }\r\n\r\n .mobile #views {\r\n display: none;\r\n }\r\n\r\n #views {\r\n text-align: right;\r\n padding-right: 8px;\r\n }\r\n\r\n #list-line-header {\r\n display: grid;\r\n column-gap: 10px;\r\n align-items: flex-end;\r\n padding-bottom: 2px;\r\n }\r\n\r\n #list-line-header.mobile {\r\n grid-template-columns: 36px 3fr 2fr 68px 35px;\r\n }\r\n\r\n #list-line-header.desktop {\r\n grid-template-columns: 51px 3fr 2fr 95px 30px 60px;\r\n }\r\n `;\r\n }\r\n}\r\n"]}
@@ -26,32 +26,32 @@ let TileListCompact = class TileListCompact extends BaseTileComponent {
26
26
  */
27
27
  render() {
28
28
  var _a, _b, _c, _d;
29
- return html `
30
- <div id="list-line" class="${this.classSize}">
31
- <image-block
32
- .model=${this.model}
33
- .baseImageUrl=${this.baseImageUrl}
34
- .isCompactTile=${true}
35
- .isListTile=${true}
36
- .viewSize=${this.classSize}
37
- .loggedIn=${this.loggedIn}
38
- .suppressBlurring=${this.suppressBlurring}
39
- >
40
- </image-block>
41
- <a href=${this.href} id="title"
42
- >${DOMPurify.sanitize((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.title) !== null && _b !== void 0 ? _b : '')}</a
43
- >
44
- <div id="creator">
29
+ return html `
30
+ <div id="list-line" class="${this.classSize}">
31
+ <image-block
32
+ .model=${this.model}
33
+ .baseImageUrl=${this.baseImageUrl}
34
+ .isCompactTile=${true}
35
+ .isListTile=${true}
36
+ .viewSize=${this.classSize}
37
+ .loggedIn=${this.loggedIn}
38
+ .suppressBlurring=${this.suppressBlurring}
39
+ >
40
+ </image-block>
41
+ <a href=${this.href} id="title"
42
+ >${DOMPurify.sanitize((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.title) !== null && _b !== void 0 ? _b : '')}</a
43
+ >
44
+ <div id="creator">
45
45
  ${((_c = this.model) === null || _c === void 0 ? void 0 : _c.mediatype) === 'account'
46
46
  ? this.displayValueProvider.accountLabel
47
- : this.creator}
48
- </div>
49
- <div id="date">${formatDate(this.date, this.dateFormatSize)}</div>
50
- <div id="icon">
51
- <tile-mediatype-icon .model=${this.model}> </tile-mediatype-icon>
52
- </div>
53
- <div id="views">${formatCount((_d = this.views) !== null && _d !== void 0 ? _d : 0, this.formatSize)}</div>
54
- </div>
47
+ : this.creator}
48
+ </div>
49
+ <div id="date">${formatDate(this.date, this.dateFormatSize)}</div>
50
+ <div id="icon">
51
+ <tile-mediatype-icon .model=${this.model}> </tile-mediatype-icon>
52
+ </div>
53
+ <div id="views">${formatCount((_d = this.views) !== null && _d !== void 0 ? _d : 0, this.formatSize)}</div>
54
+ </div>
55
55
  `;
56
56
  }
57
57
  get href() {
@@ -138,79 +138,79 @@ let TileListCompact = class TileListCompact extends BaseTileComponent {
138
138
  return ['date', 'reviewdate', 'addeddate', 'publicdate'].includes((_a = this.effectiveSort) === null || _a === void 0 ? void 0 : _a.field);
139
139
  }
140
140
  static get styles() {
141
- return css `
142
- html {
143
- font-size: unset;
144
- }
145
-
146
- div {
147
- font-size: 14px;
148
- }
149
-
150
- #list-line {
151
- display: grid;
152
- column-gap: 10px;
153
- border-top: 1px solid #ddd;
154
- align-items: center;
155
- line-height: 20px;
156
- padding-top: 5px;
157
- margin-bottom: -5px;
158
- }
159
-
160
- #list-line.mobile {
161
- grid-template-columns: 36px 3fr 2fr 68px 35px;
162
- }
163
-
164
- #list-line.desktop {
165
- grid-template-columns: 51px 3fr 2fr 95px 30px 60px;
166
- }
167
-
168
- #list-line:hover #title {
169
- text-decoration: underline;
170
- }
171
-
172
- #title {
173
- text-decoration: none;
174
- }
175
-
176
- #title:link {
177
- color: var(--ia-theme-link-color, #4b64ff);
178
- }
179
-
180
- #title,
181
- #creator {
182
- text-overflow: ellipsis;
183
- overflow: hidden;
184
- white-space: nowrap;
185
- }
186
-
187
- #icon {
188
- margin-left: 2px;
189
- }
190
-
191
- #views {
192
- text-align: right;
193
- padding-right: 8px;
194
- }
195
-
196
- .mobile #views {
197
- display: none;
198
- }
199
-
200
- .mobile tile-mediatype-icon {
201
- --iconHeight: 14px;
202
- --iconWidth: 14px;
203
- }
204
-
205
- .desktop #icon {
206
- --iconHeight: 20px;
207
- --iconWidth: 20px;
208
- }
209
-
210
- item-image {
211
- --imgHeight: 100%;
212
- --imgWidth: 100%;
213
- }
141
+ return css `
142
+ html {
143
+ font-size: unset;
144
+ }
145
+
146
+ div {
147
+ font-size: 14px;
148
+ }
149
+
150
+ #list-line {
151
+ display: grid;
152
+ column-gap: 10px;
153
+ border-top: 1px solid #ddd;
154
+ align-items: center;
155
+ line-height: 20px;
156
+ padding-top: 5px;
157
+ margin-bottom: -5px;
158
+ }
159
+
160
+ #list-line.mobile {
161
+ grid-template-columns: 36px 3fr 2fr 68px 35px;
162
+ }
163
+
164
+ #list-line.desktop {
165
+ grid-template-columns: 51px 3fr 2fr 95px 30px 60px;
166
+ }
167
+
168
+ #list-line:hover #title {
169
+ text-decoration: underline;
170
+ }
171
+
172
+ #title {
173
+ text-decoration: none;
174
+ }
175
+
176
+ #title:link {
177
+ color: var(--ia-theme-link-color, #4b64ff);
178
+ }
179
+
180
+ #title,
181
+ #creator {
182
+ text-overflow: ellipsis;
183
+ overflow: hidden;
184
+ white-space: nowrap;
185
+ }
186
+
187
+ #icon {
188
+ margin-left: 2px;
189
+ }
190
+
191
+ #views {
192
+ text-align: right;
193
+ padding-right: 8px;
194
+ }
195
+
196
+ .mobile #views {
197
+ display: none;
198
+ }
199
+
200
+ .mobile tile-mediatype-icon {
201
+ --iconHeight: 14px;
202
+ --iconWidth: 14px;
203
+ }
204
+
205
+ .desktop #icon {
206
+ --iconHeight: 20px;
207
+ --iconWidth: 20px;
208
+ }
209
+
210
+ item-image {
211
+ --imgHeight: 100%;
212
+ --imgWidth: 100%;
213
+ }
214
214
  `;
215
215
  }
216
216
  };