84 lines
		
	
	
		
			No EOL
		
	
	
		
			3.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			No EOL
		
	
	
		
			3.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <article class="status-article {{originalStatus.visibility === 'direct' ? 'status-direct' : ''}}"
 | |
|          tabindex="0"
 | |
|          aria-posinset="{{index}}" aria-setsize="{{length}}"
 | |
|          on:recalculateHeight>
 | |
|   {{#if (notification && (notification.type === 'reblog' || notification.type === 'favourite')) || status.reblog}}
 | |
|     <StatusHeader :notification :status :isStatusInNotification />
 | |
|   {{/if}}
 | |
|   <StatusAuthor status="{{originalStatus}}" :isStatusInOwnThread :isStatusInNotification />
 | |
|   <StatusSidebar status="{{originalStatus}}" />
 | |
|   {{#if originalStatus.spoiler_text}}
 | |
|     <StatusSpoiler status="{{originalStatus}}" :contextualStatusId :isStatusInNotification on:recalculateHeight />
 | |
|   {{/if}}
 | |
|   {{#if !originalStatus.spoiler_text || spoilerShown}}
 | |
|     <StatusContent status="{{originalStatus}}" :isStatusInOwnThread :isStatusInNotification />
 | |
|   {{/if}}
 | |
|   {{#if originalStatus.media_attachments && originalStatus.media_attachments.length}}
 | |
|     <StatusMediaAttachments status="{{originalStatus}}" :contextualStatusId on:recalculateHeight />
 | |
|   {{/if}}
 | |
|   <StatusToolbar :status />
 | |
| </article>
 | |
| 
 | |
| <style>
 | |
|   .status-article {
 | |
|     width: 560px;
 | |
|     max-width: calc(100vw - 40px);
 | |
|     padding: 10px 20px;
 | |
|     border-bottom: 1px solid var(--main-border);
 | |
|     display: grid;
 | |
|     grid-template-areas:
 | |
|         ".............. status-header"
 | |
|         "status-sidebar status-author"
 | |
|         "status-sidebar status-spoiler"
 | |
|         "status-sidebar status-spoiler-button"
 | |
|         "status-sidebar status-content"
 | |
|         "status-media   status-media"
 | |
|         ".............. status-toolbar";
 | |
|     grid-template-columns: 58px 1fr;
 | |
|   }
 | |
| 
 | |
|   .status-article.status-direct {
 | |
|     background-color: var(--status-direct-background);
 | |
|   }
 | |
| 
 | |
|   @media (max-width: 767px) {
 | |
|     .status-article {
 | |
|       padding: 10px 10px;
 | |
|       max-width: calc(100vw - 20px);
 | |
|     }
 | |
|   }
 | |
| </style>
 | |
| <script>
 | |
|   import StatusSidebar from './StatusSidebar.html'
 | |
|   import StatusHeader from './StatusHeader.html'
 | |
|   import StatusAuthor from './StatusAuthor.html'
 | |
|   import StatusToolbar from './StatusToolbar.html'
 | |
|   import StatusMediaAttachments from './StatusMediaAttachments.html'
 | |
|   import StatusContent from './StatusContent.html'
 | |
|   import StatusSpoiler from './StatusSpoiler.html'
 | |
|   import { store } from '../../_store/store'
 | |
| 
 | |
|   export default {
 | |
|     components: {
 | |
|       StatusSidebar,
 | |
|       StatusHeader,
 | |
|       StatusAuthor,
 | |
|       StatusToolbar,
 | |
|       StatusMediaAttachments,
 | |
|       StatusContent,
 | |
|       StatusSpoiler
 | |
|     },
 | |
|     store: () => store,
 | |
|     computed: {
 | |
|       originalStatus: (status) => status.reblog ? status.reblog : status,
 | |
|       statusId: (originalStatus) => originalStatus.id,
 | |
|       contextualStatusId: ($currentInstance, timelineType, timelineValue, status, notification) => {
 | |
|         return `${$currentInstance}/${timelineType}/${timelineValue}/${notification ? notification.id : ''}/${status.id}`
 | |
|       },
 | |
|       originalAccount: (originalStatus) => originalStatus.account,
 | |
|       isStatusInOwnThread: (timelineType, timelineValue, statusId) => timelineType === 'status' && timelineValue === statusId,
 | |
|       isStatusInNotification: (status, notification) => notification && notification.status && notification.type !== 'mention' && notification.status.id === status.id,
 | |
|       spoilerShown: ($spoilersShown, contextualStatusId) => !!$spoilersShown[contextualStatusId]
 | |
|     }
 | |
|   }
 | |
| </script> |