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