Home | History | Annotate | Download | only in iron-menu-behavior
      1 <!--
      2 @license
      3 Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
      4 This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
      5 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
      6 The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
      7 Code distributed by Google as part of the polymer project is also
      8 subject 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