mirror of
				https://github.com/BookStackApp/BookStack.git
				synced 2025-10-29 16:09:29 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import {Component} from "./component";
 | |
| 
 | |
| /**
 | |
|  * Attachments List
 | |
|  * Adds '?open=true' query to file attachment links
 | |
|  * when ctrl/cmd is pressed down.
 | |
|  */
 | |
| export class AttachmentsList extends Component {
 | |
| 
 | |
|     setup() {
 | |
|         this.container = this.$el;
 | |
|         this.setupListeners();
 | |
|     }
 | |
| 
 | |
|     setupListeners() {
 | |
|         const isExpectedKey = (event) => event.key === 'Control' || event.key === 'Meta';
 | |
|         window.addEventListener('keydown', event => {
 | |
|              if (isExpectedKey(event)) {
 | |
|                 this.addOpenQueryToLinks();
 | |
|              }
 | |
|         }, {passive: true});
 | |
|         window.addEventListener('keyup', event => {
 | |
|             if (isExpectedKey(event)) {
 | |
|                 this.removeOpenQueryFromLinks();
 | |
|             }
 | |
|         }, {passive: true});
 | |
|     }
 | |
| 
 | |
|     addOpenQueryToLinks() {
 | |
|         const links = this.container.querySelectorAll('a.attachment-file');
 | |
|         for (const link of links) {
 | |
|             if (link.href.split('?')[1] !== 'open=true') {
 | |
|                 link.href = link.href + '?open=true';
 | |
|                 link.setAttribute('target', '_blank');
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     removeOpenQueryFromLinks() {
 | |
|         const links = this.container.querySelectorAll('a.attachment-file');
 | |
|         for (const link of links) {
 | |
|             link.href = link.href.split('?')[0];
 | |
|             link.removeAttribute('target');
 | |
|         }
 | |
|     }
 | |
| } |