Files
cagettepei/src/sugoi/form/elements/RadioGroup.hx
T
2021-08-27 17:54:17 +04:00

63 lines
1.6 KiB
Haxe

package sugoi.form.elements;
import sugoi.form.Form;
import sugoi.form.FormElement;
class RadioGroup extends FormElement<String>
{
public var data:ListData.FormData<String>;
public var selectMessage:String;
public var labelLeft:Bool;
public var labelRight:Bool;
public var vertical:Bool;
public function new(name:String, label:String, ?data:Array<{label:String,value:String}>, ?selected:String, ?defaultValue:String, ?vertical:Bool=true, ?labelRight:Bool=true,?required=false)
{
super();
this.name = name;
this.label = label;
this.data = data != null ? data : [];
this.value = selected != null ? selected : defaultValue;
this.vertical = vertical;
this.labelRight = labelRight;
this.required = required;
}
public function addOption(label:String, value:String)
{
data.push( { label:label, value:value } );
}
override public function render():String
{
var s = "";
var n = parentForm.name + "_" +name;
var c = 0;
if (data != null)
{
for (row in data)
{
var vClass = vertical ? " radioItemVertical" : " radioItemHorizontal";
s += '<div class="radioItem'+vClass+'">';
var radio = "<input type=\"radio\" name=\""+n+"\" id=\""+n+c+"\" value=\"" + row.value + "\" " + (row.value == Std.string(value) ? "checked":"") +" />\n";
var label = "<label for=\"" + n+c + "\" >" + row.label +"</label>";
s += labelRight ? radio + " "+label+" ": label+" "+radio+" ";
s += '</div>';
//if (verticle) s += "<br />";
c++;
}
}
return s;
}
override function getTypedValue(str:String){
if(str==null) return null;
str = StringTools.trim(str);
return (str == "") ? return null : str;
}
}