WordPress.org

Make WordPress Core

Ticket #31187: 31187.2.diff

File 31187.2.diff, 3.8 KB (added by ninnypants, 5 years ago)

rtl support

  • src/wp-admin/js/common.js

     
    730730                                }
    731731                        } );
    732732
     733                        var wpTouchMenu = {
     734                                started: false,
     735                                tracking: false,
     736                                startPosition: 0,
     737                                open: false,
     738                                rtl: ( 'rtl' == document.documentElement.getAttribute( 'dir' ) )
     739                        };
     740
     741                        $( window ).on( 'touchstart.wp-responsive', function( e ) {
     742                                var touches = e.originalEvent.touches,
     743                                touch,
     744                                winWidth = Math.max( window.innerWidth, document.documentElement.clientWidth );
     745
     746                                // if it's multi touch bail
     747                                if ( 1 != touches.length ) {
     748                                        return;
     749                                }
     750
     751                                touch = touches[0];
     752
     753                                // if the menu is open and we're starting from the
     754                                // outside it start closing the menu
     755                                if ( wpTouchMenu.open && ! $( e.target ).closest( '#adminmenu' ).length ) {
     756                                        wpTouchMenu.started = true;
     757                                        wpTouchMenu.startPosition = touch.screenX;
     758                                        return;
     759                                }
     760
     761                                // if it's within the left 20% of the screen
     762                                // note that it has started
     763                                if (
     764                                        ( ! wpTouchMenu.rtl && touch.screenX <= ( winWidth * 0.2 ) ) ||
     765                                        ( wpTouchMenu.rtl && ( winWidth - ( winWidth * 0.2 ) ) <= touch.screenX )
     766                                ) {
     767                                        wpTouchMenu.started = true;
     768                                        wpTouchMenu.startPosition = touch.screenX;
     769                                }
     770                        } );
     771
     772                        $( window ).on( 'touchmove.wp-responsive', function( e ) {
     773                                var touches, touch;
     774                                // if it didn't qualify for potential menu
     775                                // open bail
     776                                if ( ! wpTouchMenu.started ) {
     777                                        return;
     778                                }
     779
     780                                touches = e.originalEvent.changedTouches;
     781
     782                                // no multitouch
     783                                if ( 1 != touches.length ) {
     784                                        return;
     785                                }
     786
     787                                // stop back action
     788                                e.preventDefault();
     789
     790                                touch = touches[0];
     791
     792                                // cancel open if we're not going in the right direction
     793                                if (
     794                                        ( ! wpTouchMenu.rtl && ! wpTouchMenu.open && touch.screenX <= wpTouchMenu.startPosition ) ||
     795                                        ( ! wpTouchMenu.rtl && wpTouchMenu.open && wpTouchMenu.startPosition <= touch.screenX ) ||
     796                                        ( wpTouchMenu.rtl && ! wpTouchMenu.open && wpTouchMenu.startPosition <= touch.screenX ) ||
     797                                        ( wpTouchMenu.rtl && wpTouchMenu.open && touch.screenX <= wpTouchMenu.startPosition )
     798                                ) {
     799                                        wpTouchMenu.started = false;
     800                                        wpTouchMenu.startPosition = 0;
     801                                        return;
     802                                }
     803
     804                                wpTouchMenu.tracking = true;
     805                        } );
     806
     807                        $( window ).on( 'touchend.wp-responsive', function( e ) {
     808                                var touches = e.originalEvent.changedTouches,
     809                                touch,
     810                                winWidth = Math.max( window.innerWidth, document.documentElement.clientWidth ),
     811                                moved = 0;
     812
     813                                // only process if we're tracking
     814                                if ( ! wpTouchMenu.tracking ) {
     815                                        return;
     816                                }
     817
     818                                // no multitouch
     819                                if ( 1 != touches.length ) {
     820                                        wpTouchMenu.started = false;
     821                                        wpTouchMenu.startPosition = 0;
     822                                        wpTouchMenu.tracking = false;
     823                                        return;
     824                                }
     825
     826                                touch = touches[0];
     827                                // calculate how far we've moved
     828                                if ( wpTouchMenu.rtl ) {
     829                                        if ( wpTouchMenu.open ) {
     830                                                moved = touch.screenX - wpTouchMenu.startPosition;
     831                                        } else {
     832                                                moved = wpTouchMenu.startPosition - touch.screenX;
     833                                        }
     834                                } else {
     835                                        if ( wpTouchMenu.open ) {
     836                                                moved = wpTouchMenu.startPosition - touch.screenX;
     837                                        } else {
     838                                                moved = touch.screenX - wpTouchMenu.startPosition;
     839                                        }
     840                                }
     841
     842                                // if it's 20% or more trigger the menu
     843                                if ( ( winWidth * 0.2 ) <= moved ) {
     844                                        $( '#wp-admin-bar-menu-toggle' ).trigger( 'click' );
     845                                        wpTouchMenu.open = ! wpTouchMenu.open;
     846                                }
     847
     848                                // reset our values
     849                                wpTouchMenu.started = false;
     850                                wpTouchMenu.startPosition = 0;
     851                                wpTouchMenu.tracking = false;
     852                        } );
     853
    733854                        // Add menu events
    734855                        $adminmenu.on( 'click.wp-responsive', 'li.wp-has-submenu > a', function( event ) {
    735856                                if ( ! $adminmenu.data('wp-responsive') ) {