| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * @fileoverview A collection of JavaScript utilities used to manage focus | 6 * @fileoverview A collection of JavaScript utilities used to manage focus |
| 7 * within a document. | 7 * within a document. |
| 8 */ | 8 */ |
| 9 | 9 |
| 10 | 10 |
| 11 goog.provide('cvox.FocusUtil'); | 11 goog.provide('cvox.FocusUtil'); |
| 12 | 12 |
| 13 | 13 |
| 14 /** | 14 /** |
| 15 * Utilities for managing focus. | 15 * Utilities for managing focus. |
| 16 * @constructor | 16 * @constructor |
| 17 */ | 17 */ |
| 18 cvox.FocusUtil = function() { | 18 cvox.FocusUtil = function() {}; |
| 19 }; | |
| 20 | 19 |
| 21 /** | 20 /** |
| 22 * Maps whether an input element of specified type accepts text selection or | 21 * Maps whether an input element of specified type accepts text selection or |
| 23 * not. True if the element does accept text selection, false if it does not. | 22 * not. True if the element does accept text selection, false if it does not. |
| 24 * This can be used to determine whether a visitor to that element should | 23 * This can be used to determine whether a visitor to that element should |
| 25 * provide interactive text editing to the user. | 24 * provide interactive text editing to the user. |
| 26 * From the W3C table of possible type keywords: | 25 * From the W3C table of possible type keywords: |
| 27 * http://www.w3.org/TR/html5/the-input-element.html#attr-input-type | 26 * http://www.w3.org/TR/html5/the-input-element.html#attr-input-type |
| 28 * | 27 * |
| 29 * TODO(dmazzoni): merge this with cvox.DomUtil.isInputTypeText | 28 * TODO(dmazzoni): merge this with cvox.DomUtil.isInputTypeText |
| 30 * | 29 * |
| 31 * @type {Object} | 30 * @type {Object} |
| 32 */ | 31 */ |
| 33 cvox.FocusUtil.INPUT_TYPE_ACCEPTS_SELECTION_TABLE = { | 32 cvox.FocusUtil.INPUT_TYPE_ACCEPTS_SELECTION_TABLE = { |
| 34 'hidden' : false, | 33 'hidden': false, |
| 35 'text' : true, | 34 'text': true, |
| 36 'search' : true, | 35 'search': true, |
| 37 'tel' : true, | 36 'tel': true, |
| 38 'url' : true, | 37 'url': true, |
| 39 'email' : true, | 38 'email': true, |
| 40 'password' : true, | 39 'password': true, |
| 41 'datetime' : false, | 40 'datetime': false, |
| 42 'date' : false, | 41 'date': false, |
| 43 'month' : false, | 42 'month': false, |
| 44 'week' : false, | 43 'week': false, |
| 45 'time' : false, | 44 'time': false, |
| 46 'datetime-local' : false, | 45 'datetime-local': false, |
| 47 'number' : false, | 46 'number': false, |
| 48 'range' : false, | 47 'range': false, |
| 49 'color' : false, | 48 'color': false, |
| 50 'checkbox' : false, | 49 'checkbox': false, |
| 51 'radio' : false, | 50 'radio': false, |
| 52 'file' : false, | 51 'file': false, |
| 53 'submit' : false, | 52 'submit': false, |
| 54 'image' : false, | 53 'image': false, |
| 55 'reset' : false, | 54 'reset': false, |
| 56 'button' : false | 55 'button': false |
| 57 }; | 56 }; |
| 58 | 57 |
| 59 /** | 58 /** |
| 60 * Checks if the currently focused element is a field that accepts text input | 59 * Checks if the currently focused element is a field that accepts text input |
| 61 * (This can include text fields and selectors) | 60 * (This can include text fields and selectors) |
| 62 * | 61 * |
| 63 * @return {boolean} True if the currently focused element accepts text input. | 62 * @return {boolean} True if the currently focused element accepts text input. |
| 64 */ | 63 */ |
| 65 cvox.FocusUtil.isFocusInTextInputField = function() { | 64 cvox.FocusUtil.isFocusInTextInputField = function() { |
| 66 var activeElement = document.activeElement; | 65 var activeElement = document.activeElement; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 89 if (activeElement.tagName === 'INPUT') { | 88 if (activeElement.tagName === 'INPUT') { |
| 90 if (!activeElement.hasAttribute('type')) { | 89 if (!activeElement.hasAttribute('type')) { |
| 91 return true; | 90 return true; |
| 92 } else { | 91 } else { |
| 93 var activeType = activeElement.getAttribute('type').toLowerCase(); | 92 var activeType = activeElement.getAttribute('type').toLowerCase(); |
| 94 return cvox.FocusUtil.INPUT_TYPE_ACCEPTS_SELECTION_TABLE[activeType]; | 93 return cvox.FocusUtil.INPUT_TYPE_ACCEPTS_SELECTION_TABLE[activeType]; |
| 95 } | 94 } |
| 96 } | 95 } |
| 97 return false; | 96 return false; |
| 98 }; | 97 }; |
| OLD | NEW |