← All changes
|
modules/infinite-scroll/infinity-customizer.js
+53
-0
16.2-beta
→
16.3-beta
View file →
| @@ -1,0 +1,53 @@ | ||
| 1 | +( function ( $ ) { | |
| 2 | + /** | |
| 3 | + * Ready, set, go! | |
| 4 | + */ | |
| 5 | + $( document ).ready( function () { | |
| 6 | + // Integrate with Selective Refresh in the Customizer. | |
| 7 | + if ( 'undefined' !== typeof wp && wp.customize && wp.customize.selectiveRefresh ) { | |
| 8 | + /** | |
| 9 | + * Handle rendering of selective refresh partials. | |
| 10 | + * | |
| 11 | + * Make sure that when a partial is rendered, the Jetpack post-load event | |
| 12 | + * will be triggered so that any dynamic elements will be re-constructed, | |
| 13 | + * such as ME.js elements, Photon replacements, social sharing, and more. | |
| 14 | + * Note that this is applying here not strictly to posts being loaded. | |
| 15 | + * If a widget contains a ME.js element and it is previewed via selective | |
| 16 | + * refresh, the post-load would get triggered allowing any dynamic elements | |
| 17 | + * therein to also be re-constructed. | |
| 18 | + * | |
| 19 | + * @param {wp.customize.selectiveRefresh.Placement} placement | |
| 20 | + */ | |
| 21 | + wp.customize.selectiveRefresh.bind( 'partial-content-rendered', function ( placement ) { | |
| 22 | + var content; | |
| 23 | + if ( 'string' === typeof placement.addedContent ) { | |
| 24 | + content = placement.addedContent; | |
| 25 | + } else if ( placement.container ) { | |
| 26 | + content = $( placement.container ).html(); | |
| 27 | + } | |
| 28 | + | |
| 29 | + if ( content ) { | |
| 30 | + $( document.body ).trigger( 'post-load', { html: content } ); | |
| 31 | + } | |
| 32 | + } ); | |
| 33 | + | |
| 34 | + /* | |
| 35 | + * Add partials for posts added via infinite scroll. | |
| 36 | + * | |
| 37 | + * This is unnecessary when MutationObserver is supported by the browser | |
| 38 | + * since then this will be handled by Selective Refresh in core. | |
| 39 | + */ | |
| 40 | + if ( 'undefined' === typeof MutationObserver ) { | |
| 41 | + $( document.body ).on( 'post-load', function ( e, response ) { | |
| 42 | + var rootElement = null; | |
| 43 | + if ( response.html && -1 !== response.html.indexOf( 'data-customize-partial' ) ) { | |
| 44 | + if ( window.infiniteScroll.settings.id ) { | |
| 45 | + rootElement = $( '#' + window.infiniteScroll.settings.id ); | |
| 46 | + } | |
| 47 | + wp.customize.selectiveRefresh.addPartials( rootElement ); | |
| 48 | + } | |
| 49 | + } ); | |
| 50 | + } | |
| 51 | + } | |
| 52 | + } ); | |
| 53 | +} )( jQuery ); // Close closure | |