'use strict';
new ExceptionHandler();
/**
* Polymer element for a text entry
* @namespace SettingText
*/
Polymer({
is: 'setting-text',
hostAttributes: {
role: 'group',
tabIndex: -1,
},
properties: {
/**
* Local storage key
* @memberOf SettingText
*/
name: {
type: String,
value: 'store',
},
/**
* Text value
* @memberOf SettingText
*/
value: {
type: String,
value: '',
notify: true,
},
/**
* Placeholder text when empty
* @memberOf SettingText
*/
placeholder: {
type: String,
value: 'e.g. Text',
notify: true,
},
/**
* Max length of text entry
* @memberOf SettingText
*/
maxLength: {
type: Number,
value: '16',
notify: true,
},
/**
* Descriptive label
* @memberOf SettingText
*/
mainLabel: {
type: String,
value: '',
},
/**
* Secondary descriptive label
* @memberOf SettingText
*/
secondaryLabel: {
type: String,
value: '',
},
/**
* Optional group title
* @memberOf SettingText
*/
sectionTitle: {
type: String,
value: '',
},
/**
* Disabled state of element
* @memberOf SettingText
*/
disabled: {
type: Boolean,
value: false,
},
/**
* Visibility state of optional divider
* @memberOf SettingText
*/
noseparator: {
type: Boolean,
value: false,
},
},
/**
* Event: Lost focus - fire setting-text-changed event
* @private
* @memberOf SettingText
*/
_onBlur: function() {
Chrome.GA.event(Chrome.GA.EVENT.TEXT, this.name);
this.fire('setting-text-changed', {value: this.value});
},
/**
* Event: keyup - fire setting-text-changed event on 'Enter'
* @param {Event} event - key event
* @private
* @memberOf SettingText
*/
_onKeyUp: function(event) {
// check if 'Enter' was pressed
if (event.keyCode === 13) {
Chrome.GA.event(Chrome.GA.EVENT.TEXT, this.name);
this.fire('setting-text-changed', {value: this.value});
}
},
/**
* Initialize value if it is not in localstorage
* @private
* @memberOf SettingText
*/
_init: function() {
this.set('value', '');
},
});