From 21c7a3671e4720fef9beefb6bacdb3453c096b2a Mon Sep 17 00:00:00 2001
From: Piotr Delawski <piotr.delawski@xwp.co>
Date: Mon, 2 Oct 2017 19:39:29 +0200
Subject: [PATCH] Recalculate header height on container description toggle.
---
src/wp-admin/js/customize-controls.js | 50 ++++++++++++++++++++++-------------
1 file changed, 31 insertions(+), 19 deletions(-)
diff --git a/src/wp-admin/js/customize-controls.js b/src/wp-admin/js/customize-controls.js
index 3b8cfdba34..dcef922739 100644
a
|
b
|
|
1315 | 1315 | } |
1316 | 1316 | content = meta.find( '.customize-section-description:first' ); |
1317 | 1317 | content.toggleClass( 'open' ); |
1318 | | content.slideToggle(); |
| 1318 | content.slideToggle( section.defaultExpandedArguments.duration, function() { |
| 1319 | content.trigger( 'toggled' ); |
| 1320 | } ); |
1319 | 1321 | $( this ).attr( 'aria-expanded', function( i, attr ) { |
1320 | 1322 | return 'true' === attr ? 'false' : 'true'; |
1321 | 1323 | }); |
… |
… |
|
2558 | 2560 | var content = meta.find( '.customize-panel-description:first' ); |
2559 | 2561 | if ( meta.hasClass( 'open' ) ) { |
2560 | 2562 | meta.toggleClass( 'open' ); |
2561 | | content.slideUp( panel.defaultExpandedArguments.duration ); |
| 2563 | content.slideUp( panel.defaultExpandedArguments.duration, function() { |
| 2564 | content.trigger( 'toggled' ); |
| 2565 | } ); |
2562 | 2566 | $( this ).attr( 'aria-expanded', false ); |
2563 | 2567 | } else { |
2564 | | content.slideDown( panel.defaultExpandedArguments.duration ); |
| 2568 | content.slideDown( panel.defaultExpandedArguments.duration, function() { |
| 2569 | content.trigger( 'toggled' ); |
| 2570 | } ); |
2565 | 2571 | meta.toggleClass( 'open' ); |
2566 | 2572 | $( this ).attr( 'aria-expanded', true ); |
2567 | 2573 | } |
… |
… |
|
6411 | 6417 | |
6412 | 6418 | if ( section.hasClass( 'open' ) ) { |
6413 | 6419 | section.toggleClass( 'open' ); |
6414 | | content.slideUp( api.Panel.prototype.defaultExpandedArguments.duration ); |
| 6420 | content.slideUp( api.Panel.prototype.defaultExpandedArguments.duration, function() { |
| 6421 | content.trigger( 'toggled' ); |
| 6422 | } ); |
6415 | 6423 | $( this ).attr( 'aria-expanded', false ); |
6416 | 6424 | } else { |
6417 | | content.slideDown( api.Panel.prototype.defaultExpandedArguments.duration ); |
| 6425 | content.slideDown( api.Panel.prototype.defaultExpandedArguments.duration, function() { |
| 6426 | content.trigger( 'toggled' ); |
| 6427 | } ); |
6418 | 6428 | section.toggleClass( 'open' ); |
6419 | 6429 | $( this ).attr( 'aria-expanded', true ); |
6420 | 6430 | } |
… |
… |
|
7365 | 7375 | */ |
7366 | 7376 | (function initStickyHeaders() { |
7367 | 7377 | var parentContainer = $( '.wp-full-overlay-sidebar-content' ), |
7368 | | changeContainer, getHeaderHeight, releaseStickyHeader, resetStickyHeader, positionStickyHeader, |
| 7378 | changeContainer, updateHeaderHeight, releaseStickyHeader, resetStickyHeader, positionStickyHeader, |
7369 | 7379 | activeHeader, lastScrollTop; |
7370 | 7380 | |
7371 | 7381 | /** |
… |
… |
|
7383 | 7393 | expandedPanel = api.state( 'expandedPanel' ).get(), |
7384 | 7394 | headerElement; |
7385 | 7395 | |
7386 | | // Release previously active header element. |
7387 | 7396 | if ( activeHeader && activeHeader.element ) { |
| 7397 | // Release previously active header element. |
7388 | 7398 | releaseStickyHeader( activeHeader.element ); |
| 7399 | |
| 7400 | // Remove event listener in the previous panel or section. |
| 7401 | activeHeader.element.find( '.description' ).off( 'toggled', updateHeaderHeight ); |
7389 | 7402 | } |
7390 | 7403 | |
7391 | 7404 | if ( ! newInstance ) { |
… |
… |
|
7405 | 7418 | instance: newInstance, |
7406 | 7419 | element: headerElement, |
7407 | 7420 | parent: headerElement.closest( '.customize-pane-child' ), |
7408 | | height: getHeaderHeight( headerElement ) |
| 7421 | height: headerElement.outerHeight() |
7409 | 7422 | }; |
| 7423 | |
| 7424 | // Update header height whenever help text is expanded or collapsed. |
| 7425 | activeHeader.element.find( '.description' ).on( 'toggled', updateHeaderHeight ); |
| 7426 | |
7410 | 7427 | if ( expandedSection ) { |
7411 | 7428 | resetStickyHeader( activeHeader.element, activeHeader.parent ); |
7412 | 7429 | } |
… |
… |
|
7475 | 7492 | }; |
7476 | 7493 | |
7477 | 7494 | /** |
7478 | | * Get header height. |
| 7495 | * Update active header height. |
7479 | 7496 | * |
7480 | 7497 | * @since 4.7.0 |
7481 | 7498 | * @access private |
7482 | 7499 | * |
7483 | | * @param {jQuery} headerElement Header element. |
7484 | | * @returns {number} Height. |
| 7500 | * @returns {void} |
7485 | 7501 | */ |
7486 | | getHeaderHeight = function( headerElement ) { |
7487 | | var height = headerElement.data( 'height' ); |
7488 | | if ( ! height ) { |
7489 | | height = headerElement.outerHeight(); |
7490 | | headerElement.data( 'height', height ); |
7491 | | } |
7492 | | return height; |
| 7502 | updateHeaderHeight = function() { |
| 7503 | activeHeader.height = activeHeader.element.outerHeight(); |
7493 | 7504 | }; |
7494 | 7505 | |
7495 | 7506 | /** |
… |
… |
|
7945 | 7956 | if ( control && ! control.setting.get() ) { |
7946 | 7957 | section.container.find( '.section-meta .customize-section-description:first' ) |
7947 | 7958 | .addClass( 'open' ) |
7948 | | .show(); |
| 7959 | .show() |
| 7960 | .trigger( 'toggled' ); |
7949 | 7961 | |
7950 | 7962 | section.container.find( '.customize-help-toggle' ).attr( 'aria-expanded', 'true' ); |
7951 | 7963 | } |