Add upstream
This commit is contained in:
		| @@ -0,0 +1,144 @@ | ||||
| ( function( $ ) { | ||||
| 	var timeout = null; | ||||
|  | ||||
| 	// Make the list of items sortable. | ||||
| 	function initWidget( widget ) { | ||||
| 		widget.find( '.jetpack-social-icons-widget-list' ).sortable( { | ||||
| 			items: '> .jetpack-social-icons-widget-item', | ||||
| 			handle: '.handle', | ||||
| 			cursor: 'move', | ||||
| 			placeholder: 'jetpack-social-icons-widget-item ui-state-placeholder', | ||||
| 			containment: widget, | ||||
| 			forcePlaceholderSize: true, | ||||
| 			update: function() { | ||||
| 				livePreviewUpdate( | ||||
| 					$( this ) | ||||
| 						.parents( '.form' ) | ||||
| 						.find( '.widget-control-save' ) | ||||
| 				); | ||||
| 			}, | ||||
| 		} ); | ||||
| 	} | ||||
|  | ||||
| 	// Live preview update. | ||||
| 	function livePreviewUpdate( button ) { | ||||
| 		if ( ! $( document.body ).hasClass( 'wp-customizer' ) || ! button.length ) { | ||||
| 			return; | ||||
| 		} | ||||
|  | ||||
| 		button.trigger( 'click' ).hide(); | ||||
| 	} | ||||
|  | ||||
| 	$( document ).ready( function() { | ||||
| 		// Add an item. | ||||
| 		$( document ).on( 'click', '.jetpack-social-icons-widget.add-button button', function( event ) { | ||||
| 			event.preventDefault(); | ||||
|  | ||||
| 			var template, widgetContent, widgetList, widgetLastItem, urlId, urlName; | ||||
|  | ||||
| 			template = $( $.trim( $( '#tmpl-jetpack-widget-social-icons-template' ).html() ) ); | ||||
| 			widgetContent = $( this ).parents( '.widget-content' ); | ||||
| 			widgetList = widgetContent.find( '.jetpack-social-icons-widget-list' ); | ||||
| 			urlId = widgetList.data( 'url-icon-id' ); | ||||
| 			urlName = widgetList.data( 'url-icon-name' ); | ||||
|  | ||||
| 			template | ||||
| 				.find( '.jetpack-widget-social-icons-url input' ) | ||||
| 				.attr( 'id', urlId ) | ||||
| 				.attr( 'name', urlName + '[]' ); | ||||
|  | ||||
| 			widgetList.append( template ); | ||||
|  | ||||
| 			widgetLastItem = widgetContent.find( '.jetpack-social-icons-widget-item:last' ); | ||||
| 			widgetLastItem.find( 'input:first' ).trigger( 'focus' ); | ||||
| 		} ); | ||||
|  | ||||
| 		// Remove an item. | ||||
| 		$( document ).on( 'click', '.jetpack-widget-social-icons-remove-item-button', function( | ||||
| 			event | ||||
| 		) { | ||||
| 			event.preventDefault(); | ||||
|  | ||||
| 			var button = $( this ) | ||||
| 				.parents( '.form' ) | ||||
| 				.find( '.widget-control-save' ); | ||||
|  | ||||
| 			$( this ) | ||||
| 				.parents( '.jetpack-social-icons-widget-item' ) | ||||
| 				.remove(); | ||||
|  | ||||
| 			livePreviewUpdate( button ); | ||||
| 		} ); | ||||
|  | ||||
| 		// Event handler for widget open button. | ||||
| 		$( document ).on( | ||||
| 			'click', | ||||
| 			'div.widget[id*="jetpack_widget_social_icons"] .widget-title, div.widget[id*="jetpack_widget_social_icons"] .widget-action', | ||||
| 			function() { | ||||
| 				if ( $( this ).parents( '#available-widgets' ).length ) { | ||||
| 					return; | ||||
| 				} | ||||
|  | ||||
| 				initWidget( $( this ).parents( '.widget[id*="jetpack_widget_social_icons"]' ) ); | ||||
| 			} | ||||
| 		); | ||||
|  | ||||
| 		// Event handler for widget added. | ||||
| 		$( document ).on( 'widget-added', function( event, widget ) { | ||||
| 			if ( widget.is( '[id*="jetpack_widget_social_icons"]' ) ) { | ||||
| 				event.preventDefault(); | ||||
| 				initWidget( widget ); | ||||
| 			} | ||||
| 		} ); | ||||
|  | ||||
| 		// Event handler for widget updated. | ||||
| 		$( document ).on( 'widget-updated', function( event, widget ) { | ||||
| 			if ( widget.is( '[id*="jetpack_widget_social_icons"]' ) ) { | ||||
| 				event.preventDefault(); | ||||
| 				initWidget( widget ); | ||||
| 			} | ||||
| 		} ); | ||||
|  | ||||
| 		// Live preview update on input focus out. | ||||
| 		$( document ).on( 'focusout', 'input[name*="jetpack_widget_social_icons"]', function() { | ||||
| 			livePreviewUpdate( | ||||
| 				$( this ) | ||||
| 					.parents( '.form' ) | ||||
| 					.find( '.widget-control-save' ) | ||||
| 			); | ||||
| 		} ); | ||||
|  | ||||
| 		// Live preview update on input enter key. | ||||
| 		$( document ).on( 'keydown', 'input[name*="jetpack_widget_social_icons"]', function( event ) { | ||||
| 			if ( event.keyCode === 13 ) { | ||||
| 				livePreviewUpdate( | ||||
| 					$( this ) | ||||
| 						.parents( '.form' ) | ||||
| 						.find( '.widget-control-save' ) | ||||
| 				); | ||||
| 			} | ||||
| 		} ); | ||||
|  | ||||
| 		// Live preview update on input key up 1s. | ||||
| 		$( document ).on( 'keyup', 'input[name*="jetpack_widget_social_icons"]', function() { | ||||
| 			clearTimeout( timeout ); | ||||
|  | ||||
| 			timeout = setTimeout( function() { | ||||
| 				livePreviewUpdate( | ||||
| 					$( this ) | ||||
| 						.parents( '.form' ) | ||||
| 						.find( '.widget-control-save' ) | ||||
| 				); | ||||
| 			}, 1000 ); | ||||
| 		} ); | ||||
|  | ||||
| 		// Live preview update on select change. | ||||
| 		$( document ).on( 'change', 'select[name*="jetpack_widget_social_icons"]', function() { | ||||
| 			livePreviewUpdate( | ||||
| 				$( this ) | ||||
| 					.parents( '.form' ) | ||||
| 					.find( '.widget-control-save' ) | ||||
| 			); | ||||
| 		} ); | ||||
| 	} ); | ||||
| } )( jQuery ); | ||||
		Reference in New Issue
	
	Block a user