/** * DO NOT EDIT THIS FILE. * See the following change record for more information, * https://www.drupal.org/node/2815083 * @preserve **/ (function ($, Drupal, drupalSettings) { let activeItem = Drupal.url(drupalSettings.path.currentPath); $.fn.drupalToolbarMenu = function () { const ui = { handleOpen: Drupal.t('Extend'), handleClose: Drupal.t('Collapse') }; function toggleList($item, switcher) { const $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').each((index, element) => { element.textContent = switcher ? ui.handleClose : ui.handleOpen; }); } function toggleClickHandler(event) { const $toggle = $(event.target); const $item = $toggle.closest('li'); toggleList($item); const $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 initItems($menu) { const options = { class: 'toolbar-icon toolbar-handle', action: ui.handleOpen, text: '' }; $menu.find('li > a').wrap('
'); $menu.find('li').each((index, element) => { const $item = $(element); if ($item.children('ul.toolbar-menu').length) { const $box = $item.children('.toolbar-box'); const $link = $box.find('a'); options.text = Drupal.t('@label', { '@label': $link.length ? $link[0].textContent : '' }); $item.children('.toolbar-box').append(Drupal.theme('toolbarMenuItemToggle', options)); } }); } function markListLevels($lists, level) { level = !level ? 1 : level; const $lis = $lists.children('li').addClass(`level-${level}`); $lists = $lis.children('ul'); if ($lists.length) { markListLevels($lists, level + 1); } } function openActiveItem($menu) { const pathItem = $menu.find(`a[href="${window.location.pathname}"]`); if (pathItem.length && !activeItem) { activeItem = window.location.pathname; } if (activeItem) { const $activeItem = $menu.find(`a[href="${activeItem}"]`).addClass('menu-item--active'); const $activeTrail = $activeItem.parentsUntil('.root', 'li').addClass('menu-item--active-trail'); toggleList($activeTrail, true); } } return this.each(function (selector) { const menu = once('toolbar-menu', this); if (menu.length) { const $menu = $(menu); $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 ``; }; })(jQuery, Drupal, drupalSettings);