Source: setting-text/setting-text.js

'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', '');
    },
  });