104 lines
		
	
	
		
			No EOL
		
	
	
		
			2.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			No EOL
		
	
	
		
			2.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| {{#if media.length}}
 | |
|   <div class="compose-media-container" style="grid-template-columns: repeat({{media.length}}, 1fr);">
 | |
|     {{#each media as mediaItem, i}}
 | |
|       <div class="compose-media">
 | |
|         <img src="{{mediaItem.data.preview_url}}" alt="{{mediaItem.file.name}}"/>
 | |
|         <div class="compose-media-delete">
 | |
|           <button class="compose-media-delete-button"
 | |
|                   aria-label="Delete {{mediaItem.file.name}}"
 | |
|                   on:click="onDeleteMedia(i)" >
 | |
|             <svg class="compose-media-delete-button-svg">
 | |
|               <use xlink:href="#fa-times" />
 | |
|             </svg>
 | |
|           </button>
 | |
|         </div>
 | |
|         <div class="compose-media-alt">
 | |
|           <input type="text"
 | |
|                  placeholder="Description"
 | |
|                  aria-label="Describe {{mediaItem.file.name}} for the visually impaired">
 | |
|         </div>
 | |
|       </div>
 | |
|     {{/each}}
 | |
|   </div>
 | |
| {{/if}}
 | |
| <style>
 | |
|   .compose-media-container {
 | |
|     grid-area: media;
 | |
|     display: grid;
 | |
|     grid-column-gap: 5px;
 | |
|     align-items: center;
 | |
|     justify-content: center;
 | |
|     margin-top: 10px;
 | |
|     background: var(--form-bg);
 | |
|     padding: 5px;
 | |
|     border-radius: 4px;
 | |
|   }
 | |
|   .compose-media {
 | |
|     height: 200px;
 | |
|     overflow: hidden;
 | |
|     flex-direction: column;
 | |
|     position: relative;
 | |
|     display: flex;
 | |
|     background: var(--main-bg);
 | |
|   }
 | |
|   .compose-media img {
 | |
|     object-fit: contain;
 | |
|     object-position: center center;
 | |
|     flex: 1;
 | |
|     height: 100%;
 | |
|     width: 100%;
 | |
|   }
 | |
|   .compose-media-alt {
 | |
|     z-index: 10;
 | |
|     position: absolute;
 | |
|     bottom: 0;
 | |
|     left: 0;
 | |
|     right: 0;
 | |
|     display: flex;
 | |
|     justify-content: center;
 | |
|   }
 | |
|   .compose-media-alt input {
 | |
|     width: 100%;
 | |
|     font-size: 1.2em;
 | |
|     background: var(--alt-input-bg);
 | |
|   }
 | |
|   .compose-media-alt input:focus {
 | |
|     background: var(--main-bg);
 | |
|   }
 | |
|   .compose-media-delete {
 | |
|     position: absolute;
 | |
|     z-index: 10;
 | |
|     top: 0;
 | |
|     right: 0;
 | |
|     left: 0;
 | |
|     display: flex;
 | |
|     justify-content: flex-end;
 | |
|     margin: 2px;
 | |
|   }
 | |
|   .compose-media-delete-button {
 | |
|     padding: 10px;
 | |
|     background: none;
 | |
|     border: none;
 | |
|   }
 | |
|   .compose-media-delete-button:hover {
 | |
|     background: var(--toast-border);
 | |
|   }
 | |
|   .compose-media-delete-button-svg {
 | |
|     fill: var(--button-text);
 | |
|     width: 18px;
 | |
|     height: 18px;
 | |
|   }
 | |
| </style>
 | |
| <script>
 | |
|   import { store } from '../../_store/store'
 | |
|   import { deleteMedia } from '../../_actions/media'
 | |
| 
 | |
|   export default {
 | |
|     store: () => store,
 | |
|     methods: {
 | |
|       onDeleteMedia(i) {
 | |
|         deleteMedia(this.get('realm'), i)
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| </script> |