pinafore/src/routes/_components/status/StatusCard.html

96 lines
2 KiB
HTML
Raw Normal View History

<a href="{url}" class="status-card" target="_blank" rel="noopener noreferrer">
<strong class="card-title">
{title}
</strong>
{#if description}
<div class="card-content">
{#if imageUrl}
<LazyImage forceSize={true} height="50" width="50" src={imageUrl} ariaHidden={true} />
{:else}
<SvgIcon style="width: 30px; height: 30px; padding: 10px; fill: var(--action-button-deemphasized-fill-color);"
href="#fa-file-text" />
{/if}
{#if description}
<span class="card-description">
{description}
</span>
{/if}
</div>
{/if}
</a>
<style>
.status-card {
grid-area: card;
display: flex;
flex-direction: column;
padding: 15px;
text-decoration: none;
color: inherit;
overflow: hidden;
max-width: calc(100vw - 40px);
margin: 10px 10px 10px 5px;
border: 1px solid var(--settings-list-item-border);
background: var(--settings-list-item-bg-hover);
border-radius: 6px;
}
.status-card:hover {
background: transparent;
}
.status-card :first-child {
flex-shrink: 0;
}
.card-content {
display: flex;
align-items: center;
margin-top: 5px;
opacity: 0.8;
}
.card-title {
font-weight: 600;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
width: 100%;
display: inline-block;
opacity: 0.8;
}
.card-description {
font-size: small;
line-height: 1.4;
max-height: 5.6em; /* 4 * line-height */
overflow: hidden;
}
.card-description:not(:first-child) {
margin-left: 15px;
}
</style>
<script>
import LazyImage from '../LazyImage.html'
import SvgIcon from '../SvgIcon.html'
export default {
components: {
SvgIcon,
LazyImage
},
computed: {
card: ({ originalStatus }) => originalStatus.card,
title: ({ card }) => card.title,
url: ({ card }) => card.url,
description: ({ card }) => card.description || card.provider_name,
imageUrl: ({ card }) => card.image
}
}
</script>