using System; using System.Linq; namespace Ooui { public class Select : FormControl { bool gotValue = false; public string Value { get { if (gotValue) return GetStringAttribute ("value", ""); return GetDefaultValue (); } set { gotValue = true; SetAttributeProperty ("value", value ?? ""); } } public event TargetEventHandler Change { add => AddEventListener ("change", value); remove => RemoveEventListener ("change", value); } public event TargetEventHandler Input { add => AddEventListener ("input", value); remove => RemoveEventListener ("input", value); } public Select () : base ("select") { // Subscribe to the change event so we always get up-to-date values Change += (s, e) => { gotValue = true; }; } public void AddOption (string label, string value) { AppendChild (new Option { Text = label, Value = value }); } string GetDefaultValue () { var options = Children.OfType