WordPress.org

Make WordPress Core

Ticket #46830: 46830.diff

File 46830.diff, 2.6 KB (added by donmhico, 12 months ago)
  • src/js/_enqueues/wp/customize/nav-menus.js

    diff --git src/js/_enqueues/wp/customize/nav-menus.js src/js/_enqueues/wp/customize/nav-menus.js
    index b6560366c1..7680dcfaed 100644
     
    18071807                                        $adjacentFocusTarget = control.container.nextAll( '.customize-control-nav_menu' ).find( '.add-new-menu-item' ).first();
    18081808                                }
    18091809
     1810                                /*
     1811                                 * If the menu item deleted is the only of it's instance left,
     1812                                 * remove the check icon of this menu item in the right panel.
     1813                                 *
     1814                                 * @see https://core.trac.wordpress.org/ticket/46830
     1815                                 */
     1816                                // Instance count of the menu item deleted.
     1817                                var instanceCounter          = 0;
     1818                                var deleteItemOriginalItemId = control.params.original_item_id;
     1819                                var addedItems               = control.getMenuControl().$sectionContent.find( '.menu-item' );
     1820
     1821                                _.each( addedItems, function( addedItem ) {
     1822                                        // This is because menu item that's deleted is just hidden.
     1823                                        if ( ! $( addedItem ).is( ':visible' ) ) {
     1824                                                return;
     1825                                        }
     1826
     1827                                        var menuItemId, menuItemControl, matches;
     1828                                               
     1829                                        matches = addedItem.getAttribute('id').match( /^customize-control-nav_menu_item-(-?\d+)$/, '' );
     1830                                        if ( ! matches ) {
     1831                                                return;
     1832                                        }
     1833
     1834                                        menuItemId = parseInt( matches[1], 10 );
     1835                                        menuItemControl = api.control( 'nav_menu_item[' + String( menuItemId ) + ']' );
     1836
     1837                                        // Check for duplicate menu items.
     1838                                        if ( menuItemControl && deleteItemOriginalItemId == menuItemControl.params.original_item_id ) {
     1839                                                instanceCounter++;
     1840                                        }
     1841                                } );
     1842
     1843                                if ( 1 >= instanceCounter ) {
     1844                                        // Revert the check icon to add icon.
     1845                                        var availableMenuItem = $( '#menu-item-tpl-' + control.params.original_item_id );
     1846                                        availableMenuItem.removeClass( 'selected' );
     1847                                        availableMenuItem.find( '.menu-item-handle' ).removeClass( 'item-added' );
     1848                                }
     1849
    18101850                                control.container.slideUp( function() {
    18111851                                        control.setting.set( false );
    18121852                                        wp.a11y.speak( api.Menus.data.l10n.itemDeleted );
     
    29572997                 * @returns {wp.customize.Menus.controlConstructor.nav_menu_item} The newly-created nav_menu_item control instance.
    29582998                 */
    29592999                addItemToMenu: function( item ) {
     3000                        var originalItemId = item.id || '';
     3001
    29603002                        var menuControl = this, customizeId, settingArgs, setting, menuItemControl, placeholderId, position = 0, priority = 10;
    29613003
    29623004                        _.each( menuControl.getMenuItemControls(), function( control ) {
     
    30013043                                settings: {
    30023044                                        'default': customizeId
    30033045                                },
    3004                                 menu_item_id: placeholderId
     3046                                menu_item_id: placeholderId,
     3047                                original_item_id: originalItemId
    30053048                        } );
    30063049
    30073050                        api.control.add( menuItemControl );