| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| Polymer('kb-key', { |
| /** |
| * The background image to display on this key. Does not display an |
| * image if this is the empty string. |
| * @type {string} |
| */ |
| image: "", |
| |
| /** |
| * The background image size to use if an image is specified. The size |
| * is provided as a string, for example, "50%". |
| * @type {string} |
| */ |
| imageSize: "", |
| |
| /** |
| * Key codes have been deprecated in DOM3 key events, but are required |
| * for legacy web content. The key codes depend on the position of the |
| * key on the keyboard and is independent of which modifier keys (shift, |
| * alt, ...) are active. |
| * @type {number|undefined} |
| */ |
| keyCode: undefined, |
| |
| /** |
| * Name of the key as defined in the DOM3 specification for key events. |
| * Like the keyCode, the keyName is independent of the state of the |
| * modifier keys. |
| * @type {string|undefined} |
| */ |
| keyName: undefined, |
| |
| /** |
| * Whether the shift key is pressed when producing the key value. |
| * @type {boolean} |
| */ |
| shiftModifier: false, |
| |
| /** |
| * The sound to play when this key is pressed. |
| * @type {Sound} |
| */ |
| sound: Sound.DEFAULT, |
| |
| /** |
| * Whether the key can be stretched to accomodate pixel rounding errors. |
| */ |
| stretch: false, |
| |
| /** |
| * Weighting to use for layout in order to properly size the key. |
| * Keys with a high weighting are wider than normal keys. |
| * @type {number} |
| */ |
| weight: DEFAULT_KEY_WEIGHT, |
| |
| /** |
| * Called when the image attribute changes. This is used to set the |
| * background image of the key. |
| * TODO(rsadam): Remove when polymer {{}} syntax regression is fixed. |
| */ |
| imageChanged: function() { |
| if (!this.image) { |
| this.$.key.style.backgroundImage = "none"; |
| } else { |
| // If no extension provided, default to svg. |
| var image = |
| this.image.split('.').length > 1 ? this.image : this.image + ".svg"; |
| this.$.key.style.backgroundImage = |
| "url(images/" + image + ")"; |
| } |
| }, |
| |
| /** |
| * Returns a subset of the key attributes. |
| * @param {string} caller The id of the function that called |
| * populateDetails. |
| * @return {Object} Mapping of attributes for the key element. |
| */ |
| populateDetails: function(caller) { |
| var details = this.super([caller]); |
| details.keyCode = this.keyCode; |
| details.keyName = this.keyName; |
| details.shiftModifier = this.shiftModifier; |
| details.sound = this.sound; |
| return details; |
| }, |
| }); |
| ; |
| |
| Polymer('kb-abc-key', { |
| populateDetails: function(caller) { |
| var detail = this.super([caller]); |
| switch (caller) { |
| case ('down'): |
| detail.relegateToShift = true; |
| break; |
| default: |
| break; |
| } |
| return detail; |
| } |
| }); |
| ; |
| |
| Polymer('kb-hide-keyboard-key', { |
| up: function(event) { |
| hideKeyboard(); |
| }, |
| }); |