@@ -13,6 +13,8 @@ import SelectConditionValidator from "./field/select/selectConditionValidator";
1313import Radio from "./field/radio/radio" ;
1414import RadioConditionValidator from "./field/radio/radioConditionValidator" ;
1515import RadioConditionsHandler from "./field/radio/radioConditionsHandler" ;
16+ import Message from "./field/message/message" ;
17+ import MessageConditionsHandler from "./field/message/messageConditionHandler" ;
1618
1719class FieldBuilder implements FieldBuilderInterface {
1820 private name : string = 'data-js-field-name' ;
@@ -32,12 +34,15 @@ class FieldBuilder implements FieldBuilderInterface {
3234 case 'url' :
3335 case 'date' :
3436 case 'time' :
37+ case 'number' :
3538 return this . buildText ( field ) ;
3639 case 'select' :
3740 return this . buildSelect ( field ) ;
3841 case 'radio' :
3942 case 'trueFalse' :
4043 return this . buildRadio ( field ) ;
44+ case 'message' :
45+ return this . buildMessage ( field ) ;
4146 }
4247
4348 return this . buildNullField ( field , type ) ;
@@ -53,6 +58,15 @@ class FieldBuilder implements FieldBuilderInterface {
5358 ) ;
5459 }
5560
61+ private buildMessage ( field : HTMLElement ) : FieldInterface {
62+ return new Message (
63+ field ,
64+ this . getFieldName ( field ) ,
65+ new NullFieldConditionValidator ( ) ,
66+ new MessageConditionsHandler ( this . getFieldCondition ( field ) )
67+ )
68+ }
69+
5670 private buildRadio ( field : HTMLElement ) : FieldInterface {
5771 const choices = field . querySelectorAll ( 'input[type="radio"]' ) as NodeListOf < HTMLInputElement > ;
5872
@@ -90,8 +104,15 @@ class FieldBuilder implements FieldBuilderInterface {
90104 }
91105
92106 private buildText ( field : HTMLElement ) : FieldInterface {
93- const input = field . querySelector ( 'input:is([type="text"], [type="email"], [type="url"], [type="date"], [type="time"])' ) as HTMLInputElement ;
94- console . log ( field ) ;
107+ const input = field . querySelector ( `input:is(
108+ [type="text"],
109+ [type="email"],
110+ [type="url"],
111+ [type="date"],
112+ [type="time"],
113+ [type="number"]
114+ )` ) as HTMLInputElement ;
115+
95116 if ( ! input ) {
96117 console . error ( 'Text field is not an input element with type "text", "email" or "url", "date" or "time"' ) ;
97118 return this . buildNullField ( field , 'text' ) ;
0 commit comments