* fix(a11y): improved aria-label for status and notifications fixes #689 * only calculate formatted date once * fixup tests * fixup tests more * fixup * fixup tests again
		
			
				
	
	
		
			57 lines
		
	
	
		
			No EOL
		
	
	
		
			1.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			No EOL
		
	
	
		
			1.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| {#if status}
 | |
|   <Status {index} {length} {timelineType} {timelineValue} {focusSelector}
 | |
|           {status} {notification} on:recalculateHeight
 | |
|   />
 | |
| {:else}
 | |
|   <article class="notification-article"
 | |
|            tabindex="0"
 | |
|            aria-posinset={index}
 | |
|            aria-setsize={length}
 | |
|            aria-label={ariaLabel}
 | |
|   >
 | |
|     <StatusHeader {notification} {notificationId} {status} {statusId} {timelineType}
 | |
|                   {account} {accountId} {uuid} isStatusInNotification="true" />
 | |
|   </article>
 | |
| {/if}
 | |
| <style>
 | |
|   .notification-article {
 | |
|     width: 560px;
 | |
|     max-width: calc(100vw - 40px);
 | |
|     padding: 10px 20px;
 | |
|     border-bottom: 1px solid var(--main-border);
 | |
|   }
 | |
|   @media (max-width: 767px) {
 | |
|     .notification-article {
 | |
|       padding: 10px 10px;
 | |
|       max-width: calc(100vw - 20px);
 | |
|       width: 580px;
 | |
|     }
 | |
|   }
 | |
| </style>
 | |
| <script>
 | |
|   import Status from './Status.html'
 | |
|   import StatusHeader from './StatusHeader.html'
 | |
|   import { store } from '../../_store/store'
 | |
|   import { getAccountAccessibleName } from '../../_a11y/getAccountAccessibleName'
 | |
| 
 | |
|   export default {
 | |
|     components: {
 | |
|       Status,
 | |
|       StatusHeader
 | |
|     },
 | |
|     store: () => store,
 | |
|     computed: {
 | |
|       account: ({ notification }) => notification.account,
 | |
|       accountId: ({ account }) => account.id,
 | |
|       notificationId: ({ notification }) => notification.id,
 | |
|       status: ({ notification }) => notification.status,
 | |
|       statusId: ({ status }) => status && status.id,
 | |
|       uuid: ({ $currentInstance, timelineType, timelineValue, notificationId, statusId }) => {
 | |
|         return `${$currentInstance}/${timelineType}/${timelineValue}/${notificationId}/${statusId || ''}`
 | |
|       },
 | |
|       ariaLabel: ({ status, account, $omitEmojiInDisplayNames }) => (
 | |
|         !status && `${getAccountAccessibleName(account, $omitEmojiInDisplayNames)} followed you, @${account.acct}`
 | |
|       )
 | |
|     }
 | |
|   }
 | |
| </script> |