47 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| import $ from 'jquery';
 | |
| 
 | |
| export default function initClonePanel() {
 | |
|   const $cloneOptions = $('ul.clone-options-dropdown');
 | |
|   if ($cloneOptions.length) {
 | |
|     const $cloneUrlField = $('#clone_url');
 | |
|     const $cloneBtnLabel = $('.js-git-clone-holder .js-clone-dropdown-label');
 | |
|     const mobileCloneField = document.querySelector(
 | |
|       '.js-mobile-git-clone .js-clone-dropdown-label',
 | |
|     );
 | |
| 
 | |
|     const selectedCloneOption = $cloneBtnLabel.text().trim();
 | |
|     if (selectedCloneOption.length > 0) {
 | |
|       $(`a:contains('${selectedCloneOption}')`, $cloneOptions).addClass('is-active');
 | |
|     }
 | |
| 
 | |
|     $('a', $cloneOptions).on('click', (e) => {
 | |
|       const $this = $(e.currentTarget);
 | |
|       const url = $this.attr('href');
 | |
|       if (url && (url.startsWith('vscode://') || url.startsWith('xcode://'))) {
 | |
|         // Clone with "..." should open like a normal link
 | |
|         return;
 | |
|       }
 | |
|       e.preventDefault();
 | |
|       const cloneType = $this.data('cloneType');
 | |
| 
 | |
|       $('.is-active', $cloneOptions).removeClass('is-active');
 | |
|       $(`a[data-clone-type="${cloneType}"]`).each(function switchProtocol() {
 | |
|         const $el = $(this);
 | |
|         const activeText = $el.find('.dropdown-menu-inner-title').text();
 | |
|         const $container = $el.closest('.js-git-clone-holder, .js-mobile-git-clone');
 | |
|         const $label = $container.find('.js-clone-dropdown-label');
 | |
| 
 | |
|         $el.toggleClass('is-active');
 | |
|         $label.text(activeText);
 | |
|       });
 | |
| 
 | |
|       if (mobileCloneField) {
 | |
|         mobileCloneField.dataset.clipboardText = url;
 | |
|       } else {
 | |
|         $cloneUrlField.val(url);
 | |
|       }
 | |
|       $('.js-git-empty .js-clone').text(url);
 | |
|     });
 | |
|   }
 | |
| }
 |