2015-08-17 17:00:26 -07:00
/ * *
* @ file
* A Backbone Model for the toolbar .
* /
( function ( Backbone , Drupal ) {
"use strict" ;
/ * *
* Backbone model for the toolbar .
*
* @ constructor
*
* @ augments Backbone . Model
* /
Drupal . toolbar . ToolbarModel = Backbone . Model . extend ( /** @lends Drupal.toolbar.ToolbarModel# */ {
/ * *
* @ type { object }
*
* @ prop activeTab
* @ prop activeTray
* @ prop isOriented
* @ prop isFixed
* @ prop areSubtreesLoaded
* @ prop isViewportOverflowConstrained
* @ prop orientation
* @ prop locked
* @ prop isTrayToggleVisible
* @ prop height
* @ prop offsets
* /
defaults : /** @lends Drupal.toolbar.ToolbarModel# */ {
/ * *
* The active toolbar tab . All other tabs should be inactive under
* normal circumstances . It will remain active across page loads . The
* active item is stored as an ID selector e . g . '#toolbar-item--1' .
*
* @ type { string }
* /
activeTab : null ,
/ * *
* Represents whether a tray is open or not . Stored as an ID selector e . g .
* '#toolbar-item--1-tray' .
*
* @ type { string }
* /
activeTray : null ,
/ * *
* Indicates whether the toolbar is displayed in an oriented fashion ,
* either horizontal or vertical .
*
* @ type { bool }
* /
isOriented : false ,
/ * *
* Indicates whether the toolbar is positioned absolute ( false ) or fixed
* ( true ) .
*
* @ type { bool }
* /
isFixed : false ,
/ * *
* Menu subtrees are loaded through an AJAX request only when the Toolbar
* is set to a vertical orientation .
*
* @ type { bool }
* /
areSubtreesLoaded : false ,
/ * *
* If the viewport overflow becomes constrained , isFixed must be true so
* that elements in the trays aren ' t lost off - screen and impossible to
* get to .
*
* @ type { bool }
* /
isViewportOverflowConstrained : false ,
/ * *
* The orientation of the active tray .
*
* @ type { string }
* /
orientation : 'vertical' ,
/ * *
* A tray is locked if a user toggled it to vertical . Otherwise a tray
* will switch between vertical and horizontal orientation based on the
* configured breakpoints . The locked state will be maintained across page
* loads .
*
* @ type { bool }
* /
locked : false ,
/ * *
* Indicates whether the tray orientation toggle is visible .
*
* @ type { bool }
* /
isTrayToggleVisible : false ,
/ * *
* The height of the toolbar .
*
* @ type { number }
* /
height : null ,
/ * *
* The current viewport offsets determined by { @ link Drupal . displace } . The
* offsets suggest how a module might position is components relative to
* the viewport .
*
* @ type { object }
*
* @ prop { number } top
* @ prop { number } right
* @ prop { number } bottom
* @ prop { number } left
* /
offsets : {
top : 0 ,
right : 0 ,
bottom : 0 ,
left : 0
}
} ,
/ * *
* @ inheritdoc
*
* @ param { object } attributes
2015-09-04 13:20:09 -07:00
* Attributes for the toolbar .
2015-08-17 17:00:26 -07:00
* @ param { object } options
2015-09-04 13:20:09 -07:00
* Options for the toolbar .
2015-08-17 17:00:26 -07:00
*
2015-09-04 13:20:09 -07:00
* @ return { string | undefined }
* Returns an error message if validation failed .
2015-08-17 17:00:26 -07:00
* /
validate : function ( attributes , options ) {
// Prevent the orientation being set to horizontal if it is locked, unless
// override has not been passed as an option.
if ( attributes . orientation === 'horizontal' && this . get ( 'locked' ) && ! options . override ) {
return Drupal . t ( 'The toolbar cannot be set to a horizontal orientation when it is locked.' ) ;
}
}
} ) ;
} ( Backbone , Drupal ) ) ;