forked from cybrespace/pinafore
95 lines
2.3 KiB
HTML
95 lines
2.3 KiB
HTML
<SearchResult href="/accounts/{account.id}">
|
|
<div class="search-result-account">
|
|
<Avatar {account} size="small" className="search-result-account-avatar"/>
|
|
<div class="search-result-account-name">
|
|
{account.display_name || account.acct}
|
|
</div>
|
|
<div class="search-result-account-username">
|
|
{'@' + account.acct}
|
|
</div>
|
|
{#if actions && actions.length}
|
|
<div class="search-result-account-buttons">
|
|
{#each actions as action}
|
|
<IconButton
|
|
label={action.label}
|
|
on:click="onButtonClick(event, action, account.id)"
|
|
href={action.icon}
|
|
big="true"
|
|
/>
|
|
{/each}
|
|
</div>
|
|
{/if}
|
|
</div>
|
|
</SearchResult>
|
|
<style>
|
|
.search-result-account {
|
|
display: grid;
|
|
grid-template-areas:
|
|
"avatar name buttons"
|
|
"avatar username buttons";
|
|
grid-column-gap: 20px;
|
|
grid-template-columns: max-content 1fr max-content;
|
|
align-items: center;
|
|
}
|
|
:global(.search-result-account-avatar) {
|
|
grid-area: avatar;
|
|
}
|
|
.search-result-account-name {
|
|
grid-area: name;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
font-size: 1.2em;
|
|
}
|
|
.search-result-account-username {
|
|
grid-area: username;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
color: var(--deemphasized-text-color);
|
|
}
|
|
.search-result-account-buttons {
|
|
grid-area: buttons;
|
|
display: flex;
|
|
}
|
|
:global(.search-result-account-buttons .icon-button) {
|
|
margin-right: 20px;
|
|
}
|
|
:global(.search-result-account-buttons .icon-button:last-child) {
|
|
margin-right: 0;
|
|
}
|
|
@media (max-width: 767px) {
|
|
.search-result-account {
|
|
grid-column-gap: 10px;
|
|
}
|
|
:global(.search-result-account-buttons .icon-button) {
|
|
margin-right: 10px;
|
|
}
|
|
}
|
|
</style>
|
|
<script>
|
|
import Avatar from '../Avatar.html'
|
|
import SearchResult from './SearchResult.html'
|
|
import IconButton from '../IconButton.html'
|
|
|
|
export default {
|
|
data: () => ({
|
|
actions: void 0
|
|
}),
|
|
methods: {
|
|
onButtonClick (event, action, accountId) {
|
|
event.preventDefault()
|
|
event.stopPropagation()
|
|
this.fire('click', {
|
|
action,
|
|
accountId
|
|
})
|
|
}
|
|
},
|
|
components: {
|
|
Avatar,
|
|
SearchResult,
|
|
IconButton
|
|
}
|
|
}
|
|
</script> |