Mercurial > hg > cmmr2012-drupal-site
diff core/modules/toolbar/js/toolbar.menu.js @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children | a9cd425dd02b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/toolbar/js/toolbar.menu.js Thu Jul 05 14:24:15 2018 +0000 @@ -0,0 +1,103 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +(function ($, Drupal, drupalSettings) { + var activeItem = Drupal.url(drupalSettings.path.currentPath); + + $.fn.drupalToolbarMenu = function () { + var ui = { + handleOpen: Drupal.t('Extend'), + handleClose: Drupal.t('Collapse') + }; + + function toggleClickHandler(event) { + var $toggle = $(event.target); + var $item = $toggle.closest('li'); + + toggleList($item); + + var $openItems = $item.siblings().filter('.open'); + toggleList($openItems, false); + } + + function linkClickHandler(event) { + if (!Drupal.toolbar.models.toolbarModel.get('isFixed')) { + Drupal.toolbar.models.toolbarModel.set('activeTab', null); + } + + event.stopPropagation(); + } + + 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 initItems($menu) { + var options = { + class: 'toolbar-icon toolbar-handle', + action: ui.handleOpen, + text: '' + }; + + $menu.find('li > a').wrap('<div class="toolbar-box">'); + + $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)); + } + }); + } + + function markListLevels($lists, level) { + level = !level ? 1 : level; + var $lis = $lists.children('li').addClass('level-' + level); + $lists = $lis.children('ul'); + if ($lists.length) { + markListLevels($lists, level + 1); + } + } + + function openActiveItem($menu) { + var pathItem = $menu.find('a[href="' + location.pathname + '"]'); + if (pathItem.length && !activeItem) { + activeItem = location.pathname; + } + if (activeItem) { + var $activeItem = $menu.find('a[href="' + activeItem + '"]').addClass('menu-item--active'); + var $activeTrail = $activeItem.parentsUntil('.root', 'li').addClass('menu-item--active-trail'); + toggleList($activeTrail, true); + } + } + + return this.each(function (selector) { + var $menu = $(this).once('toolbar-menu'); + if ($menu.length) { + $menu.on('click.toolbar', '.toolbar-box', toggleClickHandler).on('click.toolbar', '.toolbar-box a', linkClickHandler); + + $menu.addClass('root'); + initItems($menu); + markListLevels($menu); + + openActiveItem($menu); + } + }); + }; + + Drupal.theme.toolbarMenuItemToggle = function (options) { + return '<button class="' + options.class + '"><span class="action">' + options.action + '</span><span class="label">' + options.text + '</span></button>'; + }; +})(jQuery, Drupal, drupalSettings); \ No newline at end of file