( 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 widgetItem = $( this ).parents( '.jetpack-social-icons-widget-item' ); widgetItem.find( 'input' ).change(); widgetItem.remove(); } ); // 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 );