@internetarchive/collection-browser 4.5.0 → 4.5.1-alpha-webdev8221.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.js.map +1 -1
- package/dist/src/app-root.js +683 -683
- package/dist/src/app-root.js.map +1 -1
- package/dist/src/collection-browser.d.ts +0 -4
- package/dist/src/collection-browser.js +767 -776
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/collection-facets/facet-row.js +143 -143
- package/dist/src/collection-facets/facet-row.js.map +1 -1
- package/dist/src/collection-facets/facets-template.js +24 -24
- package/dist/src/collection-facets/facets-template.js.map +1 -1
- package/dist/src/data-source/collection-browser-data-source-interface.d.ts +5 -0
- package/dist/src/data-source/collection-browser-data-source-interface.js.map +1 -1
- package/dist/src/data-source/collection-browser-data-source.d.ts +1 -1
- package/dist/src/data-source/collection-browser-data-source.js +8 -6
- package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
- package/dist/src/restoration-state-handler.js +2 -4
- package/dist/src/restoration-state-handler.js.map +1 -1
- package/dist/src/styles/tile-action-styles.js +43 -43
- package/dist/src/styles/tile-action-styles.js.map +1 -1
- package/dist/src/tiles/base-tile-component.js +11 -11
- package/dist/src/tiles/base-tile-component.js.map +1 -1
- package/dist/src/tiles/grid/item-tile.js +138 -138
- package/dist/src/tiles/grid/item-tile.js.map +1 -1
- package/dist/src/tiles/list/tile-list-compact-header.js +62 -62
- package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -1
- package/dist/src/tiles/list/tile-list-compact.js +123 -123
- package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
- package/dist/src/tiles/list/tile-list.js +310 -310
- package/dist/src/tiles/list/tile-list.js.map +1 -1
- package/dist/src/tiles/models.js.map +1 -1
- package/dist/src/tiles/tile-dispatcher.js +286 -286
- package/dist/src/tiles/tile-dispatcher.js.map +1 -1
- package/dist/src/tiles/tile-display-value-provider.js.map +1 -1
- package/dist/src/utils/date-filter-field.d.ts +6 -0
- package/dist/src/utils/date-filter-field.js +9 -0
- package/dist/src/utils/date-filter-field.js.map +1 -0
- package/dist/test/collection-browser.test.js +81 -0
- package/dist/test/collection-browser.test.js.map +1 -1
- package/dist/test/collection-facets/facet-row.test.js +31 -31
- package/dist/test/collection-facets/facet-row.test.js.map +1 -1
- package/dist/test/tiles/grid/item-tile.test.js +77 -77
- package/dist/test/tiles/grid/item-tile.test.js.map +1 -1
- package/dist/test/tiles/list/tile-list.test.js +134 -134
- package/dist/test/tiles/list/tile-list.test.js.map +1 -1
- package/dist/test/tiles/tile-dispatcher.test.js +92 -92
- package/dist/test/tiles/tile-dispatcher.test.js.map +1 -1
- package/index.ts +29 -29
- package/package.json +1 -1
- package/src/app-root.ts +1284 -1284
- package/src/collection-browser.ts +3165 -3176
- package/src/collection-facets/facet-row.ts +309 -309
- package/src/collection-facets/facets-template.ts +85 -85
- package/src/data-source/collection-browser-data-source-interface.ts +6 -0
- package/src/data-source/collection-browser-data-source.ts +16 -7
- package/src/restoration-state-handler.ts +5 -5
- package/src/styles/tile-action-styles.ts +59 -59
- package/src/tiles/base-tile-component.ts +124 -124
- package/src/tiles/grid/item-tile.ts +347 -347
- package/src/tiles/list/tile-list-compact-header.ts +112 -112
- package/src/tiles/list/tile-list-compact.ts +278 -278
- package/src/tiles/list/tile-list.ts +718 -718
- package/src/tiles/models.ts +21 -21
- package/src/tiles/tile-dispatcher.ts +637 -637
- package/src/tiles/tile-display-value-provider.ts +133 -133
- package/src/utils/date-filter-field.ts +11 -0
- package/test/collection-browser.test.ts +132 -0
- package/test/collection-facets/facet-row.test.ts +421 -421
- package/test/tiles/grid/item-tile.test.ts +520 -520
- package/test/tiles/list/tile-list.test.ts +576 -576
- package/test/tiles/tile-dispatcher.test.ts +320 -320
|
@@ -39,45 +39,45 @@ let TileList = class TileList extends BaseTileComponent {
|
|
|
39
39
|
this.collectionLinks = [];
|
|
40
40
|
}
|
|
41
41
|
render() {
|
|
42
|
-
return html `
|
|
43
|
-
<div id="list-line" class="${this.classSize}">
|
|
42
|
+
return html `
|
|
43
|
+
<div id="list-line" class="${this.classSize}">
|
|
44
44
|
${this.classSize === 'mobile'
|
|
45
45
|
? this.mobileTemplate
|
|
46
|
-
: this.desktopTemplate}
|
|
47
|
-
</div>
|
|
46
|
+
: this.desktopTemplate}
|
|
47
|
+
</div>
|
|
48
48
|
`;
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
51
|
* Templates
|
|
52
52
|
*/
|
|
53
53
|
get mobileTemplate() {
|
|
54
|
-
return html `
|
|
55
|
-
<div id="list-line-top">
|
|
56
|
-
<div id="list-line-left">
|
|
57
|
-
${this.imageBlockTemplate} ${this.renderTileActions('list-detail')}
|
|
58
|
-
</div>
|
|
59
|
-
<div id="list-line-right">
|
|
60
|
-
<div id="title-line">
|
|
61
|
-
<div id="title">${this.titleTemplate}</div>
|
|
62
|
-
${this.iconRightTemplate}
|
|
63
|
-
</div>
|
|
64
|
-
</div>
|
|
65
|
-
</div>
|
|
66
|
-
<div id="list-line-bottom">${this.detailsTemplate}</div>
|
|
54
|
+
return html `
|
|
55
|
+
<div id="list-line-top">
|
|
56
|
+
<div id="list-line-left">
|
|
57
|
+
${this.imageBlockTemplate} ${this.renderTileActions('list-detail')}
|
|
58
|
+
</div>
|
|
59
|
+
<div id="list-line-right">
|
|
60
|
+
<div id="title-line">
|
|
61
|
+
<div id="title">${this.titleTemplate}</div>
|
|
62
|
+
${this.iconRightTemplate}
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
<div id="list-line-bottom">${this.detailsTemplate}</div>
|
|
67
67
|
`;
|
|
68
68
|
}
|
|
69
69
|
get desktopTemplate() {
|
|
70
|
-
return html `
|
|
71
|
-
<div id="list-line-left">
|
|
72
|
-
${this.imageBlockTemplate} ${this.renderTileActions('list-detail')}
|
|
73
|
-
</div>
|
|
74
|
-
<div id="list-line-right">
|
|
75
|
-
<div id="title-line">
|
|
76
|
-
<div id="title">${this.titleTemplate}</div>
|
|
77
|
-
${this.iconRightTemplate}
|
|
78
|
-
</div>
|
|
79
|
-
${this.detailsTemplate}
|
|
80
|
-
</div>
|
|
70
|
+
return html `
|
|
71
|
+
<div id="list-line-left">
|
|
72
|
+
${this.imageBlockTemplate} ${this.renderTileActions('list-detail')}
|
|
73
|
+
</div>
|
|
74
|
+
<div id="list-line-right">
|
|
75
|
+
<div id="title-line">
|
|
76
|
+
<div id="title">${this.titleTemplate}</div>
|
|
77
|
+
${this.iconRightTemplate}
|
|
78
|
+
</div>
|
|
79
|
+
${this.detailsTemplate}
|
|
80
|
+
</div>
|
|
81
81
|
`;
|
|
82
82
|
}
|
|
83
83
|
get imageBlockTemplate() {
|
|
@@ -85,48 +85,48 @@ let TileList = class TileList extends BaseTileComponent {
|
|
|
85
85
|
return nothing;
|
|
86
86
|
const isCollection = this.model.mediatype === 'collection';
|
|
87
87
|
const href = this.displayValueProvider.itemPageUrl(this.model.identifier, isCollection);
|
|
88
|
-
return html `<a
|
|
89
|
-
id="image-link"
|
|
90
|
-
title=${msg(str `View ${this.model?.title}`)}
|
|
91
|
-
href=${href}
|
|
92
|
-
>
|
|
93
|
-
<image-block
|
|
94
|
-
.model=${this.model}
|
|
95
|
-
.baseImageUrl=${this.baseImageUrl}
|
|
96
|
-
.isCompactTile=${false}
|
|
97
|
-
.isListTile=${true}
|
|
98
|
-
.viewSize=${this.classSize}
|
|
99
|
-
.loggedIn=${this.loggedIn}
|
|
100
|
-
.suppressBlurring=${this.suppressBlurring}
|
|
101
|
-
>
|
|
102
|
-
</image-block>
|
|
88
|
+
return html `<a
|
|
89
|
+
id="image-link"
|
|
90
|
+
title=${msg(str `View ${this.model?.title}`)}
|
|
91
|
+
href=${href}
|
|
92
|
+
>
|
|
93
|
+
<image-block
|
|
94
|
+
.model=${this.model}
|
|
95
|
+
.baseImageUrl=${this.baseImageUrl}
|
|
96
|
+
.isCompactTile=${false}
|
|
97
|
+
.isListTile=${true}
|
|
98
|
+
.viewSize=${this.classSize}
|
|
99
|
+
.loggedIn=${this.loggedIn}
|
|
100
|
+
.suppressBlurring=${this.suppressBlurring}
|
|
101
|
+
>
|
|
102
|
+
</image-block>
|
|
103
103
|
</a> `;
|
|
104
104
|
}
|
|
105
105
|
get detailsTemplate() {
|
|
106
|
-
return html `
|
|
107
|
-
${this.itemLineTemplate} ${this.creatorTemplate}
|
|
108
|
-
<div id="dates-line">
|
|
109
|
-
${this.datePublishedTemplate} ${this.dateSortByTemplate}
|
|
110
|
-
${this.webArchivesCaptureDatesTemplate}
|
|
111
|
-
</div>
|
|
112
|
-
<div id="views-line">
|
|
113
|
-
${this.viewsTemplate} ${this.ratingTemplate} ${this.reviewsTemplate}
|
|
114
|
-
</div>
|
|
115
|
-
${this.topicsTemplate} ${this.collectionsTemplate}
|
|
116
|
-
${this.descriptionTemplate} ${this.textSnippetsTemplate}
|
|
117
|
-
${this.reviewBlockTemplate}
|
|
106
|
+
return html `
|
|
107
|
+
${this.itemLineTemplate} ${this.creatorTemplate}
|
|
108
|
+
<div id="dates-line">
|
|
109
|
+
${this.datePublishedTemplate} ${this.dateSortByTemplate}
|
|
110
|
+
${this.webArchivesCaptureDatesTemplate}
|
|
111
|
+
</div>
|
|
112
|
+
<div id="views-line">
|
|
113
|
+
${this.viewsTemplate} ${this.ratingTemplate} ${this.reviewsTemplate}
|
|
114
|
+
</div>
|
|
115
|
+
${this.topicsTemplate} ${this.collectionsTemplate}
|
|
116
|
+
${this.descriptionTemplate} ${this.textSnippetsTemplate}
|
|
117
|
+
${this.reviewBlockTemplate}
|
|
118
118
|
`;
|
|
119
119
|
}
|
|
120
120
|
// Data templates
|
|
121
121
|
get iconRightTemplate() {
|
|
122
|
-
return html `
|
|
123
|
-
<a
|
|
124
|
-
id="icon-right"
|
|
125
|
-
href=${this.mediatypeURL}
|
|
126
|
-
title=${msg(str `See more: ${this.model?.mediatype}`)}
|
|
127
|
-
>
|
|
128
|
-
<tile-mediatype-icon .model=${this.model}> </tile-mediatype-icon>
|
|
129
|
-
</a>
|
|
122
|
+
return html `
|
|
123
|
+
<a
|
|
124
|
+
id="icon-right"
|
|
125
|
+
href=${this.mediatypeURL}
|
|
126
|
+
title=${msg(str `See more: ${this.model?.mediatype}`)}
|
|
127
|
+
>
|
|
128
|
+
<tile-mediatype-icon .model=${this.model}> </tile-mediatype-icon>
|
|
129
|
+
</a>
|
|
130
130
|
`;
|
|
131
131
|
}
|
|
132
132
|
get titleTemplate() {
|
|
@@ -136,8 +136,8 @@ let TileList = class TileList extends BaseTileComponent {
|
|
|
136
136
|
// If the model has a server-specified href, use it
|
|
137
137
|
// Otherwise construct a details link using the identifier
|
|
138
138
|
return this.model?.href
|
|
139
|
-
? html `<a href="${this.baseNavigationUrl}${this.model.href}"
|
|
140
|
-
>${this.model.title ?? this.model.identifier}</a
|
|
139
|
+
? html `<a href="${this.baseNavigationUrl}${this.model.href}"
|
|
140
|
+
>${this.model.title ?? this.model.identifier}</a
|
|
141
141
|
>`
|
|
142
142
|
: this.detailsLink(this.model.identifier, this.model.title, this.model.mediatype === 'collection');
|
|
143
143
|
}
|
|
@@ -154,11 +154,11 @@ let TileList = class TileList extends BaseTileComponent {
|
|
|
154
154
|
if (!this.model?.source) {
|
|
155
155
|
return nothing;
|
|
156
156
|
}
|
|
157
|
-
return html `
|
|
158
|
-
<div id="source" class="metadata">
|
|
159
|
-
${this.labelTemplate(msg('Source'))}
|
|
160
|
-
${this.searchLink('source', this.model.source)}
|
|
161
|
-
</div>
|
|
157
|
+
return html `
|
|
158
|
+
<div id="source" class="metadata">
|
|
159
|
+
${this.labelTemplate(msg('Source'))}
|
|
160
|
+
${this.searchLink('source', this.model.source)}
|
|
161
|
+
</div>
|
|
162
162
|
`;
|
|
163
163
|
}
|
|
164
164
|
get volumeTemplate() {
|
|
@@ -170,23 +170,23 @@ let TileList = class TileList extends BaseTileComponent {
|
|
|
170
170
|
get creatorTemplate() {
|
|
171
171
|
// "Archivist since" if account
|
|
172
172
|
if (this.model?.mediatype === 'account') {
|
|
173
|
-
return html `
|
|
174
|
-
<div id="creator" class="metadata">
|
|
175
|
-
<span class="label"
|
|
176
|
-
>${this.displayValueProvider.accountLabel ?? nothing}</span
|
|
177
|
-
>
|
|
178
|
-
</div>
|
|
173
|
+
return html `
|
|
174
|
+
<div id="creator" class="metadata">
|
|
175
|
+
<span class="label"
|
|
176
|
+
>${this.displayValueProvider.accountLabel ?? nothing}</span
|
|
177
|
+
>
|
|
178
|
+
</div>
|
|
179
179
|
`;
|
|
180
180
|
}
|
|
181
181
|
// "Creator" if not account tile
|
|
182
182
|
if (!this.model?.creators || this.model.creators.length === 0) {
|
|
183
183
|
return nothing;
|
|
184
184
|
}
|
|
185
|
-
return html `
|
|
186
|
-
<div id="creator" class="metadata">
|
|
187
|
-
${this.labelTemplate(msg('By'))}
|
|
188
|
-
${join(map(this.model.creators, id => this.searchLink('creator', id)), ', ')}
|
|
189
|
-
</div>
|
|
185
|
+
return html `
|
|
186
|
+
<div id="creator" class="metadata">
|
|
187
|
+
${this.labelTemplate(msg('By'))}
|
|
188
|
+
${join(map(this.model.creators, id => this.searchLink('creator', id)), ', ')}
|
|
189
|
+
</div>
|
|
190
190
|
`;
|
|
191
191
|
}
|
|
192
192
|
get datePublishedTemplate() {
|
|
@@ -234,22 +234,22 @@ let TileList = class TileList extends BaseTileComponent {
|
|
|
234
234
|
if (!this.model?.subjects || this.model.subjects.length === 0) {
|
|
235
235
|
return nothing;
|
|
236
236
|
}
|
|
237
|
-
return html `
|
|
238
|
-
<div id="topics" class="metadata">
|
|
239
|
-
${this.labelTemplate(msg('Topics'))}
|
|
240
|
-
${join(map(this.model.subjects, id => this.searchLink('subject', id)), ', ')}
|
|
241
|
-
</div>
|
|
237
|
+
return html `
|
|
238
|
+
<div id="topics" class="metadata">
|
|
239
|
+
${this.labelTemplate(msg('Topics'))}
|
|
240
|
+
${join(map(this.model.subjects, id => this.searchLink('subject', id)), ', ')}
|
|
241
|
+
</div>
|
|
242
242
|
`;
|
|
243
243
|
}
|
|
244
244
|
get collectionsTemplate() {
|
|
245
245
|
if (!this.collectionLinks || this.collectionLinks.length === 0) {
|
|
246
246
|
return nothing;
|
|
247
247
|
}
|
|
248
|
-
return html `
|
|
249
|
-
<div id="collections" class="metadata">
|
|
250
|
-
${this.labelTemplate(msg('Collections'))}
|
|
251
|
-
${join(this.collectionLinks, ', ')}
|
|
252
|
-
</div>
|
|
248
|
+
return html `
|
|
249
|
+
<div id="collections" class="metadata">
|
|
250
|
+
${this.labelTemplate(msg('Collections'))}
|
|
251
|
+
${join(this.collectionLinks, ', ')}
|
|
252
|
+
</div>
|
|
253
253
|
`;
|
|
254
254
|
}
|
|
255
255
|
get descriptionTemplate() {
|
|
@@ -261,22 +261,22 @@ let TileList = class TileList extends BaseTileComponent {
|
|
|
261
261
|
if (!this.model?.review)
|
|
262
262
|
return nothing;
|
|
263
263
|
const { reviewtitle, reviewbody, stars } = this.model.review;
|
|
264
|
-
return html `
|
|
265
|
-
<review-block
|
|
266
|
-
viewsize="list"
|
|
267
|
-
title=${ifDefined(reviewtitle)}
|
|
268
|
-
body=${ifDefined(reviewbody)}
|
|
269
|
-
starRating=${ifDefined(stars)}
|
|
270
|
-
>
|
|
271
|
-
</review-block>
|
|
264
|
+
return html `
|
|
265
|
+
<review-block
|
|
266
|
+
viewsize="list"
|
|
267
|
+
title=${ifDefined(reviewtitle)}
|
|
268
|
+
body=${ifDefined(reviewbody)}
|
|
269
|
+
starRating=${ifDefined(stars)}
|
|
270
|
+
>
|
|
271
|
+
</review-block>
|
|
272
272
|
`;
|
|
273
273
|
}
|
|
274
274
|
get textSnippetsTemplate() {
|
|
275
275
|
if (!this.hasSnippets)
|
|
276
276
|
return nothing;
|
|
277
|
-
return html `<text-snippet-block
|
|
278
|
-
viewsize="list"
|
|
279
|
-
.snippets=${this.model?.snippets}
|
|
277
|
+
return html `<text-snippet-block
|
|
278
|
+
viewsize="list"
|
|
279
|
+
.snippets=${this.model?.snippets}
|
|
280
280
|
></text-snippet-block>`;
|
|
281
281
|
}
|
|
282
282
|
get hasSnippets() {
|
|
@@ -285,12 +285,12 @@ let TileList = class TileList extends BaseTileComponent {
|
|
|
285
285
|
get webArchivesCaptureDatesTemplate() {
|
|
286
286
|
if (!this.model?.captureDates || !this.model.title)
|
|
287
287
|
return nothing;
|
|
288
|
-
return html `
|
|
289
|
-
<ul class="capture-dates">
|
|
290
|
-
${map(this.model.captureDates, date => html `<li>
|
|
291
|
-
${this.displayValueProvider.webArchivesCaptureLink(this.model.title, date)}
|
|
292
|
-
</li>`)}
|
|
293
|
-
</ul>
|
|
288
|
+
return html `
|
|
289
|
+
<ul class="capture-dates">
|
|
290
|
+
${map(this.model.captureDates, date => html `<li>
|
|
291
|
+
${this.displayValueProvider.webArchivesCaptureLink(this.model.title, date)}
|
|
292
|
+
</li>`)}
|
|
293
|
+
</ul>
|
|
294
294
|
`;
|
|
295
295
|
}
|
|
296
296
|
// Utility functions
|
|
@@ -298,10 +298,10 @@ let TileList = class TileList extends BaseTileComponent {
|
|
|
298
298
|
metadataTemplate(text, label = '', id) {
|
|
299
299
|
if (!text)
|
|
300
300
|
return nothing;
|
|
301
|
-
return html `
|
|
302
|
-
<div id=${ifDefined(id)} class="metadata">
|
|
303
|
-
${this.labelTemplate(label)} ${text}
|
|
304
|
-
</div>
|
|
301
|
+
return html `
|
|
302
|
+
<div id=${ifDefined(id)} class="metadata">
|
|
303
|
+
${this.labelTemplate(label)} ${text}
|
|
304
|
+
</div>
|
|
305
305
|
`;
|
|
306
306
|
}
|
|
307
307
|
labelTemplate(label) {
|
|
@@ -316,11 +316,11 @@ let TileList = class TileList extends BaseTileComponent {
|
|
|
316
316
|
const query = encodeURIComponent(`${field}:"${searchTerm}"`);
|
|
317
317
|
// No whitespace after closing tag
|
|
318
318
|
// Note: single ' for href='' to wrap " in query var gets changed back by yarn format
|
|
319
|
-
return html `<a
|
|
320
|
-
href="${this.baseNavigationUrl}/search?query=${query}"
|
|
321
|
-
rel="nofollow"
|
|
322
|
-
>
|
|
323
|
-
${DOMPurify.sanitize(searchTerm)}</a
|
|
319
|
+
return html `<a
|
|
320
|
+
href="${this.baseNavigationUrl}/search?query=${query}"
|
|
321
|
+
rel="nofollow"
|
|
322
|
+
>
|
|
323
|
+
${DOMPurify.sanitize(searchTerm)}</a
|
|
324
324
|
>`;
|
|
325
325
|
}
|
|
326
326
|
detailsLink(identifier, text, isCollection = false) {
|
|
@@ -409,199 +409,199 @@ let TileList = class TileList extends BaseTileComponent {
|
|
|
409
409
|
static get styles() {
|
|
410
410
|
return [
|
|
411
411
|
tileActionStyles,
|
|
412
|
-
css `
|
|
413
|
-
html {
|
|
414
|
-
font-size: unset;
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
div {
|
|
418
|
-
font-size: 14px;
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
div a {
|
|
422
|
-
text-decoration: none;
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
div a:link {
|
|
426
|
-
color: var(--ia-theme-link-color, #4b64ff);
|
|
427
|
-
}
|
|
428
|
-
|
|
429
|
-
.label {
|
|
430
|
-
font-weight: bold;
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
#list-line.mobile {
|
|
434
|
-
--infiniteScrollerRowGap: 20px;
|
|
435
|
-
--infiniteScrollerRowHeight: auto;
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
#list-line.desktop {
|
|
439
|
-
--infiniteScrollerRowGap: 30px;
|
|
440
|
-
--infiniteScrollerRowHeight: auto;
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
/* fields */
|
|
444
|
-
#icon-right {
|
|
445
|
-
width: 20px;
|
|
446
|
-
padding-top: 5px;
|
|
447
|
-
--iconHeight: 20px;
|
|
448
|
-
--iconWidth: 20px;
|
|
449
|
-
--iconTextAlign: right;
|
|
450
|
-
margin-top: -8px;
|
|
451
|
-
text-align: right;
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
#title {
|
|
455
|
-
color: #4b64ff;
|
|
456
|
-
text-decoration: none;
|
|
457
|
-
font-size: 22px;
|
|
458
|
-
font-weight: bold;
|
|
459
|
-
/* align top of text with image */
|
|
460
|
-
line-height: 25px;
|
|
461
|
-
margin-top: -4px;
|
|
462
|
-
padding-bottom: 2px;
|
|
463
|
-
flex-grow: 1;
|
|
464
|
-
|
|
465
|
-
display: -webkit-box;
|
|
466
|
-
-webkit-box-orient: vertical;
|
|
467
|
-
-webkit-line-clamp: 3;
|
|
468
|
-
overflow: hidden;
|
|
469
|
-
overflow-wrap: anywhere;
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
.metadata {
|
|
473
|
-
line-height: 20px;
|
|
474
|
-
}
|
|
475
|
-
|
|
476
|
-
#description,
|
|
477
|
-
#creator,
|
|
478
|
-
#topics,
|
|
479
|
-
#source {
|
|
480
|
-
text-align: left;
|
|
481
|
-
overflow: hidden;
|
|
482
|
-
text-overflow: ellipsis;
|
|
483
|
-
-webkit-box-orient: vertical;
|
|
484
|
-
display: -webkit-box;
|
|
485
|
-
word-break: break-word;
|
|
486
|
-
-webkit-line-clamp: 3; /* number of lines to show */
|
|
487
|
-
line-clamp: 3;
|
|
488
|
-
|
|
489
|
-
/*
|
|
490
|
-
* Safari doesn't always respect the line-clamping rules above,
|
|
491
|
-
* so we add this to ensure these fields still get truncated
|
|
492
|
-
*/
|
|
493
|
-
max-height: 60px;
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
#collections {
|
|
497
|
-
display: -webkit-box;
|
|
498
|
-
-webkit-box-orient: vertical;
|
|
499
|
-
-webkit-line-clamp: 3;
|
|
500
|
-
overflow: hidden;
|
|
501
|
-
overflow-wrap: anywhere;
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
#collections > a {
|
|
505
|
-
display: inline-block;
|
|
506
|
-
}
|
|
507
|
-
|
|
508
|
-
#icon {
|
|
509
|
-
padding-top: 5px;
|
|
510
|
-
}
|
|
511
|
-
|
|
512
|
-
#description {
|
|
513
|
-
padding-top: 10px;
|
|
514
|
-
}
|
|
515
|
-
|
|
516
|
-
/* Top level container */
|
|
517
|
-
#list-line {
|
|
518
|
-
display: flex;
|
|
519
|
-
}
|
|
520
|
-
|
|
521
|
-
#list-line.mobile {
|
|
522
|
-
flex-direction: column;
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
#list-line.desktop {
|
|
526
|
-
column-gap: 10px;
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
#list-line-top {
|
|
530
|
-
display: flex;
|
|
531
|
-
column-gap: 7px;
|
|
532
|
-
}
|
|
533
|
-
|
|
534
|
-
#list-line-bottom {
|
|
535
|
-
padding-top: 4px;
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
#list-line-right,
|
|
539
|
-
#list-line-top,
|
|
540
|
-
#list-line-bottom {
|
|
541
|
-
width: 100%;
|
|
542
|
-
}
|
|
543
|
-
|
|
544
|
-
/*
|
|
545
|
-
* If the container becomes very tiny, don't let the thumbnail side take
|
|
546
|
-
* up too much space. Shouldn't make a difference on ordinary viewport sizes.
|
|
547
|
-
*/
|
|
548
|
-
#list-line-left {
|
|
549
|
-
max-width: 25%;
|
|
550
|
-
|
|
551
|
-
display: flex;
|
|
552
|
-
flex-direction: column;
|
|
553
|
-
row-gap: 5px;
|
|
554
|
-
}
|
|
555
|
-
|
|
556
|
-
div a:hover {
|
|
557
|
-
text-decoration: underline;
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
/* Lines containing multiple div as row */
|
|
561
|
-
#item-line,
|
|
562
|
-
#dates-line,
|
|
563
|
-
#views-line,
|
|
564
|
-
#title-line {
|
|
565
|
-
display: flex;
|
|
566
|
-
flex-direction: row;
|
|
567
|
-
column-gap: 10px;
|
|
568
|
-
}
|
|
569
|
-
|
|
570
|
-
/*
|
|
571
|
-
* With the exception of the title line, allow these to wrap if
|
|
572
|
-
* the space becomes too small to accommodate them together.
|
|
573
|
-
*
|
|
574
|
-
* The title line is excluded because it contains the mediatype icon
|
|
575
|
-
* which we don't want to wrap.
|
|
576
|
-
*/
|
|
577
|
-
#item-line,
|
|
578
|
-
#dates-line,
|
|
579
|
-
#views-line {
|
|
580
|
-
flex-wrap: wrap;
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
.capture-dates {
|
|
584
|
-
margin: 0;
|
|
585
|
-
padding: 0;
|
|
586
|
-
list-style-type: none;
|
|
587
|
-
}
|
|
588
|
-
|
|
589
|
-
.capture-dates a:link {
|
|
590
|
-
text-decoration: none;
|
|
591
|
-
color: var(--ia-theme-link-color, #4b64ff);
|
|
592
|
-
}
|
|
593
|
-
.capture-dates a:hover {
|
|
594
|
-
text-decoration: underline;
|
|
595
|
-
}
|
|
596
|
-
|
|
597
|
-
/*
|
|
598
|
-
* Tile-list (extended) action row sits under the thumbnail in the left
|
|
599
|
-
* column. The image-block above already has its own bottom padding via
|
|
600
|
-
* the parent's row-gap, so we don't need extra spacing here.
|
|
601
|
-
*/
|
|
602
|
-
.tile-actions.list-detail {
|
|
603
|
-
width: 100%;
|
|
604
|
-
}
|
|
412
|
+
css `
|
|
413
|
+
html {
|
|
414
|
+
font-size: unset;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
div {
|
|
418
|
+
font-size: 14px;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
div a {
|
|
422
|
+
text-decoration: none;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
div a:link {
|
|
426
|
+
color: var(--ia-theme-link-color, #4b64ff);
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
.label {
|
|
430
|
+
font-weight: bold;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
#list-line.mobile {
|
|
434
|
+
--infiniteScrollerRowGap: 20px;
|
|
435
|
+
--infiniteScrollerRowHeight: auto;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
#list-line.desktop {
|
|
439
|
+
--infiniteScrollerRowGap: 30px;
|
|
440
|
+
--infiniteScrollerRowHeight: auto;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
/* fields */
|
|
444
|
+
#icon-right {
|
|
445
|
+
width: 20px;
|
|
446
|
+
padding-top: 5px;
|
|
447
|
+
--iconHeight: 20px;
|
|
448
|
+
--iconWidth: 20px;
|
|
449
|
+
--iconTextAlign: right;
|
|
450
|
+
margin-top: -8px;
|
|
451
|
+
text-align: right;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
#title {
|
|
455
|
+
color: #4b64ff;
|
|
456
|
+
text-decoration: none;
|
|
457
|
+
font-size: 22px;
|
|
458
|
+
font-weight: bold;
|
|
459
|
+
/* align top of text with image */
|
|
460
|
+
line-height: 25px;
|
|
461
|
+
margin-top: -4px;
|
|
462
|
+
padding-bottom: 2px;
|
|
463
|
+
flex-grow: 1;
|
|
464
|
+
|
|
465
|
+
display: -webkit-box;
|
|
466
|
+
-webkit-box-orient: vertical;
|
|
467
|
+
-webkit-line-clamp: 3;
|
|
468
|
+
overflow: hidden;
|
|
469
|
+
overflow-wrap: anywhere;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
.metadata {
|
|
473
|
+
line-height: 20px;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
#description,
|
|
477
|
+
#creator,
|
|
478
|
+
#topics,
|
|
479
|
+
#source {
|
|
480
|
+
text-align: left;
|
|
481
|
+
overflow: hidden;
|
|
482
|
+
text-overflow: ellipsis;
|
|
483
|
+
-webkit-box-orient: vertical;
|
|
484
|
+
display: -webkit-box;
|
|
485
|
+
word-break: break-word;
|
|
486
|
+
-webkit-line-clamp: 3; /* number of lines to show */
|
|
487
|
+
line-clamp: 3;
|
|
488
|
+
|
|
489
|
+
/*
|
|
490
|
+
* Safari doesn't always respect the line-clamping rules above,
|
|
491
|
+
* so we add this to ensure these fields still get truncated
|
|
492
|
+
*/
|
|
493
|
+
max-height: 60px;
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
#collections {
|
|
497
|
+
display: -webkit-box;
|
|
498
|
+
-webkit-box-orient: vertical;
|
|
499
|
+
-webkit-line-clamp: 3;
|
|
500
|
+
overflow: hidden;
|
|
501
|
+
overflow-wrap: anywhere;
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
#collections > a {
|
|
505
|
+
display: inline-block;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
#icon {
|
|
509
|
+
padding-top: 5px;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
#description {
|
|
513
|
+
padding-top: 10px;
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
/* Top level container */
|
|
517
|
+
#list-line {
|
|
518
|
+
display: flex;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
#list-line.mobile {
|
|
522
|
+
flex-direction: column;
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
#list-line.desktop {
|
|
526
|
+
column-gap: 10px;
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
#list-line-top {
|
|
530
|
+
display: flex;
|
|
531
|
+
column-gap: 7px;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
#list-line-bottom {
|
|
535
|
+
padding-top: 4px;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
#list-line-right,
|
|
539
|
+
#list-line-top,
|
|
540
|
+
#list-line-bottom {
|
|
541
|
+
width: 100%;
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
/*
|
|
545
|
+
* If the container becomes very tiny, don't let the thumbnail side take
|
|
546
|
+
* up too much space. Shouldn't make a difference on ordinary viewport sizes.
|
|
547
|
+
*/
|
|
548
|
+
#list-line-left {
|
|
549
|
+
max-width: 25%;
|
|
550
|
+
|
|
551
|
+
display: flex;
|
|
552
|
+
flex-direction: column;
|
|
553
|
+
row-gap: 5px;
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
div a:hover {
|
|
557
|
+
text-decoration: underline;
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
/* Lines containing multiple div as row */
|
|
561
|
+
#item-line,
|
|
562
|
+
#dates-line,
|
|
563
|
+
#views-line,
|
|
564
|
+
#title-line {
|
|
565
|
+
display: flex;
|
|
566
|
+
flex-direction: row;
|
|
567
|
+
column-gap: 10px;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
/*
|
|
571
|
+
* With the exception of the title line, allow these to wrap if
|
|
572
|
+
* the space becomes too small to accommodate them together.
|
|
573
|
+
*
|
|
574
|
+
* The title line is excluded because it contains the mediatype icon
|
|
575
|
+
* which we don't want to wrap.
|
|
576
|
+
*/
|
|
577
|
+
#item-line,
|
|
578
|
+
#dates-line,
|
|
579
|
+
#views-line {
|
|
580
|
+
flex-wrap: wrap;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
.capture-dates {
|
|
584
|
+
margin: 0;
|
|
585
|
+
padding: 0;
|
|
586
|
+
list-style-type: none;
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
.capture-dates a:link {
|
|
590
|
+
text-decoration: none;
|
|
591
|
+
color: var(--ia-theme-link-color, #4b64ff);
|
|
592
|
+
}
|
|
593
|
+
.capture-dates a:hover {
|
|
594
|
+
text-decoration: underline;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
/*
|
|
598
|
+
* Tile-list (extended) action row sits under the thumbnail in the left
|
|
599
|
+
* column. The image-block above already has its own bottom padding via
|
|
600
|
+
* the parent's row-gap, so we don't need extra spacing here.
|
|
601
|
+
*/
|
|
602
|
+
.tile-actions.list-detail {
|
|
603
|
+
width: 100%;
|
|
604
|
+
}
|
|
605
605
|
`,
|
|
606
606
|
];
|
|
607
607
|
}
|