anchor.diff:    @prop {Function} [onBlur]
     @prop {Function} [onChange]
     @prop {Function} [onFocus]
  -  @prop {Function} [onKeydown]
  +  @prop {Function} [onSaveStart]
  +  @prop {Function} [onSaveFinish]
  +  @prop {Function} [onSaveError]
     @prop {Number} [maxLength]
     @prop {Number} [minLength]
     @prop {Object} [template]
  
positive.code:     if (this.props.onBlur) this.props.onBlur.apply(null, arguments);
    }
  
    export function onChange (autoSave, ev) {
      var value = ev.target.value;
      var hasValue = !!value;
      if (this.props.onChange) this.props.onChange.apply(null, arguments);
      if (this.state.hasValue !== hasValue) this.setState({hasValue: hasValue});
      this.setState({value: value});
      if (autoSave) autoSave(ev, value.trim());
    }
  
negative.code:   export function onKeyDown (onChange, evt) {
      if (this.props.submitOnEnter && evt.keyCode === KEY_NAMES.enter) {
        evt.preventDefault();
        this.saveValue(onChange, evt.target.value, evt);
      }
    }
  
  