jenkins-bot has submitted this change and it was merged.

Change subject: Position flyout on window resize
......................................................................


Position flyout on window resize

Change-Id: I53248ffaac405e794b99ab7f720143847a78410c
---
M resources/lightbulb/lightbulb.flyout.js
1 file changed, 24 insertions(+), 26 deletions(-)

Approvals:
  Phuedx: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/resources/lightbulb/lightbulb.flyout.js 
b/resources/lightbulb/lightbulb.flyout.js
index ffd531e..fa6340e 100644
--- a/resources/lightbulb/lightbulb.flyout.js
+++ b/resources/lightbulb/lightbulb.flyout.js
@@ -25,6 +25,7 @@
                currentFlyoutPageIndex, // 0-based
                mwConfig = mw.config.get( [ 'wgArticleId', 'wgUserId' ] ),
                $lightbulb = $( 
'.mw-gettingstarted-personal-tool-recommendations' ),
+               $flyout = null,
                requestingSuggestions = false;
 
        function renderFlyout() {
@@ -61,10 +62,9 @@
         * Adds the suggestions to the flyout.  This sets up pagination and 
shows the
         * first page of suggestions.
         *
-        * @param {jQuery} $flyout Flyout jQuery set
         * @param {Array} suggestions Array of suggestions from the parser
         */
-       function addSuggestionsToFlyout( $flyout, suggestions ) {
+       function addSuggestionsToFlyout( suggestions ) {
                var $nextButton,
                        $pagination = $flyout.find( 
'.mw-gettingstarted-lightbulb-flyout-pagination' ),
                        pageCount = Math.ceil( suggestions.length / 
MAX_SUGGESTION_PER_PAGE_COUNT ),
@@ -75,7 +75,7 @@
                        .attr( 'title', mw.msg( 
'gettingstarted-lightbulb-flyout-back' ) )
                        .click( function () {
                                currentFlyoutPageIndex--;
-                               renderFlyoutPage( $flyout, suggestions, 
currentFlyoutPageIndex, pageCount );
+                               renderFlyoutPage( suggestions, 
currentFlyoutPageIndex, pageCount );
                        } );
 
 
@@ -84,7 +84,7 @@
                        .attr( 'title', mw.msg( 
'gettingstarted-lightbulb-flyout-next' ) )
                        .click( function () {
                                currentFlyoutPageIndex++;
-                               renderFlyoutPage( $flyout, suggestions, 
currentFlyoutPageIndex, pageCount );
+                               renderFlyoutPage( suggestions, 
currentFlyoutPageIndex, pageCount );
                        } );
                if ( pageCount > 1 ) {
                        for ( i = 0; i < pageCount; i++ ) {
@@ -101,18 +101,17 @@
                }
 
                currentFlyoutPageIndex = 0;
-               renderFlyoutPage( $flyout, suggestions, currentFlyoutPageIndex, 
pageCount );
+               renderFlyoutPage( suggestions, currentFlyoutPageIndex, 
pageCount );
        }
 
        /**
         * Updates the flyout to render a particular page
         *
-        * @param {jQuery} $flyout jQuery set for flyout
         * @param {Array} suggestions Full list of suggestions
         * @param {Number} pageIndex Page index to show, 0-based
         * @param {Number} pageCount Number of pages
         */
-       function renderFlyoutPage( $flyout, suggestions, pageIndex, pageCount ) 
{
+       function renderFlyoutPage( suggestions, pageIndex, pageCount ) {
                var $suggestions = $flyout.find( 
'.mw-gettingstarted-lightbulb-suggestions' ),
                        $newSuggestions = $( '<ol>' ).attr( 'class', 
'mw-gettingstarted-lightbulb-suggestions' ),
                        suggestion,
@@ -155,18 +154,18 @@
                } );
        }
 
-       function positionFlyout( $flyout, $target ) {
-               var targetOffset,
+       function positionFlyout() {
+               var     lightbulbOffset,
                        top,
                        left;
 
-               targetOffset = $target.offset();
-               top = targetOffset.top + $target.innerHeight() + ( POKEY_HEIGHT 
/ 2 ) - 5;
+               lightbulbOffset = $lightbulb.offset();
+               top = lightbulbOffset.top + $lightbulb.innerHeight() + ( 
POKEY_HEIGHT / 2 ) - 5;
 
                // XXX (phuedx, 2014/07/30): $flyout.width and
                // innerWidth( {false,true} ) don't work here, even with
                // visibility: hidden in place of display: none. Why?
-               left = targetOffset.left + ( $target.innerWidth() / 2 ) - ( 
FLYOUT_WIDTH / 2 );
+               left = lightbulbOffset.left + ( $lightbulb.innerWidth() / 2 ) - 
( FLYOUT_WIDTH / 2 );
 
                $flyout.css( {
                        top: parseInt( top, 10 ) + 'px',
@@ -181,7 +180,7 @@
         * @param {jQuery.Event} evt Click event
         */
        function checkForClickOutside( evt ) {
-               var $flyout, $target;
+               var $target;
 
                $target = $( evt.target );
                if ( $target.is( $lightbulb ) ) {
@@ -193,37 +192,36 @@
                        return;
                }
 
-               if ( $target.closest( '.mw-gettingstarted-lightbulb-flyout' 
).length === 0 ) {
-                       $flyout = $( '.mw-gettingstarted-lightbulb-flyout' );
-                       hideFlyout( $flyout );
+               if ( $target.closest( $flyout ).length === 0 ) {
+                       hideFlyout();
                }
        }
 
        /**
         * Shows the flyout and unregisters the document event listener
         *
-        * @param {jQuery} $flyout Flyout
         */
-       function showFlyout( $flyout ) {
+       function showFlyout() {
                $( document ).on( 'click', checkForClickOutside );
+               $( window ).on( 'resize', positionFlyout );
                $flyout.show();
        }
 
        /**
         * Hides the flyout and unregisters the document event listener
         *
-        * @param {jQuery} $flyout Flyout
         */
-       function hideFlyout( $flyout ) {
+       function hideFlyout() {
                $flyout.hide();
                $( document ).off( 'click', checkForClickOutside );
+               $( window ).off( 'resize', positionFlyout );
        }
 
        /**
         * Adds lightbulb icon (for flyout) and renders flyout except 
suggestions
         */
        function addFlyout() {
-               var $flyout = renderFlyout();
+               $flyout = renderFlyout();
 
                $lightbulb.on( 'click', function ( event ) {
                        var api;
@@ -241,9 +239,9 @@
 
                        if ( $flyout.data( 'has-suggestions' ) ) {
                                if ( $flyout.is( ':visible' ) ) {
-                                       hideFlyout( $flyout );
+                                       hideFlyout();
                                } else {
-                                       showFlyout( $flyout );
+                                       showFlyout();
                                }
 
                                return;
@@ -260,13 +258,13 @@
                                        } ).done( function ( response ) {
                                                var suggestions = parser.parse( 
response );
 
-                                               addSuggestionsToFlyout( 
$flyout, suggestions );
-                                               positionFlyout( $flyout, 
$lightbulb );
+                                               addSuggestionsToFlyout( 
suggestions );
+                                               positionFlyout();
 
                                                $flyout.data( 
'has-suggestions', true );
                                                requestingSuggestions = false;
 
-                                               showFlyout( $flyout );
+                                               showFlyout();
                                        } );
                                } );
                } );

-- 
To view, visit https://gerrit.wikimedia.org/r/155837
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I53248ffaac405e794b99ab7f720143847a78410c
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/GettingStarted
Gerrit-Branch: master
Gerrit-Owner: Robmoen <rm...@wikimedia.org>
Gerrit-Reviewer: Mattflaschen <mflasc...@wikimedia.org>
Gerrit-Reviewer: Phuedx <g...@samsmith.io>
Gerrit-Reviewer: Robmoen <rm...@wikimedia.org>
Gerrit-Reviewer: Swalling <swall...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to