Code/UI/Components/BoolEdit.razor
@using Sandbox.UI
@inherits Panel
@implements IEdit
@implements IGraphStyle
@namespace Nodebox.UI
<root>
<Checkbox
Value=@((bool)Value)
@ref=CheckboxRef/>
</root>
@code
{
public Checkbox CheckboxRef { get; protected set; }
[Change(nameof(OnValueChanged))]
public object Value { get; set; }
public object ValueImmediate => CheckboxRef?.Value;
public Type Type => typeof(bool);
public void OnValueChanged(object oldValue, object newValue) {
if (newValue == null) { return; }
Assert.AreEqual(newValue.GetType(), typeof(bool));
CheckboxRef?.Value = (bool)newValue;
}
protected override void OnAfterTreeRender(bool firstTime) {
Tooltip = this.ConstructTooltip();
CheckboxRef?.Tooltip = Tooltip;
CheckboxRef?.Children?.First()?.Tooltip = Tooltip;
if (!firstTime) { return; }
OnValueChanged(null, Value);
if (!CheckboxRef.IsValid()) {
Log.Warning("wtf");
return;
}
CheckboxRef.AddEventListener("onchange", (ev) => {
ev.StopPropagation();
Value = ValueImmediate;
CreateEvent("onchange", Value);
CreateEvent("onsubmit", Value);
Tooltip = this.ConstructTooltip();
CheckboxRef?.Tooltip = Tooltip;
CheckboxRef?.Children?.First().Tooltip = Tooltip;
});
}
protected override int BuildHash() => System.HashCode.Combine( Type );
}