@internetarchive/collection-browser 4.1.3-alpha-webdev8108.0 → 4.1.3-alpha-webdev8257.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -0
- package/dist/index.js.map +1 -1
- package/dist/src/app-root.d.ts +8 -0
- package/dist/src/app-root.js +31 -0
- package/dist/src/app-root.js.map +1 -1
- package/dist/src/collection-browser.d.ts +3 -0
- package/dist/src/collection-browser.js +33 -29
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
- package/dist/src/models.js.map +1 -1
- package/dist/src/tiles/hover/hover-pane-controller.js +28 -28
- package/dist/src/tiles/hover/hover-pane-controller.js.map +1 -1
- package/dist/src/tiles/models.d.ts +14 -0
- package/dist/src/tiles/models.js.map +1 -1
- package/dist/src/tiles/tile-dispatcher.d.ts +12 -1
- package/dist/src/tiles/tile-dispatcher.js +330 -216
- package/dist/src/tiles/tile-dispatcher.js.map +1 -1
- package/dist/src/tiles/tile-display-value-provider.js.map +1 -1
- package/dist/test/mocks/mock-search-responses.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 +126 -126
- package/dist/test/tiles/list/tile-list.test.js.map +1 -1
- package/dist/test/tiles/tile-dispatcher.test.js +87 -87
- package/dist/test/tiles/tile-dispatcher.test.js.map +1 -1
- package/dist/test/tiles/tile-display-value-provider.test.js.map +1 -1
- package/index.ts +1 -0
- package/package.json +1 -1
- package/src/app-root.ts +35 -0
- package/src/collection-browser.ts +41 -38
- package/src/data-source/collection-browser-data-source.ts +1445 -1445
- package/src/models.ts +874 -874
- package/src/tiles/hover/hover-pane-controller.ts +628 -628
- package/src/tiles/models.ts +16 -0
- package/src/tiles/tile-dispatcher.ts +649 -527
- package/src/tiles/tile-display-value-provider.ts +124 -124
- package/test/mocks/mock-search-responses.ts +1364 -1364
- package/test/tiles/grid/item-tile.test.ts +520 -520
- package/test/tiles/list/tile-list.test.ts +552 -552
- package/test/tiles/tile-dispatcher.test.ts +300 -300
- package/test/tiles/tile-display-value-provider.test.ts +172 -172
|
@@ -2,6 +2,7 @@ var TileDispatcher_1;
|
|
|
2
2
|
import { __decorate } from "tslib";
|
|
3
3
|
import { css, html, nothing } from 'lit';
|
|
4
4
|
import { customElement, property, query } from 'lit/decorators.js';
|
|
5
|
+
import { classMap } from 'lit/directives/class-map.js';
|
|
5
6
|
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
6
7
|
import { msg } from '@lit/localize';
|
|
7
8
|
import './grid/collection-tile';
|
|
@@ -41,6 +42,15 @@ let TileDispatcher = class TileDispatcher extends BaseTileComponent {
|
|
|
41
42
|
/** Whether this tile should include a hover pane at all (for applicable tile modes) */
|
|
42
43
|
this.enableHoverPane = false;
|
|
43
44
|
this.manageCheckTitle = msg('Remove this item from the list');
|
|
45
|
+
/** Action buttons to display at the bottom of the tile (grid mode only) */
|
|
46
|
+
this.tileActions = [];
|
|
47
|
+
/**
|
|
48
|
+
* When the mouse enters the tile actions area, dispatch a synthetic mouseleave
|
|
49
|
+
* on the host to cancel the hover pane's show timer and hide any visible pane.
|
|
50
|
+
*/
|
|
51
|
+
this.handleTileActionsMouseEnter = () => {
|
|
52
|
+
this.dispatchEvent(new MouseEvent('mouseleave', { bubbles: false }));
|
|
53
|
+
};
|
|
44
54
|
}
|
|
45
55
|
static { TileDispatcher_1 = this; }
|
|
46
56
|
acquireFocus() {
|
|
@@ -58,14 +68,20 @@ let TileDispatcher = class TileDispatcher extends BaseTileComponent {
|
|
|
58
68
|
}; }
|
|
59
69
|
render() {
|
|
60
70
|
const isGridMode = this.tileDisplayMode === 'grid';
|
|
71
|
+
const hasTileActions = isGridMode && this.showTileActions;
|
|
61
72
|
const hoverPaneTemplate = this.hoverPaneController?.getTemplate() ?? nothing;
|
|
62
|
-
|
|
63
|
-
|
|
73
|
+
const containerClasses = classMap({
|
|
74
|
+
hoverable: isGridMode,
|
|
75
|
+
'has-tile-actions': hasTileActions,
|
|
76
|
+
});
|
|
77
|
+
return html `
|
|
78
|
+
<div id="container" class=${containerClasses}>
|
|
64
79
|
${this.tileDisplayMode === 'list-header'
|
|
65
80
|
? this.headerTemplate
|
|
66
|
-
: this.tileTemplate}
|
|
67
|
-
${this.
|
|
68
|
-
|
|
81
|
+
: this.tileTemplate}
|
|
82
|
+
${this.tileActionsTemplate} ${this.manageCheckTemplate}
|
|
83
|
+
${hoverPaneTemplate}
|
|
84
|
+
</div>
|
|
69
85
|
`;
|
|
70
86
|
}
|
|
71
87
|
firstUpdated() {
|
|
@@ -78,42 +94,42 @@ let TileDispatcher = class TileDispatcher extends BaseTileComponent {
|
|
|
78
94
|
}
|
|
79
95
|
get headerTemplate() {
|
|
80
96
|
const { currentWidth, sortParam, defaultSortParam, mobileBreakpoint } = this;
|
|
81
|
-
return html `
|
|
82
|
-
<tile-list-compact-header
|
|
83
|
-
class="header"
|
|
84
|
-
.currentWidth=${currentWidth}
|
|
85
|
-
.sortParam=${sortParam ?? defaultSortParam}
|
|
86
|
-
.mobileBreakpoint=${mobileBreakpoint}
|
|
87
|
-
>
|
|
88
|
-
</tile-list-compact-header>
|
|
97
|
+
return html `
|
|
98
|
+
<tile-list-compact-header
|
|
99
|
+
class="header"
|
|
100
|
+
.currentWidth=${currentWidth}
|
|
101
|
+
.sortParam=${sortParam ?? defaultSortParam}
|
|
102
|
+
.mobileBreakpoint=${mobileBreakpoint}
|
|
103
|
+
>
|
|
104
|
+
</tile-list-compact-header>
|
|
89
105
|
`;
|
|
90
106
|
}
|
|
91
107
|
get tileTemplate() {
|
|
92
|
-
return html `
|
|
108
|
+
return html `
|
|
93
109
|
${this.tileDisplayMode === 'list-detail'
|
|
94
110
|
? this.tile
|
|
95
|
-
: this.linkTileTemplate}
|
|
111
|
+
: this.linkTileTemplate}
|
|
96
112
|
`;
|
|
97
113
|
}
|
|
98
114
|
get linkTileTemplate() {
|
|
99
|
-
return html `
|
|
100
|
-
<a
|
|
101
|
-
href=${this.linkTileHref}
|
|
102
|
-
aria-label=${this.model?.title ?? 'Untitled item'}
|
|
103
|
-
aria-describedby="link-aria-description"
|
|
104
|
-
aria-haspopup=${this.shouldPrepareHoverPane ? 'dialog' : 'false'}
|
|
115
|
+
return html `
|
|
116
|
+
<a
|
|
117
|
+
href=${this.linkTileHref}
|
|
118
|
+
aria-label=${this.model?.title ?? 'Untitled item'}
|
|
119
|
+
aria-describedby="link-aria-description"
|
|
120
|
+
aria-haspopup=${this.shouldPrepareHoverPane ? 'dialog' : 'false'}
|
|
105
121
|
title=${this.shouldPrepareHoverPane
|
|
106
122
|
? nothing // Don't show title tooltips when we have the tile info popups
|
|
107
|
-
: ifDefined(this.model?.title)}
|
|
108
|
-
@click=${this.handleLinkClicked}
|
|
109
|
-
@contextmenu=${this.handleLinkContextMenu}
|
|
110
|
-
class="tile-link"
|
|
111
|
-
>
|
|
112
|
-
${this.tile}
|
|
113
|
-
</a>
|
|
114
|
-
<div id="link-aria-description" class="sr-only">
|
|
115
|
-
${msg('Press Down Arrow to preview item details')}
|
|
116
|
-
</div>
|
|
123
|
+
: ifDefined(this.model?.title)}
|
|
124
|
+
@click=${this.handleLinkClicked}
|
|
125
|
+
@contextmenu=${this.handleLinkContextMenu}
|
|
126
|
+
class="tile-link"
|
|
127
|
+
>
|
|
128
|
+
${this.tile}
|
|
129
|
+
</a>
|
|
130
|
+
<div id="link-aria-description" class="sr-only">
|
|
131
|
+
${msg('Press Down Arrow to preview item details')}
|
|
132
|
+
</div>
|
|
117
133
|
`;
|
|
118
134
|
}
|
|
119
135
|
get linkTileHref() {
|
|
@@ -129,15 +145,15 @@ let TileDispatcher = class TileDispatcher extends BaseTileComponent {
|
|
|
129
145
|
get manageCheckTemplate() {
|
|
130
146
|
if (!this.isManageView || this.tileDisplayMode !== 'grid')
|
|
131
147
|
return nothing;
|
|
132
|
-
return html `
|
|
133
|
-
<div class="manage-check">
|
|
134
|
-
<input
|
|
135
|
-
type="checkbox"
|
|
136
|
-
title=${this.manageCheckTitle}
|
|
137
|
-
?checked=${this.model?.checked}
|
|
138
|
-
@change=${this.handleLinkClicked}
|
|
139
|
-
/>
|
|
140
|
-
</div>
|
|
148
|
+
return html `
|
|
149
|
+
<div class="manage-check">
|
|
150
|
+
<input
|
|
151
|
+
type="checkbox"
|
|
152
|
+
title=${this.manageCheckTitle}
|
|
153
|
+
?checked=${this.model?.checked}
|
|
154
|
+
@change=${this.handleLinkClicked}
|
|
155
|
+
/>
|
|
156
|
+
</div>
|
|
141
157
|
`;
|
|
142
158
|
}
|
|
143
159
|
/**
|
|
@@ -226,6 +242,40 @@ let TileDispatcher = class TileDispatcher extends BaseTileComponent {
|
|
|
226
242
|
enableTouchBackdrop: true,
|
|
227
243
|
});
|
|
228
244
|
}
|
|
245
|
+
/** Whether tile action buttons should be rendered */
|
|
246
|
+
get showTileActions() {
|
|
247
|
+
return (this.tileActions.length > 0 &&
|
|
248
|
+
!this.isManageView &&
|
|
249
|
+
this.tileDisplayMode === 'grid');
|
|
250
|
+
}
|
|
251
|
+
get tileActionsTemplate() {
|
|
252
|
+
if (!this.showTileActions)
|
|
253
|
+
return nothing;
|
|
254
|
+
return html `
|
|
255
|
+
<div
|
|
256
|
+
class="tile-actions"
|
|
257
|
+
@mouseenter=${this.handleTileActionsMouseEnter}
|
|
258
|
+
@mousemove=${(e) => e.stopPropagation()}
|
|
259
|
+
>
|
|
260
|
+
${this.tileActions.map(action => html `
|
|
261
|
+
<button
|
|
262
|
+
class="tile-action-btn"
|
|
263
|
+
@click=${(e) => this.handleTileActionClick(e, action)}
|
|
264
|
+
>
|
|
265
|
+
${action.label}
|
|
266
|
+
</button>
|
|
267
|
+
`)}
|
|
268
|
+
</div>
|
|
269
|
+
`;
|
|
270
|
+
}
|
|
271
|
+
handleTileActionClick(e, action) {
|
|
272
|
+
e.stopPropagation();
|
|
273
|
+
this.dispatchEvent(new CustomEvent('tileActionClicked', {
|
|
274
|
+
detail: { actionId: action.id, model: this.model },
|
|
275
|
+
bubbles: true,
|
|
276
|
+
composed: true,
|
|
277
|
+
}));
|
|
278
|
+
}
|
|
229
279
|
get tile() {
|
|
230
280
|
const { model, collectionPagePath, baseNavigationUrl, currentWidth, currentHeight, sortParam, creatorFilter, mobileBreakpoint, defaultSortParam, } = this;
|
|
231
281
|
if (!model)
|
|
@@ -234,103 +284,103 @@ let TileDispatcher = class TileDispatcher extends BaseTileComponent {
|
|
|
234
284
|
case 'grid':
|
|
235
285
|
switch (model.mediatype) {
|
|
236
286
|
case 'collection':
|
|
237
|
-
return html `<collection-tile
|
|
238
|
-
.model=${model}
|
|
239
|
-
.collectionPagePath=${collectionPagePath}
|
|
240
|
-
.baseImageUrl=${this.baseImageUrl}
|
|
241
|
-
.currentWidth=${currentWidth}
|
|
242
|
-
.currentHeight=${currentHeight}
|
|
243
|
-
.creatorFilter=${creatorFilter}
|
|
244
|
-
.suppressBlurring=${this.suppressBlurring}
|
|
245
|
-
.isManageView=${this.isManageView}
|
|
246
|
-
.layoutType=${this.layoutType}
|
|
247
|
-
?showInfoButton=${this.shouldShowInfoButton}
|
|
248
|
-
@infoButtonPressed=${this.tileInfoButtonPressed}
|
|
249
|
-
>
|
|
287
|
+
return html `<collection-tile
|
|
288
|
+
.model=${model}
|
|
289
|
+
.collectionPagePath=${collectionPagePath}
|
|
290
|
+
.baseImageUrl=${this.baseImageUrl}
|
|
291
|
+
.currentWidth=${currentWidth}
|
|
292
|
+
.currentHeight=${currentHeight}
|
|
293
|
+
.creatorFilter=${creatorFilter}
|
|
294
|
+
.suppressBlurring=${this.suppressBlurring}
|
|
295
|
+
.isManageView=${this.isManageView}
|
|
296
|
+
.layoutType=${this.layoutType}
|
|
297
|
+
?showInfoButton=${this.shouldShowInfoButton}
|
|
298
|
+
@infoButtonPressed=${this.tileInfoButtonPressed}
|
|
299
|
+
>
|
|
250
300
|
</collection-tile>`;
|
|
251
301
|
case 'account':
|
|
252
|
-
return html `<account-tile
|
|
253
|
-
.model=${model}
|
|
254
|
-
.collectionPagePath=${collectionPagePath}
|
|
255
|
-
.baseImageUrl=${this.baseImageUrl}
|
|
256
|
-
.currentWidth=${currentWidth}
|
|
257
|
-
.currentHeight=${currentHeight}
|
|
258
|
-
.creatorFilter=${creatorFilter}
|
|
259
|
-
.suppressBlurring=${this.suppressBlurring}
|
|
260
|
-
.isManageView=${this.isManageView}
|
|
261
|
-
?showInfoButton=${this.shouldShowInfoButton}
|
|
262
|
-
@infoButtonPressed=${this.tileInfoButtonPressed}
|
|
263
|
-
>
|
|
302
|
+
return html `<account-tile
|
|
303
|
+
.model=${model}
|
|
304
|
+
.collectionPagePath=${collectionPagePath}
|
|
305
|
+
.baseImageUrl=${this.baseImageUrl}
|
|
306
|
+
.currentWidth=${currentWidth}
|
|
307
|
+
.currentHeight=${currentHeight}
|
|
308
|
+
.creatorFilter=${creatorFilter}
|
|
309
|
+
.suppressBlurring=${this.suppressBlurring}
|
|
310
|
+
.isManageView=${this.isManageView}
|
|
311
|
+
?showInfoButton=${this.shouldShowInfoButton}
|
|
312
|
+
@infoButtonPressed=${this.tileInfoButtonPressed}
|
|
313
|
+
>
|
|
264
314
|
</account-tile>`;
|
|
265
315
|
case 'search':
|
|
266
|
-
return html `<search-tile
|
|
267
|
-
.model=${model}
|
|
268
|
-
.collectionPagePath=${collectionPagePath}
|
|
269
|
-
.baseImageUrl=${this.baseImageUrl}
|
|
270
|
-
.currentWidth=${currentWidth}
|
|
271
|
-
.currentHeight=${currentHeight}
|
|
272
|
-
.creatorFilter=${creatorFilter}
|
|
273
|
-
.suppressBlurring=${this.suppressBlurring}
|
|
274
|
-
.isManageView=${this.isManageView}
|
|
275
|
-
?showInfoButton=${false}
|
|
276
|
-
@infoButtonPressed=${this.tileInfoButtonPressed}
|
|
277
|
-
>
|
|
316
|
+
return html `<search-tile
|
|
317
|
+
.model=${model}
|
|
318
|
+
.collectionPagePath=${collectionPagePath}
|
|
319
|
+
.baseImageUrl=${this.baseImageUrl}
|
|
320
|
+
.currentWidth=${currentWidth}
|
|
321
|
+
.currentHeight=${currentHeight}
|
|
322
|
+
.creatorFilter=${creatorFilter}
|
|
323
|
+
.suppressBlurring=${this.suppressBlurring}
|
|
324
|
+
.isManageView=${this.isManageView}
|
|
325
|
+
?showInfoButton=${false}
|
|
326
|
+
@infoButtonPressed=${this.tileInfoButtonPressed}
|
|
327
|
+
>
|
|
278
328
|
</search-tile>`;
|
|
279
329
|
default:
|
|
280
|
-
return html `<item-tile
|
|
281
|
-
.model=${model}
|
|
282
|
-
.collectionPagePath=${collectionPagePath}
|
|
283
|
-
.currentWidth=${this.currentWidth}
|
|
284
|
-
.currentHeight=${this.currentHeight}
|
|
285
|
-
.baseImageUrl=${this.baseImageUrl}
|
|
286
|
-
.sortParam=${sortParam}
|
|
287
|
-
.defaultSortParam=${defaultSortParam}
|
|
288
|
-
.creatorFilter=${creatorFilter}
|
|
289
|
-
.loggedIn=${this.loggedIn}
|
|
290
|
-
.suppressBlurring=${this.suppressBlurring}
|
|
291
|
-
.isManageView=${this.isManageView}
|
|
292
|
-
.layoutType=${this.layoutType}
|
|
293
|
-
?showTvClips=${this.showTvClips}
|
|
294
|
-
?showInfoButton=${this.shouldShowInfoButton}
|
|
295
|
-
?useLocalTime=${this.useLocalTime}
|
|
296
|
-
@infoButtonPressed=${this.tileInfoButtonPressed}
|
|
297
|
-
>
|
|
330
|
+
return html `<item-tile
|
|
331
|
+
.model=${model}
|
|
332
|
+
.collectionPagePath=${collectionPagePath}
|
|
333
|
+
.currentWidth=${this.currentWidth}
|
|
334
|
+
.currentHeight=${this.currentHeight}
|
|
335
|
+
.baseImageUrl=${this.baseImageUrl}
|
|
336
|
+
.sortParam=${sortParam}
|
|
337
|
+
.defaultSortParam=${defaultSortParam}
|
|
338
|
+
.creatorFilter=${creatorFilter}
|
|
339
|
+
.loggedIn=${this.loggedIn}
|
|
340
|
+
.suppressBlurring=${this.suppressBlurring}
|
|
341
|
+
.isManageView=${this.isManageView}
|
|
342
|
+
.layoutType=${this.layoutType}
|
|
343
|
+
?showTvClips=${this.showTvClips}
|
|
344
|
+
?showInfoButton=${this.shouldShowInfoButton}
|
|
345
|
+
?useLocalTime=${this.useLocalTime}
|
|
346
|
+
@infoButtonPressed=${this.tileInfoButtonPressed}
|
|
347
|
+
>
|
|
298
348
|
</item-tile>`;
|
|
299
349
|
}
|
|
300
350
|
case 'list-compact':
|
|
301
|
-
return html `<tile-list-compact
|
|
302
|
-
.model=${model}
|
|
303
|
-
.collectionPagePath=${collectionPagePath}
|
|
304
|
-
.currentWidth=${currentWidth}
|
|
305
|
-
.currentHeight=${currentHeight}
|
|
306
|
-
.baseNavigationUrl=${baseNavigationUrl}
|
|
307
|
-
.sortParam=${sortParam}
|
|
308
|
-
.defaultSortParam=${defaultSortParam}
|
|
309
|
-
.creatorFilter=${creatorFilter}
|
|
310
|
-
.mobileBreakpoint=${mobileBreakpoint}
|
|
311
|
-
.baseImageUrl=${this.baseImageUrl}
|
|
312
|
-
.loggedIn=${this.loggedIn}
|
|
313
|
-
.suppressBlurring=${this.suppressBlurring}
|
|
314
|
-
?useLocalTime=${this.useLocalTime}
|
|
315
|
-
>
|
|
351
|
+
return html `<tile-list-compact
|
|
352
|
+
.model=${model}
|
|
353
|
+
.collectionPagePath=${collectionPagePath}
|
|
354
|
+
.currentWidth=${currentWidth}
|
|
355
|
+
.currentHeight=${currentHeight}
|
|
356
|
+
.baseNavigationUrl=${baseNavigationUrl}
|
|
357
|
+
.sortParam=${sortParam}
|
|
358
|
+
.defaultSortParam=${defaultSortParam}
|
|
359
|
+
.creatorFilter=${creatorFilter}
|
|
360
|
+
.mobileBreakpoint=${mobileBreakpoint}
|
|
361
|
+
.baseImageUrl=${this.baseImageUrl}
|
|
362
|
+
.loggedIn=${this.loggedIn}
|
|
363
|
+
.suppressBlurring=${this.suppressBlurring}
|
|
364
|
+
?useLocalTime=${this.useLocalTime}
|
|
365
|
+
>
|
|
316
366
|
</tile-list-compact>`;
|
|
317
367
|
case 'list-detail':
|
|
318
|
-
return html `<tile-list
|
|
319
|
-
.model=${model}
|
|
320
|
-
.collectionPagePath=${collectionPagePath}
|
|
321
|
-
.collectionTitles=${this.collectionTitles}
|
|
322
|
-
.currentWidth=${currentWidth}
|
|
323
|
-
.currentHeight=${currentHeight}
|
|
324
|
-
.baseNavigationUrl=${baseNavigationUrl}
|
|
325
|
-
.sortParam=${sortParam}
|
|
326
|
-
.defaultSortParam=${defaultSortParam}
|
|
327
|
-
.creatorFilter=${creatorFilter}
|
|
328
|
-
.mobileBreakpoint=${mobileBreakpoint}
|
|
329
|
-
.baseImageUrl=${this.baseImageUrl}
|
|
330
|
-
.loggedIn=${this.loggedIn}
|
|
331
|
-
.suppressBlurring=${this.suppressBlurring}
|
|
332
|
-
?useLocalTime=${this.useLocalTime}
|
|
333
|
-
>
|
|
368
|
+
return html `<tile-list
|
|
369
|
+
.model=${model}
|
|
370
|
+
.collectionPagePath=${collectionPagePath}
|
|
371
|
+
.collectionTitles=${this.collectionTitles}
|
|
372
|
+
.currentWidth=${currentWidth}
|
|
373
|
+
.currentHeight=${currentHeight}
|
|
374
|
+
.baseNavigationUrl=${baseNavigationUrl}
|
|
375
|
+
.sortParam=${sortParam}
|
|
376
|
+
.defaultSortParam=${defaultSortParam}
|
|
377
|
+
.creatorFilter=${creatorFilter}
|
|
378
|
+
.mobileBreakpoint=${mobileBreakpoint}
|
|
379
|
+
.baseImageUrl=${this.baseImageUrl}
|
|
380
|
+
.loggedIn=${this.loggedIn}
|
|
381
|
+
.suppressBlurring=${this.suppressBlurring}
|
|
382
|
+
?useLocalTime=${this.useLocalTime}
|
|
383
|
+
>
|
|
334
384
|
</tile-list>`;
|
|
335
385
|
default:
|
|
336
386
|
return nothing;
|
|
@@ -339,96 +389,157 @@ let TileDispatcher = class TileDispatcher extends BaseTileComponent {
|
|
|
339
389
|
static get styles() {
|
|
340
390
|
return [
|
|
341
391
|
srOnlyStyle,
|
|
342
|
-
css `
|
|
343
|
-
:host {
|
|
344
|
-
display: block;
|
|
345
|
-
height: 100%;
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
collection-tile {
|
|
349
|
-
--tileBorderColor: #555555;
|
|
350
|
-
--tileBackgroundColor: #666666;
|
|
351
|
-
--imageBlockBackgroundColor: #666666;
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
account-tile {
|
|
355
|
-
--tileBorderColor: #dddddd;
|
|
356
|
-
--imageBlockBackgroundColor: #fcf5e6;
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
item-tile {
|
|
360
|
-
--tileBorderColor: #dddddd;
|
|
361
|
-
--imageBlockBackgroundColor: #f1f1f4;
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
search-tile {
|
|
365
|
-
--tileBorderColor: #555555;
|
|
366
|
-
--tileBackgroundColor: #666666;
|
|
367
|
-
--imageBlockBackgroundColor: #666666;
|
|
368
|
-
--iconFillColor: #2c2c2c;
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
#container {
|
|
372
|
-
position: relative;
|
|
373
|
-
height: 100%;
|
|
374
|
-
border-radius: 4px;
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
height:
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
392
|
+
css `
|
|
393
|
+
:host {
|
|
394
|
+
display: block;
|
|
395
|
+
height: 100%;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
collection-tile {
|
|
399
|
+
--tileBorderColor: #555555;
|
|
400
|
+
--tileBackgroundColor: #666666;
|
|
401
|
+
--imageBlockBackgroundColor: #666666;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
account-tile {
|
|
405
|
+
--tileBorderColor: #dddddd;
|
|
406
|
+
--imageBlockBackgroundColor: #fcf5e6;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
item-tile {
|
|
410
|
+
--tileBorderColor: #dddddd;
|
|
411
|
+
--imageBlockBackgroundColor: #f1f1f4;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
search-tile {
|
|
415
|
+
--tileBorderColor: #555555;
|
|
416
|
+
--tileBackgroundColor: #666666;
|
|
417
|
+
--imageBlockBackgroundColor: #666666;
|
|
418
|
+
--iconFillColor: #2c2c2c;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
#container {
|
|
422
|
+
position: relative;
|
|
423
|
+
height: 100%;
|
|
424
|
+
border-radius: 4px;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
/*
|
|
428
|
+
* When tile actions are present, the container becomes the visual "card"
|
|
429
|
+
* so that the tile content and action buttons appear as one unified element.
|
|
430
|
+
*/
|
|
431
|
+
/*
|
|
432
|
+
* When tile actions are present, the container takes over the tile's
|
|
433
|
+
* border-radius and box-shadow so that the action bar appears as part
|
|
434
|
+
* of the same card. The inner tile's own shadow/radius are disabled
|
|
435
|
+
* via CSS variable overrides so there is no visual duplication.
|
|
436
|
+
*/
|
|
437
|
+
#container.has-tile-actions {
|
|
438
|
+
display: flex;
|
|
439
|
+
flex-direction: column;
|
|
440
|
+
overflow: hidden;
|
|
441
|
+
box-shadow: var(--tileShadow, 1px 1px 2px 0);
|
|
442
|
+
--tileBoxShadow: none;
|
|
443
|
+
--tileCornerRadius: 0;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
#container.has-tile-actions .tile-link {
|
|
447
|
+
flex: 1;
|
|
448
|
+
min-height: 0;
|
|
449
|
+
overflow: hidden;
|
|
450
|
+
border-radius: 0;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
/* Move hover shadow to container level when tile actions are present */
|
|
454
|
+
#container.hoverable:not(.has-tile-actions) a:focus,
|
|
455
|
+
#container.hoverable:not(.has-tile-actions) a:hover {
|
|
456
|
+
box-shadow: var(
|
|
457
|
+
--tileHoverBoxShadow,
|
|
458
|
+
0 0 6px 2px rgba(8, 8, 32, 0.8)
|
|
459
|
+
);
|
|
460
|
+
transition: box-shadow 0.1s ease;
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
#container.hoverable.has-tile-actions:hover {
|
|
464
|
+
box-shadow: var(
|
|
465
|
+
--tileHoverBoxShadow,
|
|
466
|
+
0 0 6px 2px rgba(8, 8, 32, 0.8)
|
|
467
|
+
);
|
|
468
|
+
transition: box-shadow 0.1s ease;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
a {
|
|
472
|
+
display: block;
|
|
473
|
+
height: 100%;
|
|
474
|
+
color: unset;
|
|
475
|
+
text-decoration: none;
|
|
476
|
+
transition: transform 0.05s ease;
|
|
477
|
+
border-radius: 4px;
|
|
478
|
+
outline: none;
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
a :first-child {
|
|
482
|
+
display: block;
|
|
483
|
+
height: 100%;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
.manage-check {
|
|
487
|
+
position: absolute;
|
|
488
|
+
right: 0;
|
|
489
|
+
top: 0;
|
|
490
|
+
border: 5px solid #2c2c2c;
|
|
491
|
+
border-radius: 3px;
|
|
492
|
+
background-color: #2c2c2c;
|
|
493
|
+
z-index: 1;
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
.manage-check > input[type='checkbox'] {
|
|
497
|
+
display: block;
|
|
498
|
+
margin: 0;
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
#touch-backdrop {
|
|
502
|
+
position: fixed;
|
|
503
|
+
width: 100vw;
|
|
504
|
+
height: 100vh;
|
|
505
|
+
top: 0;
|
|
506
|
+
left: 0;
|
|
507
|
+
z-index: 2;
|
|
508
|
+
background: transparent;
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
tile-hover-pane {
|
|
512
|
+
position: absolute;
|
|
513
|
+
top: 0;
|
|
514
|
+
left: -9999px;
|
|
515
|
+
z-index: 2;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
.tile-actions {
|
|
519
|
+
flex-shrink: 0;
|
|
520
|
+
display: flex;
|
|
521
|
+
border-top: 1px solid var(--tileActionSeparatorColor, #ddd);
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
.tile-action-btn {
|
|
525
|
+
flex: 1;
|
|
526
|
+
padding: 8px;
|
|
527
|
+
border: none;
|
|
528
|
+
border-radius: 0;
|
|
529
|
+
font-size: 1.2rem;
|
|
530
|
+
cursor: pointer;
|
|
531
|
+
color: var(--tileActionColor, #333);
|
|
532
|
+
background: var(--tileActionBg, #fff);
|
|
533
|
+
transition: background 0.15s;
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
.tile-action-btn + .tile-action-btn {
|
|
537
|
+
border-left: 1px solid var(--tileActionSeparatorColor, #ddd);
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
.tile-action-btn:hover {
|
|
541
|
+
background: var(--tileActionHoverBg, #f0f0f0);
|
|
542
|
+
}
|
|
432
543
|
`,
|
|
433
544
|
];
|
|
434
545
|
}
|
|
@@ -457,6 +568,9 @@ __decorate([
|
|
|
457
568
|
__decorate([
|
|
458
569
|
property({ type: String })
|
|
459
570
|
], TileDispatcher.prototype, "manageCheckTitle", void 0);
|
|
571
|
+
__decorate([
|
|
572
|
+
property({ type: Array })
|
|
573
|
+
], TileDispatcher.prototype, "tileActions", void 0);
|
|
460
574
|
__decorate([
|
|
461
575
|
query('#container')
|
|
462
576
|
], TileDispatcher.prototype, "container", void 0);
|