WordPress.org

Make WordPress Core

Ticket #22659: 22659.2.diff

File 22659.2.diff, 2.5 KB (added by koopersmith, 3 years ago)
  • wp-includes/js/media-views.js

     
    19911991                } 
    19921992        }); 
    19931993 
     1994        // wp.media.view.FocusManager 
     1995        // ---------------------------- 
     1996        media.view.FocusManager = media.View.extend({ 
     1997                events: { 
     1998                        keydown: 'recordTab', 
     1999                        focusin: 'updateIndex' 
     2000                }, 
     2001 
     2002                focus: function() { 
     2003                        if ( _.isUndefined( this.index ) ) 
     2004                                return; 
     2005 
     2006                        // Update our collection of `$tabbables`. 
     2007                        this.$tabbables = this.$(':tabbable'); 
     2008 
     2009                        // If tab is saved, focus it. 
     2010                        this.$tabbables.eq( this.index ).focus(); 
     2011                }, 
     2012 
     2013                recordTab: function( event ) { 
     2014                        // Look for the tab key. 
     2015                        if ( 9 !== event.keyCode ) 
     2016                                return; 
     2017 
     2018                        // First try to update the index. 
     2019                        if ( _.isUndefined( this.index ) ) 
     2020                                this.updateIndex( event ); 
     2021 
     2022                        // If we still don't have an index, bail. 
     2023                        if ( _.isUndefined( this.index ) ) 
     2024                                return; 
     2025 
     2026                        var index = this.index + ( event.shiftKey ? -1 : 1 ); 
     2027 
     2028                        if ( index >= 0 && index < this.$tabbables.length ) 
     2029                                this.index = index; 
     2030                        else 
     2031                                delete this.index; 
     2032                }, 
     2033 
     2034                updateIndex: function( event ) { 
     2035                        this.$tabbables = this.$(':tabbable'); 
     2036 
     2037                        var index = this.$tabbables.index( event.target ); 
     2038 
     2039                        if ( -1 === index ) 
     2040                                delete this.index; 
     2041                        else 
     2042                                this.index = index; 
     2043                } 
     2044        }); 
     2045 
    19942046        // wp.media.view.UploaderWindow 
    19952047        // ---------------------------- 
    19962048        media.view.UploaderWindow = media.View.extend({ 
     
    28322884                        this.updateSave(); 
    28332885 
    28342886                        this.views.render(); 
     2887 
    28352888                        return this; 
    28362889                }, 
    28372890 
     
    39514004                        'click .delete-attachment':       'deleteAttachment' 
    39524005                }, 
    39534006 
     4007                initialize: function() { 
     4008                        this.focusManager = new media.view.FocusManager({ 
     4009                                el: this.el 
     4010                        }); 
     4011 
     4012                        media.view.Attachment.prototype.initialize.apply( this, arguments ); 
     4013                }, 
     4014 
     4015                render: function() { 
     4016                        media.view.Attachment.prototype.render.apply( this, arguments ); 
     4017                        this.focusManager.focus(); 
     4018                        return this; 
     4019                }, 
     4020 
    39544021                deleteAttachment: function(event) { 
    39554022                        event.preventDefault(); 
    39564023 
     
    39744041                }, 
    39754042 
    39764043                initialize: function() { 
     4044                        this.focusManager = new media.view.FocusManager({ 
     4045                                el: this.el 
     4046                        }); 
     4047 
    39774048                        this.model.on( 'change:compat', this.render, this ); 
    39784049                }, 
    39794050 
     
    39824053                        if ( ! compat || ! compat.item ) 
    39834054                                return; 
    39844055 
     4056                        this.views.detach(); 
    39854057                        this.$el.html( compat.item ); 
     4058                        this.views.render(); 
     4059 
     4060                        this.focusManager.focus(); 
    39864061                        return this; 
    39874062                }, 
    39884063