mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	move clipboard.js to npm/webpack (#10183)
- created lazy-loaded webpack chunk for clipboard.js - upgraded clipboard.js from 1.5.9 to 2.0.4 - parallelize initialization of all lazy-loaded features Co-authored-by: Antoine GIRARD <sapk@users.noreply.github.com>
This commit is contained in:
		
							
								
								
									
										23
									
								
								web_src/js/features/clipboard.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								web_src/js/features/clipboard.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
export default async function initClipboard() {
 | 
			
		||||
  const els = document.querySelectorAll('.clipboard');
 | 
			
		||||
  if (!els || !els.length) return;
 | 
			
		||||
 | 
			
		||||
  const { default: ClipboardJS } = await import(/* webpackChunkName: "clipboard" */'clipboard');
 | 
			
		||||
 | 
			
		||||
  const clipboard = new ClipboardJS(els);
 | 
			
		||||
  clipboard.on('success', (e) => {
 | 
			
		||||
    e.clearSelection();
 | 
			
		||||
 | 
			
		||||
    $(`#${e.trigger.getAttribute('id')}`).popup('destroy');
 | 
			
		||||
    e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-success'));
 | 
			
		||||
    $(`#${e.trigger.getAttribute('id')}`).popup('show');
 | 
			
		||||
    e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-original'));
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  clipboard.on('error', (e) => {
 | 
			
		||||
    $(`#${e.trigger.getAttribute('id')}`).popup('destroy');
 | 
			
		||||
    e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-error'));
 | 
			
		||||
    $(`#${e.trigger.getAttribute('id')}`).popup('show');
 | 
			
		||||
    e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-original'));
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
@@ -10,6 +10,7 @@ import './vendor/semanticDropdown.js';
 | 
			
		||||
import initContextPopups from './features/contextPopup.js';
 | 
			
		||||
import initHighlight from './features/highlight.js';
 | 
			
		||||
import initGitGraph from './features/gitGraph.js';
 | 
			
		||||
import initClipboard from './features/clipboard.js';
 | 
			
		||||
 | 
			
		||||
import ActivityTopAuthors from './components/ActivityTopAuthors.vue';
 | 
			
		||||
 | 
			
		||||
@@ -2453,24 +2454,6 @@ $(document).ready(async () => {
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Clipboard JS
 | 
			
		||||
  const clipboard = new Clipboard('.clipboard');
 | 
			
		||||
  clipboard.on('success', (e) => {
 | 
			
		||||
    e.clearSelection();
 | 
			
		||||
 | 
			
		||||
    $(`#${e.trigger.getAttribute('id')}`).popup('destroy');
 | 
			
		||||
    e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-success'));
 | 
			
		||||
    $(`#${e.trigger.getAttribute('id')}`).popup('show');
 | 
			
		||||
    e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-original'));
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  clipboard.on('error', (e) => {
 | 
			
		||||
    $(`#${e.trigger.getAttribute('id')}`).popup('destroy');
 | 
			
		||||
    e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-error'));
 | 
			
		||||
    $(`#${e.trigger.getAttribute('id')}`).popup('show');
 | 
			
		||||
    e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-original'));
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  // Helpers.
 | 
			
		||||
  $('.delete-button').click(showDeletePopup);
 | 
			
		||||
  $('.add-all-button').click(showAddAllPopup);
 | 
			
		||||
@@ -2579,7 +2562,6 @@ $(document).ready(async () => {
 | 
			
		||||
  initRepoStatusChecker();
 | 
			
		||||
  initTemplateSearch();
 | 
			
		||||
  initContextPopups(suburl);
 | 
			
		||||
  initGitGraph();
 | 
			
		||||
 | 
			
		||||
  // Repo clone url.
 | 
			
		||||
  if ($('#repo-clone-url').length > 0) {
 | 
			
		||||
@@ -2616,8 +2598,11 @@ $(document).ready(async () => {
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  // parallel init of lazy-loaded features
 | 
			
		||||
  [hljs] = await Promise.all([
 | 
			
		||||
    initHighlight(),
 | 
			
		||||
    initGitGraph(),
 | 
			
		||||
    initClipboard(),
 | 
			
		||||
  ]);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user