@@ -322,11 +322,12 @@ var Input = function (_Component) {
322322
323323 _this2 . state = {
324324 hasChanged : false ,
325+ hasFocus : false ,
325326 id : _this2 . props . identifier || undefined ,
326327 initialValue : _this2 . props . initialValue || undefined ,
327328 isValid : false ,
328329 justChanged : false ,
329- value : _this2 . props . value || undefined ,
330+ value : _this2 . props . value || '' ,
330331 valueMask : _this2 . props . valueMask || undefined
331332 } ;
332333
@@ -758,10 +759,104 @@ var Input = function (_Component) {
758759 } , {
759760 key : "render" ,
760761 value : function render ( ) {
761- var containerClassNames = ( this . props . containerClassNames ? "" + ( this . props . containerClassNames instanceof Array ? "" + this . props . containerClassNames . join ( " " ) : "" + this . props . containerClassNames ) : "input input-container input-" + this . props . type ) + " " + ( this . state . hasChanged ? "container-touched" : "container-untouched" ) + " " + ( this . state . justChanged ? "container-justchanged" : "" ) + " " + ( this . state . hasFocus ? "container-focus" : "container-nofocus" ) + " " + ( this . state . isValid ? "container-valid" : "container-invalid" ) ;
762- var inputClassNames = ( this . props . inputClassNames ? "" + ( this . props . inputClassNames instanceof Array ? "" + this . props . inputClassNames . join ( " " ) : "" + this . props . inputClassNames ) : "input input-input" ) + " " + ( this . state . hasChanged ? "input-touched" : "input-untouched" ) + " " + ( this . state . justChanged ? "input-justchanged" : "" ) + " " + ( this . state . isValid ? "input-valid" : "input-invalid" ) ;
763- var labelClassNames = ( this . props . labelClassNames ? "" + ( this . props . labelClassNames instanceof Array ? "" + this . props . labelClassNames . join ( " " ) : "" + this . props . labelClassNames ) : "input input-label" ) + " " + ( this . state . hasChanged ? "label-touched" : "label-untouched" ) + " " + ( this . state . justChanged ? "label-justchanged" : "" ) + " " + ( this . state . isValid ? "label-valid" : "label-invalid" ) ;
764- var validationClassNames = ( this . props . validationClassNames ? "" + ( this . props . validationClassNames instanceof Array ? "" + this . props . validationClassNames . join ( " " ) : "" + this . props . validationClassNames ) : "input input-validation" ) + " " + ( this . state . hasChanged ? "validation-touched" : "validation-untouched" ) + " " + ( this . state . justChanged ? "validation-justchanged" : "" ) + " " + ( this . state . isValid ? "validation-valid" : "validation-invalid" ) ;
762+ var containerClassNames = '' ;
763+ var inputClassNames = '' ;
764+ var labelClassNames = '' ;
765+ var validationClassNames = '' ;
766+
767+ if ( this . props . containerClassNames ) {
768+ if ( this . props . containerClassNames instanceof Array ) {
769+ containerClassNames += "" + this . props . containerClassNames . join ( ' ' ) ;
770+ } else {
771+ containerClassNames += "" + this . props . containerClassNames ;
772+ }
773+ } else {
774+ containerClassNames += "input input-container input-" + this . props . type ;
775+ }
776+
777+ if ( this . props . inputClassNames ) {
778+ if ( this . props . inputClassNames instanceof Array ) {
779+ inputClassNames += "" + this . props . inputClassNames . join ( ' ' ) ;
780+ } else {
781+ inputClassNames += "" + this . props . inputClassNames ;
782+ }
783+ } else {
784+ inputClassNames += this . props . type + " " + this . props . type + "-container" ;
785+ }
786+
787+ if ( this . props . labelClassNames ) {
788+ if ( this . props . labelClassNames instanceof Array ) {
789+ labelClassNames += "" + this . props . labelClassNames . join ( ' ' ) ;
790+ } else {
791+ labelClassNames += "" + this . props . labelClassNames ;
792+ }
793+ } else {
794+ labelClassNames += "label label-container label-" + this . props . type ;
795+ }
796+
797+ if ( this . props . validationClassNames ) {
798+ if ( this . props . validationClassNames instanceof Array ) {
799+ validationClassNames += "" + this . props . validationClassNames . join ( ' ' ) ;
800+ } else {
801+ validationClassNames += "" + this . props . validationClassNames ;
802+ }
803+ } else {
804+ validationClassNames += "validation validation-container validation-" + this . props . type ;
805+ }
806+
807+ if ( this . state . hasChanged ) {
808+ containerClassNames += " container-touched" ;
809+ inputClassNames += ' input-touched' ;
810+ labelClassNames += ' label-touched' ;
811+ validationClassNames += ' validation-touched' ;
812+ } else {
813+ containerClassNames += ' container-untouched' ;
814+ inputClassNames += ' input-untouched' ;
815+ labelClassNames += ' label-untouched' ;
816+ validationClassNames += ' validation-untouched' ;
817+ }
818+
819+ if ( this . state . justChanged ) {
820+ containerClassNames += ' container-justchanged' ;
821+ inputClassNames += ' input-justchanged' ;
822+ labelClassNames += ' label-justchanged' ;
823+ validationClassNames += ' validation-justchanged' ;
824+ }
825+
826+ if ( this . state . hasFocus ) {
827+ containerClassNames += ' container-focus' ;
828+ inputClassNames += ' input-focus' ;
829+ labelClassNames += ' label-focus' ;
830+ validationClassNames += ' validation-focus' ;
831+ } else {
832+ containerClassNames += ' container-nofocus' ;
833+ inputClassNames += ' input-nofocus' ;
834+ labelClassNames += ' label-nofocus' ;
835+ validationClassNames += ' validation-nofocus' ;
836+ }
837+
838+ if ( this . props . validation ) {
839+ if ( this . state . isValid ) {
840+ containerClassNames += ' container-valid' ;
841+ inputClassNames += ' input-valid' ;
842+ labelClassNames += ' label-valid' ;
843+ validationClassNames += ' validation-valid' ;
844+ } else {
845+ containerClassNames += ' container-invalid' ;
846+ inputClassNames += ' input-invalid' ;
847+ labelClassNames += ' label-invalid' ;
848+ validationClassNames += ' validation-invalid' ;
849+ }
850+ }
851+
852+ var thisValidation = null ;
853+ if ( this . props . validation ) {
854+ thisValidation = _react2 . default . createElement (
855+ "p" ,
856+ { className : validationClassNames } ,
857+ this . state . validationErrorMessage || "invalid"
858+ ) ;
859+ }
765860
766861 var thisInput = _react2 . default . createElement (
767862 "p" ,
@@ -838,7 +933,6 @@ var Input = function (_Component) {
838933 value : this . state . value
839934 } ) ;
840935 }
841- if ( this . props . type === 'text' ) { }
842936
843937 return _react2 . default . createElement (
844938 "div" ,
@@ -849,11 +943,7 @@ var Input = function (_Component) {
849943 this . props . labelContent
850944 ) ,
851945 thisInput ,
852- _react2 . default . createElement (
853- "p" ,
854- { className : validationClassNames } ,
855- this . state . validationErrorMessage || "invalid"
856- )
946+ thisValidation
857947 ) ;
858948 }
859949 } ] ) ;
0 commit comments