docs: function (cfg, context, line) {
              cfg.attributes = cfg.attributes || {};
              var type = cfg.attributes.type || "text";
  
              cfg.on = cfg.on || {};
  
              _placeholderSupported = ("placeholder" in Aria.$window.document.createElement("input"));
              if (cfg.placeholder && _placeholderSupported) {
                  cfg.attributes.placeholder = cfg.placeholder;
              }
  
              this._registerListeners(cfg);
  
              /**
               * Wheter or not this widget has a 'on type' callback
               * @protected
               * @type Boolean
               */
              this._reactOnType = this._registerType(cfg.on, context);
  
              /**
               * Flag set to false after first focus, and set back to true after a blur. Used for the autoselect
               * behaviour. This value is true when the field receives focus for the first time (user action) and false
               * when the focus is given programmatically by the controller
               * @protected
               * @type Boolean
               */
              this._firstFocus = true;
  
              /**
               * Flag used to indicate if the element has focus
               * @protected
               * @type Boolean
               */
              this._hasFocus = false;
  
              /**
               * Flag used to indicate if the element has the placeholder
               * @protected
               * @type Boolean
               */
              this._hasPlaceholder = false;
  
              this.$InputElement.constructor.call(this, cfg, context, line, type);
          }