11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Polymer('core-input', { 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci publish: { 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * Placeholder text that hints to the user what can be entered in 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * the input. 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute placeholder 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type string 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default '' 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci placeholder: '', 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * If true, this input cannot be focused and the user cannot change 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * its value. 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute disabled 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type boolean 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default false 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci disabled: false, 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * If true, the user cannot modify the value of the input. 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute readonly 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type boolean 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default false 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci readonly: false, 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * If true, this input will automatically gain focus on page load. 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute autofocus 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type boolean 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default false 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci autofocus: false, 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * If true, this input accepts multi-line input like a `<textarea>` 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute multiline 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type boolean 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default false 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci multiline: false, 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * (multiline only) The height of this text input in rows. The input 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * will scroll internally if more input is entered beyond the size 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * of the component. This property is meaningless if multiline is 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * false. You can also set this property to "fit" and size the 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * component with CSS to make the input fit the CSS size. 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute rows 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type number|'fit' 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default 'fit' 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci rows: 'fit', 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * The current value of this input. Changing inputValue programmatically 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * will cause value to be out of sync. Instead, change value directly 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * or call commit() after changing inputValue. 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute inputValue 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type string 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default '' 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci inputValue: '', 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * The value of the input committed by the user, either by changing the 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * inputValue and blurring the input, or by hitting the `enter` key. 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute value 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type string 821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default '' 831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci value: '', 851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * Set the input type. Not supported for `multiline`. 881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute type 901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type string 911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default text 921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci type: 'text', 941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * If true, the input is invalid if its value is null. 971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute required 991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type boolean 1001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default false 1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci required: false, 1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * A regular expression to validate the input value against. See 1061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation#Validation-related_attributes 1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * for more info. Not supported if `multiline` is true. 1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute pattern 1101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type string 1111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default '.*' 1121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 1131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // FIXME(yvonne): The default is set to .* because we can't bind to pattern such 1141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // that the attribute is unset if pattern is null. 1151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci pattern: '.*', 1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 1181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * If set, the input is invalid if the value is less than this property. See 1191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation#Validation-related_attributes 1201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * for more info. Not supported if `multiline` is true. 1211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 1221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute min 1231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 1241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci min: null, 1251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 1271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * If set, the input is invalid if the value is greater than this property. See 1281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation#Validation-related_attributes 1291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * for more info. Not supported if `multiline` is true. 1301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 1311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute max 1321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 1331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci max: null, 1341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 1361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * If set, the input is invalid if the value is not `min` plus an integral multiple 1371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * of this property. See 1381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation#Validation-related_attributes 1391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * for more info. Not supported if `multiline` is true. 1401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 1411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute step 1421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 1431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci step: null, 1441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 1461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * The maximum length of the input value. 1471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 1481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute maxlength 1491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type number 1501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 1511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci maxlength: null, 1521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 1541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * If this property is true, the text input's inputValue failed validation. 1551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 1561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @attribute invalid 1571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @type boolean 1581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @default false 1591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 1601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci invalid: false 1611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 1621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ready: function() { 1641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.handleTabindex(this.getAttribute('tabindex')); 1651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 1661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci invalidChanged: function() { 1681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.classList.toggle('invalid', this.invalid); 1691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.fire('input-'+ (this.invalid ? 'invalid' : 'valid'), {value: this.inputValue}); 1701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 1711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci inputValueChanged: function() { 1731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.updateValidity_(); 1741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 1751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci valueChanged: function() { 1771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.inputValue = this.value; 1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 1791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci requiredChanged: function() { 1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.updateValidity_(); 1821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 1831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci attributeChanged: function(attr, oldVal, curVal) { 1851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (attr === 'tabindex') { 1861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.handleTabindex(curVal); 1871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 1891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handleTabindex: function(tabindex) { 1911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (tabindex > 0) { 1921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.$.input.setAttribute('tabindex', -1); 1931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } else { 1941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.$.input.removeAttribute('tabindex'); 1951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 1971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /** 1991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * Commits the inputValue to value. 2001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * 2011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @method commit 2021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */ 2031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci commit: function() { 2041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.value = this.inputValue; 2051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 2061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci updateValidity_: function() { 2081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (this.$.input.willValidate) { 2091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.invalid = !this.$.input.validity.valid; 2101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 2121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci keydownAction: function() { 2141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // for type = number, the value is the empty string unless the input is a valid number. 2151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // FIXME(yvonne): check other types 2161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (this.type === 'number') { 2171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.async(function() { 2181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.updateValidity_(); 2191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }); 2201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 2221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci inputChangeAction: function() { 2241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.commit(); 2251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!window.ShadowDOMPolyfill) { 2261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // re-fire event that does not bubble across shadow roots 2271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.fire('change', null, this); 2281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 2301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci focusAction: function(e) { 2321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (this.getAttribute('tabindex') > 0) { 2331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Forward focus to the inner input if tabindex is set on the element 2341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // This will not cause an infinite loop because focus will not fire on the <input> 2351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // again if it's already focused. 2361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.$.input.focus(); 2371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 2391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci inputFocusAction: function(e) { 2411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (window.ShadowDOMPolyfill) { 2421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // re-fire non-bubbling event if polyfill 2431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.fire('focus', null, this, false); 2441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 2461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci inputBlurAction: function() { 2481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (window.ShadowDOMPolyfill) { 2491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // re-fire non-bubbling event 2501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.fire('blur', null, this, false); 2511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 2531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci blur: function() { 2551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // forward blur method to the internal input / textarea element 2561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.$.input.blur(); 2571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 2581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci click: function() { 2601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // forward click method to the internal input / textarea element 2611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.$.input.click(); 2621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 2631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci focus: function() { 2651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // forward focus method to the internal input / textarea element 2661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.$.input.focus(); 2671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 2681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci select: function() { 2701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // forward select method to the internal input / textarea element 2711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.$.input.focus(); 2721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 2731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci setSelectionRange: function(selectionStart, selectionEnd, selectionDirection) { 2751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // forward setSelectionRange method to the internal input / textarea element 2761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.$.input.setSelectionRange(selectionStart, selectionEnd, selectionDirection); 2771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 2781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci setRangeText: function(replacement, start, end, selectMode) { 2801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // forward setRangeText method to the internal input element 2811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!this.multiline) { 2821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.$.input.setRangeText(replacement, start, end, selectMode); 2831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 2851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci stepDown: function(n) { 2871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // forward stepDown method to the internal input element 2881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!this.multiline) { 2891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.$.input.stepDown(n); 2901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 2921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci stepUp: function(n) { 2941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // forward stepUp method to the internal input element 2951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!this.multiline) { 2961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.$.input.stepUp(n); 2971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 2991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci get willValidate() { 3011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return this.$.input.willValidate; 3021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 3031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci get validity() { 3051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return this.$.input.validity; 3061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 3071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci get validationMessage() { 3091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return this.$.input.validationMessage; 3101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 3111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci checkValidity: function() { 3131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var r = this.$.input.checkValidity(); 3141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.updateValidity_(); 3151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return r; 3161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }, 3171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci setCustomValidity: function(message) { 3191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.$.input.setCustomValidity(message); 3201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.updateValidity_(); 3211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 3221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }); 3241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci