mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-27 20:41:01 +00:00 
			
		
		
		
	The modal was broken in two ways: - On small screens, the input box was partially hanging outside the modal. Fixed with flexbox and increased modal width. - The clipboard copy was not working because the modal had both `data-clipboard-text` and `data-clipboard-target`, while we only support one of those. Made a small tweak in clipboard as well so that it will still fall back to target if text is empty. (cherry picked from commit 94512ee0628dc0d2b697441a4355ace54b6515cd)
		
			
				
	
	
		
			32 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import {showTemporaryTooltip} from '../modules/tippy.js';
 | |
| import {toAbsoluteUrl} from '../utils.js';
 | |
| import {clippie} from 'clippie';
 | |
| 
 | |
| const {copy_success, copy_error} = window.config.i18n;
 | |
| 
 | |
| // Enable clipboard copy from HTML attributes. These properties are supported:
 | |
| // - data-clipboard-text: Direct text to copy
 | |
| // - data-clipboard-target: Holds a selector for a <input> or <textarea> whose content is copied
 | |
| // - data-clipboard-text-type: When set to 'url' will convert relative to absolute urls
 | |
| export function initGlobalCopyToClipboardListener() {
 | |
|   document.addEventListener('click', async (e) => {
 | |
|     const target = e.target.closest('[data-clipboard-text], [data-clipboard-target]');
 | |
|     if (!target) return;
 | |
| 
 | |
|     e.preventDefault();
 | |
| 
 | |
|     let text = target.getAttribute('data-clipboard-text');
 | |
|     if (!text) {
 | |
|       text = document.querySelector(target.getAttribute('data-clipboard-target'))?.value;
 | |
|     }
 | |
| 
 | |
|     if (text && target.getAttribute('data-clipboard-text-type') === 'url') {
 | |
|       text = toAbsoluteUrl(text);
 | |
|     }
 | |
| 
 | |
|     if (text) {
 | |
|       const success = await clippie(text);
 | |
|       showTemporaryTooltip(target, success ? copy_success : copy_error);
 | |
|     }
 | |
|   });
 | |
| }
 |