WordPress.org

Make WordPress Core

Ticket #39389: 39389.0.diff

File 39389.0.diff, 2.6 KB (added by westonruter, 3 years ago)
  • src/wp-includes/js/customize-selective-refresh.js

    diff --git src/wp-includes/js/customize-selective-refresh.js src/wp-includes/js/customize-selective-refresh.js
    index d3b81db6d7..32f5b2f6df 100644
    wp.customize.selectiveRefresh = ( function( $, api ) { 
    334334                 * @param {Placement} placement
    335335                 */
    336336                preparePlacement: function( placement ) {
     337                        var partial = this;
    337338                        $( placement.container ).addClass( 'customize-partial-refreshing' );
     339                        partial.scrollIntoView( placement );
     340                },
     341
     342                /**
     343                 * Scroll a placement container into view.
     344                 *
     345                 * @since 4.8.0
     346                 *
     347                 * @param {Placement} [placement] Placement, if not provided then the first found placement will be used.
     348                 * @returns {void}
     349                 */
     350                scrollIntoView: function( placement ) {
     351                        var partial = this, container, docViewTop, docViewBottom, elemTop, elemBottom, selectedPlacement;
     352                        selectedPlacement = placement || partial.placements()[0];
     353                        if ( ! selectedPlacement ) {
     354                                return;
     355                        }
     356                        container = $( selectedPlacement.container );
     357                        if ( ! container[0] ) {
     358                                return;
     359                        }
     360                        if ( container[0].scrollIntoViewIfNeeded ) {
     361                                container[0].scrollIntoViewIfNeeded();
     362                        } else {
     363                                // Props http://stackoverflow.com/a/488073/93579
     364                                docViewTop = $( window ).scrollTop();
     365                                docViewBottom = docViewTop + $( window ).height();
     366                                elemTop = container.offset().top;
     367                                elemBottom = elemTop + container.height();
     368                                if ( ( elemBottom > docViewBottom ) || ( elemTop < docViewTop ) ) {
     369                                        container[0].scrollIntoView( elemTop < docViewTop );
     370                                }
     371                        }
    338372                },
    339373
    340374                /**
    wp.customize.selectiveRefresh = ( function( $, api ) { 
    469503                        // Prevent placement container from being being re-triggered as being rendered among nested partials.
    470504                        placement.container.data( 'customize-partial-content-rendered', true );
    471505
     506                        // Make sure partial is in view.
     507                        partial.scrollIntoView( placement );
     508
    472509                        /**
    473510                         * Announce when a partial's placement has been rendered so that dynamic elements can be re-built.
    474511                         */
  • src/wp-includes/js/wp-api.js

    diff --git src/wp-includes/js/wp-api.js src/wp-includes/js/wp-api.js
    index 717ebf8e06..42583cc99a 100644
     
    11541154                                                // Include the array of route methods for easy reference.
    11551155                                                methods: modelRoute.route.methods,
    11561156
    1157                                                 initialize: function() {
     1157                                                initialize: function( attributes, options ) {
     1158                                                        wp.api.WPApiBaseModel.prototype.initialize.call( this, attributes, options );
    11581159
    11591160                                                        /**
    11601161                                                         * Posts and pages support trashing, other types don't support a trash