X-Git-Url: https://yaffs.net/gitweb/?a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Ftoolbar%2Fjs%2Ftoolbar.menu.js;h=5f7345d8d4e80d1aa8f654049a7010e4f17d8797;hb=f3baf763d342a5f82576890e2a8111a5aaf139dc;hp=0ca25a9b056621c08ac74bb135ddd528fabb4200;hpb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;p=yaffs-website diff --git a/web/core/modules/toolbar/js/toolbar.menu.js b/web/core/modules/toolbar/js/toolbar.menu.js index 0ca25a9b0..5f7345d8d 100644 --- a/web/core/modules/toolbar/js/toolbar.menu.js +++ b/web/core/modules/toolbar/js/toolbar.menu.js @@ -1,134 +1,71 @@ /** - * @file - * Builds a nested accordion widget. - * - * Invoke on an HTML list element with the jQuery plugin pattern. - * - * @example - * $('.toolbar-menu').drupalToolbarMenu(); - */ +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ (function ($, Drupal, drupalSettings) { - - 'use strict'; - - /** - * Store the open menu tray. - */ var activeItem = Drupal.url(drupalSettings.path.currentPath); $.fn.drupalToolbarMenu = function () { - var ui = { handleOpen: Drupal.t('Extend'), handleClose: Drupal.t('Collapse') }; - /** - * Handle clicks from the disclosure button on an item with sub-items. - * - * @param {Object} event - * A jQuery Event object. - */ + function toggleList($item, switcher) { + var $toggle = $item.children('.toolbar-box').children('.toolbar-handle'); + switcher = typeof switcher !== 'undefined' ? switcher : !$item.hasClass('open'); + + $item.toggleClass('open', switcher); + + $toggle.toggleClass('open', switcher); + + $toggle.find('.action').text(switcher ? ui.handleClose : ui.handleOpen); + } + function toggleClickHandler(event) { var $toggle = $(event.target); var $item = $toggle.closest('li'); - // Toggle the list item. + toggleList($item); - // Close open sibling menus. + var $openItems = $item.siblings().filter('.open'); toggleList($openItems, false); } - /** - * Handle clicks from a menu item link. - * - * @param {Object} event - * A jQuery Event object. - */ function linkClickHandler(event) { - // If the toolbar is positioned fixed (and therefore hiding content - // underneath), then users expect clicks in the administration menu tray - // to take them to that destination but for the menu tray to be closed - // after clicking: otherwise the toolbar itself is obstructing the view - // of the destination they chose. if (!Drupal.toolbar.models.toolbarModel.get('isFixed')) { Drupal.toolbar.models.toolbarModel.set('activeTab', null); } - // Stopping propagation to make sure that once a toolbar-box is clicked - // (the whitespace part), the page is not redirected anymore. - event.stopPropagation(); - } - /** - * Toggle the open/close state of a list is a menu. - * - * @param {jQuery} $item - * The li item to be toggled. - * - * @param {Boolean} switcher - * A flag that forces toggleClass to add or a remove a class, rather than - * simply toggling its presence. - */ - function toggleList($item, switcher) { - var $toggle = $item.children('.toolbar-box').children('.toolbar-handle'); - switcher = (typeof switcher !== 'undefined') ? switcher : !$item.hasClass('open'); - // Toggle the item open state. - $item.toggleClass('open', switcher); - // Twist the toggle. - $toggle.toggleClass('open', switcher); - // Adjust the toggle text. - $toggle - .find('.action') - // Expand Structure, Collapse Structure. - .text((switcher) ? ui.handleClose : ui.handleOpen); + event.stopPropagation(); } - /** - * Add markup to the menu elements. - * - * Items with sub-elements have a list toggle attached to them. Menu item - * links and the corresponding list toggle are wrapped with in a div - * classed with .toolbar-box. The .toolbar-box div provides a positioning - * context for the item list toggle. - * - * @param {jQuery} $menu - * The root of the menu to be initialized. - */ function initItems($menu) { var options = { class: 'toolbar-icon toolbar-handle', action: ui.handleOpen, text: '' }; - // Initialize items and their links. + $menu.find('li > a').wrap('
'); - // Add a handle to each list item if it has a menu. + $menu.find('li').each(function (index, element) { var $item = $(element); if ($item.children('ul.toolbar-menu').length) { var $box = $item.children('.toolbar-box'); - options.text = Drupal.t('@label', {'@label': $box.find('a').text()}); - $item.children('.toolbar-box') - .append(Drupal.theme('toolbarMenuItemToggle', options)); + options.text = Drupal.t('@label', { + '@label': $box.find('a').text() + }); + $item.children('.toolbar-box').append(Drupal.theme('toolbarMenuItemToggle', options)); } }); } - /** - * Adds a level class to each list based on its depth in the menu. - * - * This function is called recursively on each sub level of lists elements - * until the depth of the menu is exhausted. - * - * @param {jQuery} $lists - * A jQuery object of ul elements. - * - * @param {number} level - * The current level number to be assigned to the list elements. - */ function markListLevels($lists, level) { - level = (!level) ? 1 : level; + level = !level ? 1 : level; var $lis = $lists.children('li').addClass('level-' + level); $lists = $lis.children('ul'); if ($lists.length) { @@ -136,19 +73,10 @@ } } - /** - * On page load, open the active menu item. - * - * Marks the trail of the active link in the menu back to the root of the - * menu with .menu-item--active-trail. - * - * @param {jQuery} $menu - * The root of the menu. - */ function openActiveItem($menu) { - var pathItem = $menu.find('a[href="' + location.pathname + '"]'); + var pathItem = $menu.find('a[href="' + window.location.pathname + '"]'); if (pathItem.length && !activeItem) { - activeItem = location.pathname; + activeItem = window.location.pathname; } if (activeItem) { var $activeItem = $menu.find('a[href="' + activeItem + '"]').addClass('menu-item--active'); @@ -157,41 +85,21 @@ } } - // Return the jQuery object. return this.each(function (selector) { var $menu = $(this).once('toolbar-menu'); if ($menu.length) { - // Bind event handlers. - $menu - .on('click.toolbar', '.toolbar-box', toggleClickHandler) - .on('click.toolbar', '.toolbar-box a', linkClickHandler); + $menu.on('click.toolbar', '.toolbar-box', toggleClickHandler).on('click.toolbar', '.toolbar-box a', linkClickHandler); $menu.addClass('root'); initItems($menu); markListLevels($menu); - // Restore previous and active states. + openActiveItem($menu); } }); }; - /** - * A toggle is an interactive element often bound to a click handler. - * - * @param {object} options - * Options for the button. - * @param {string} options.class - * Class to set on the button. - * @param {string} options.action - * Action for the button. - * @param {string} options.text - * Used as label for the button. - * - * @return {string} - * A string representing a DOM fragment. - */ Drupal.theme.toolbarMenuItemToggle = function (options) { - return ''; + return ''; }; - -}(jQuery, Drupal, drupalSettings)); +})(jQuery, Drupal, drupalSettings); \ No newline at end of file