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