2015-08-17 17:00:26 -07:00
/ * *
2018-11-23 12:29:20 +00:00
* DO NOT EDIT THIS FILE .
* See the following change record for more information ,
* https : //www.drupal.org/node/2815083
* @ preserve
* * /
2015-08-17 17:00:26 -07:00
( function ( $ , Drupal , drupalSettings ) {
var activeItem = Drupal . url ( drupalSettings . path . currentPath ) ;
$ . fn . drupalToolbarMenu = function ( ) {
var ui = {
2015-09-04 13:20:09 -07:00
handleOpen : Drupal . t ( 'Extend' ) ,
handleClose : Drupal . t ( 'Collapse' )
2015-08-17 17:00:26 -07:00
} ;
2018-11-23 12:29:20 +00:00
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 ) ;
}
2015-08-17 17:00:26 -07:00
function toggleClickHandler ( event ) {
var $toggle = $ ( event . target ) ;
var $item = $toggle . closest ( 'li' ) ;
2018-11-23 12:29:20 +00:00
2015-08-17 17:00:26 -07:00
toggleList ( $item ) ;
2018-11-23 12:29:20 +00:00
2015-08-17 17:00:26 -07:00
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 ) ;
}
2018-11-23 12:29:20 +00:00
event . stopPropagation ( ) ;
2015-08-17 17:00:26 -07:00
}
function initItems ( $menu ) {
var options = {
2015-09-04 13:20:09 -07:00
class : 'toolbar-icon toolbar-handle' ,
action : ui . handleOpen ,
text : ''
2015-08-17 17:00:26 -07:00
} ;
2018-11-23 12:29:20 +00:00
2015-08-17 17:00:26 -07:00
$menu . find ( 'li > a' ) . wrap ( '<div class="toolbar-box">' ) ;
2018-11-23 12:29:20 +00:00
2015-08-17 17:00:26 -07:00
$menu . find ( 'li' ) . each ( function ( index , element ) {
var $item = $ ( element ) ;
if ( $item . children ( 'ul.toolbar-menu' ) . length ) {
var $box = $item . children ( '.toolbar-box' ) ;
2018-11-23 12:29:20 +00:00
options . text = Drupal . t ( '@label' , {
'@label' : $box . find ( 'a' ) . text ( )
} ) ;
$item . children ( '.toolbar-box' ) . append ( Drupal . theme ( 'toolbarMenuItemToggle' , options ) ) ;
2015-08-17 17:00:26 -07:00
}
} ) ;
}
function markListLevels ( $lists , level ) {
2018-11-23 12:29:20 +00:00
level = ! level ? 1 : level ;
2015-08-17 17:00:26 -07:00
var $lis = $lists . children ( 'li' ) . addClass ( 'level-' + level ) ;
$lists = $lis . children ( 'ul' ) ;
if ( $lists . length ) {
markListLevels ( $lists , level + 1 ) ;
}
}
function openActiveItem ( $menu ) {
2018-11-23 12:29:20 +00:00
var pathItem = $menu . find ( 'a[href="' + window . location . pathname + '"]' ) ;
2015-08-17 17:00:26 -07:00
if ( pathItem . length && ! activeItem ) {
2018-11-23 12:29:20 +00:00
activeItem = window . location . pathname ;
2015-08-17 17:00:26 -07:00
}
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 ) {
2018-11-23 12:29:20 +00:00
$menu . on ( 'click.toolbar' , '.toolbar-box' , toggleClickHandler ) . on ( 'click.toolbar' , '.toolbar-box a' , linkClickHandler ) ;
2015-10-08 11:40:12 -07:00
2015-08-17 17:00:26 -07:00
$menu . addClass ( 'root' ) ;
initItems ( $menu ) ;
markListLevels ( $menu ) ;
2018-11-23 12:29:20 +00:00
2015-08-17 17:00:26 -07:00
openActiveItem ( $menu ) ;
}
} ) ;
} ;
Drupal . theme . toolbarMenuItemToggle = function ( options ) {
2018-11-23 12:29:20 +00:00
return '<button class="' + options . class + '"><span class="action">' + options . action + '</span> <span class="label">' + options . text + '</span></button>' ;
2015-08-17 17:00:26 -07:00
} ;
2018-11-23 12:29:20 +00:00
} ) ( jQuery , Drupal , drupalSettings ) ;