Chris@0: /** Chris@0: * DO NOT EDIT THIS FILE. Chris@0: * See the following change record for more information, Chris@0: * https://www.drupal.org/node/2815083 Chris@0: * @preserve Chris@0: **/ Chris@0: Chris@0: (function ($, Drupal, drupalSettings) { Chris@0: var activeItem = Drupal.url(drupalSettings.path.currentPath); Chris@0: Chris@0: $.fn.drupalToolbarMenu = function () { Chris@0: var ui = { Chris@0: handleOpen: Drupal.t('Extend'), Chris@0: handleClose: Drupal.t('Collapse') Chris@0: }; Chris@0: Chris@17: function toggleList($item, switcher) { Chris@17: var $toggle = $item.children('.toolbar-box').children('.toolbar-handle'); Chris@17: switcher = typeof switcher !== 'undefined' ? switcher : !$item.hasClass('open'); Chris@17: Chris@17: $item.toggleClass('open', switcher); Chris@17: Chris@17: $toggle.toggleClass('open', switcher); Chris@17: Chris@17: $toggle.find('.action').text(switcher ? ui.handleClose : ui.handleOpen); Chris@17: } Chris@17: Chris@0: function toggleClickHandler(event) { Chris@0: var $toggle = $(event.target); Chris@0: var $item = $toggle.closest('li'); Chris@0: Chris@0: toggleList($item); Chris@0: Chris@0: var $openItems = $item.siblings().filter('.open'); Chris@0: toggleList($openItems, false); Chris@0: } Chris@0: Chris@0: function linkClickHandler(event) { Chris@0: if (!Drupal.toolbar.models.toolbarModel.get('isFixed')) { Chris@0: Drupal.toolbar.models.toolbarModel.set('activeTab', null); Chris@0: } Chris@0: Chris@0: event.stopPropagation(); Chris@0: } Chris@0: Chris@0: function initItems($menu) { Chris@0: var options = { Chris@0: class: 'toolbar-icon toolbar-handle', Chris@0: action: ui.handleOpen, Chris@0: text: '' Chris@0: }; Chris@0: Chris@0: $menu.find('li > a').wrap('
'); Chris@0: Chris@0: $menu.find('li').each(function (index, element) { Chris@0: var $item = $(element); Chris@0: if ($item.children('ul.toolbar-menu').length) { Chris@0: var $box = $item.children('.toolbar-box'); Chris@17: options.text = Drupal.t('@label', { Chris@17: '@label': $box.find('a').text() Chris@17: }); Chris@0: $item.children('.toolbar-box').append(Drupal.theme('toolbarMenuItemToggle', options)); Chris@0: } Chris@0: }); Chris@0: } Chris@0: Chris@0: function markListLevels($lists, level) { Chris@0: level = !level ? 1 : level; Chris@0: var $lis = $lists.children('li').addClass('level-' + level); Chris@0: $lists = $lis.children('ul'); Chris@0: if ($lists.length) { Chris@0: markListLevels($lists, level + 1); Chris@0: } Chris@0: } Chris@0: Chris@0: function openActiveItem($menu) { Chris@17: var pathItem = $menu.find('a[href="' + window.location.pathname + '"]'); Chris@0: if (pathItem.length && !activeItem) { Chris@17: activeItem = window.location.pathname; Chris@0: } Chris@0: if (activeItem) { Chris@0: var $activeItem = $menu.find('a[href="' + activeItem + '"]').addClass('menu-item--active'); Chris@0: var $activeTrail = $activeItem.parentsUntil('.root', 'li').addClass('menu-item--active-trail'); Chris@0: toggleList($activeTrail, true); Chris@0: } Chris@0: } Chris@0: Chris@0: return this.each(function (selector) { Chris@0: var $menu = $(this).once('toolbar-menu'); Chris@0: if ($menu.length) { Chris@0: $menu.on('click.toolbar', '.toolbar-box', toggleClickHandler).on('click.toolbar', '.toolbar-box a', linkClickHandler); Chris@0: Chris@0: $menu.addClass('root'); Chris@0: initItems($menu); Chris@0: markListLevels($menu); Chris@0: Chris@0: openActiveItem($menu); Chris@0: } Chris@0: }); Chris@0: }; Chris@0: Chris@0: Drupal.theme.toolbarMenuItemToggle = function (options) { Chris@17: return ''; Chris@0: }; Chris@0: })(jQuery, Drupal, drupalSettings);