1<!-- 2@license 3Copyright (c) 2015 The Polymer Project Authors. All rights reserved. 4This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 5The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 6The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 7Code distributed by Google as part of the polymer project is also 8subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 9--> 10 11<link rel="import" href="../polymer/polymer.html"> 12<link rel="import" href="iron-menu-behavior.html"> 13 14<script> 15 16 /** 17 * `Polymer.IronMenubarBehavior` implements accessible menubar behavior. 18 * 19 * @polymerBehavior Polymer.IronMenubarBehavior 20 */ 21 Polymer.IronMenubarBehaviorImpl = { 22 23 hostAttributes: { 24 'role': 'menubar' 25 }, 26 27 keyBindings: { 28 'left': '_onLeftKey', 29 'right': '_onRightKey' 30 }, 31 32 _onUpKey: function(event) { 33 this.focusedItem.click(); 34 event.detail.keyboardEvent.preventDefault(); 35 }, 36 37 _onDownKey: function(event) { 38 this.focusedItem.click(); 39 event.detail.keyboardEvent.preventDefault(); 40 }, 41 42 get _isRTL() { 43 return window.getComputedStyle(this)['direction'] === 'rtl'; 44 }, 45 46 _onLeftKey: function(event) { 47 if (this._isRTL) { 48 this._focusNext(); 49 } else { 50 this._focusPrevious(); 51 } 52 event.detail.keyboardEvent.preventDefault(); 53 }, 54 55 _onRightKey: function(event) { 56 if (this._isRTL) { 57 this._focusPrevious(); 58 } else { 59 this._focusNext(); 60 } 61 event.detail.keyboardEvent.preventDefault(); 62 }, 63 64 _onKeydown: function(event) { 65 if (this.keyboardEventMatchesKeys(event, 'up down left right esc')) { 66 return; 67 } 68 69 // all other keys focus the menu item starting with that character 70 this._focusWithKeyboardEvent(event); 71 } 72 73 }; 74 75 /** @polymerBehavior Polymer.IronMenubarBehavior */ 76 Polymer.IronMenubarBehavior = [ 77 Polymer.IronMenuBehavior, 78 Polymer.IronMenubarBehaviorImpl 79 ]; 80 81</script> 82