Make WordPress Core

Ticket #27348: 27348.3.patch

File 27348.3.patch, 3.3 KB (added by westonruter, 11 years ago)

Change order of jQuery animation and expand event so that element dimensions can be calculated. Commits/patches also pushed to https://github.com/x-team/wordpress-develop/pull/6/files

  • src/wp-admin/css/customize-widgets.css

    diff --git src/wp-admin/css/customize-widgets.css src/wp-admin/css/customize-widgets.css
    index f8530a1..b6b62d1 100644
     
    5454        position: fixed;
    5555        left: 299px;
    5656        top: 25%;
    57         padding: 20px;
    5857        border: 1px solid rgb(229, 229, 229);
    5958        z-index: -1;
     59        overflow: auto;
     60}
     61.customize-control-widget_form.wide-widget-control .widget-inside > .form {
     62        padding: 20px;
    6063}
    6164.customize-control-widget_form.wide-widget-control.collapsing .widget-inside {
    6265        z-index: -2;
  • src/wp-admin/js/customize-widgets.js

    diff --git src/wp-admin/js/customize-widgets.js src/wp-admin/js/customize-widgets.js
    index a489b6e..425e3db 100644
    var WidgetCustomizer = ( function ($) { 
    703703                _setupWideWidget: function () {
    704704                        var control = this,
    705705                                widget_inside,
     706                                widget_form,
    706707                                customize_sidebar,
    707708                                position_widget,
    708709                                theme_controls_container;
    var WidgetCustomizer = ( function ($) { 
    712713                        }
    713714
    714715                        widget_inside = control.container.find( '.widget-inside' );
     716                        widget_form = widget_inside.find( '> .form' );
    715717                        customize_sidebar = $( '.wp-full-overlay-sidebar-content:first' );
    716718                        control.container.addClass( 'wide-widget-control' );
    717719
    var WidgetCustomizer = ( function ($) { 
    725727                         * element is at the same top position as the widget-top. When the
    726728                         * widget-top is scrolled out of view, keep the widget-top in view;
    727729                         * likewise, don't allow the widget to drop off the bottom of the window.
     730                         * If a widget is too tall to fit in the window, don't let the height
     731                         * exceed the window height so that the contents of the widget control
     732                         * will become scrollable (overflow:auto).
    728733                         */
    729734                        position_widget = function () {
    730735                                var offset_top = control.container.offset().top,
    731                                         height,
    732                                         top,
    733                                         max_top;
    734 
    735                                 height = widget_inside.outerHeight();
    736                                 top = Math.max( offset_top, 0 );
    737                                 max_top = $( window ).height() - height;
    738                                 top = Math.min( top, max_top );
     736                                        window_height = $( window ).height(),
     737                                        form_height = widget_form.outerHeight(),
     738                                        top;
     739                                widget_inside.css( 'max-height', window_height );
     740                                top = Math.max(
     741                                        0, // prevent top from going off screen
     742                                        Math.min(
     743                                                Math.max( offset_top, 0 ), // distance widget in panel is from top of screen
     744                                                window_height - form_height // flush up against bottom of screen
     745                                        )
     746                                );
    739747                                widget_inside.css( 'top', top );
    740748                        };
    741749
    var WidgetCustomizer = ( function ($) { 
    13751383                                return;
    13761384                        }
    13771385
    1378                         complete;
    13791386                        if ( do_expand ) {
    13801387                                // Close all other widget controls before expanding this one
    13811388                                wp.customize.control.each( function ( other_control ) {
    var WidgetCustomizer = ( function ($) { 
    13841391                                        }
    13851392                                } );
    13861393
    1387                                 control.container.trigger( 'expand' );
    1388                                 control.container.addClass( 'expanding' );
    13891394                                complete = function () {
    13901395                                        control.container.removeClass( 'expanding' );
    13911396                                        control.container.addClass( 'expanded' );
    var WidgetCustomizer = ( function ($) { 
    13961401                                } else {
    13971402                                        inside.slideDown( 'fast', complete );
    13981403                                }
     1404                                control.container.trigger( 'expand' );
     1405                                control.container.addClass( 'expanding' );
    13991406                        } else {
    14001407                                control.container.trigger( 'collapse' );
    14011408                                control.container.addClass( 'collapsing' );