In RazorCompiler, support attribute values of type UIEventHandler
This commit is contained in:
parent
3a7b6b2178
commit
7bbb2b6660
|
|
@ -6,5 +6,5 @@ namespace Microsoft.Blazor.RenderTree
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handles an event raised for a <see cref="RenderTreeNode"/>.
|
/// Handles an event raised for a <see cref="RenderTreeNode"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public delegate void UIEventHandler(UIEventArgs eventInfo);
|
public delegate void UIEventHandler(UIEventArgs eventArgs);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -179,7 +179,7 @@ namespace Microsoft.Blazor.Build.Test
|
||||||
+ "<elem attr=@myValue />");
|
+ "<elem attr=@myValue />");
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.Collection(GetRenderTree(component).Where(NotWhitespace),
|
Assert.Collection(GetRenderTree(component),
|
||||||
node => AssertNode.Element(node, "elem", 1),
|
node => AssertNode.Element(node, "elem", 1),
|
||||||
node => AssertNode.Attribute(node, "attr", "My string"));
|
node => AssertNode.Attribute(node, "attr", "My string"));
|
||||||
}
|
}
|
||||||
|
|
@ -193,7 +193,7 @@ namespace Microsoft.Blazor.Build.Test
|
||||||
+ "<elem attr=@myValue />");
|
+ "<elem attr=@myValue />");
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.Collection(GetRenderTree(component).Where(NotWhitespace),
|
Assert.Collection(GetRenderTree(component),
|
||||||
node => AssertNode.Element(node, "elem", 1),
|
node => AssertNode.Element(node, "elem", 1),
|
||||||
node => AssertNode.Attribute(node, "attr", "123"));
|
node => AssertNode.Attribute(node, "attr", "123"));
|
||||||
}
|
}
|
||||||
|
|
@ -207,11 +207,31 @@ namespace Microsoft.Blazor.Build.Test
|
||||||
+ "<elem attr=\"Hello, @myValue.ToUpperInvariant() with number @(myNum*2)!\" />");
|
+ "<elem attr=\"Hello, @myValue.ToUpperInvariant() with number @(myNum*2)!\" />");
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.Collection(GetRenderTree(component).Where(NotWhitespace),
|
Assert.Collection(GetRenderTree(component),
|
||||||
node => AssertNode.Element(node, "elem", 1),
|
node => AssertNode.Element(node, "elem", 1),
|
||||||
node => AssertNode.Attribute(node, "attr", "Hello, WORLD with number 246!"));
|
node => AssertNode.Attribute(node, "attr", "Hello, WORLD with number 246!"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void SupportsAttributesWithEventHandlerValues()
|
||||||
|
{
|
||||||
|
// Arrange/Act
|
||||||
|
var component = CompileToComponent(
|
||||||
|
"<elem attr=@MyHandleEvent />"
|
||||||
|
+ @"@functions {
|
||||||
|
void MyHandleEvent(Microsoft.Blazor.RenderTree.UIEventArgs eventArgs) {}
|
||||||
|
}");
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Collection(GetRenderTree(component),
|
||||||
|
node => AssertNode.Element(node, "elem", 1),
|
||||||
|
node =>
|
||||||
|
{
|
||||||
|
Assert.Equal(RenderTreeNodeType.Attribute, node.NodeType);
|
||||||
|
Assert.NotNull(node.AttributeEventHandlerValue);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private static bool NotWhitespace(RenderTreeNode node)
|
private static bool NotWhitespace(RenderTreeNode node)
|
||||||
=> node.NodeType != RenderTreeNodeType.Text
|
=> node.NodeType != RenderTreeNodeType.Text
|
||||||
|| !string.IsNullOrWhiteSpace(node.TextContent);
|
|| !string.IsNullOrWhiteSpace(node.TextContent);
|
||||||
|
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
||||||
|
|
||||||
using Microsoft.Blazor.Components;
|
|
||||||
using Microsoft.Blazor.RenderTree;
|
|
||||||
|
|
||||||
namespace BasicTestApp
|
|
||||||
{
|
|
||||||
public class CounterComponent : IComponent
|
|
||||||
{
|
|
||||||
private int currentCount = 0;
|
|
||||||
|
|
||||||
public void BuildRenderTree(RenderTreeBuilder builder)
|
|
||||||
{
|
|
||||||
builder.OpenElement("h1");
|
|
||||||
builder.AddText("Counter");
|
|
||||||
builder.CloseElement();
|
|
||||||
|
|
||||||
builder.OpenElement("p");
|
|
||||||
builder.AddText("Current count: ");
|
|
||||||
builder.AddText(currentCount.ToString());
|
|
||||||
builder.CloseElement();
|
|
||||||
|
|
||||||
builder.OpenElement("button");
|
|
||||||
builder.AddAttribute("onclick", OnButtonClicked);
|
|
||||||
builder.AddText("Click me");
|
|
||||||
builder.CloseElement();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnButtonClicked(UIEventArgs eventInfo)
|
|
||||||
{
|
|
||||||
currentCount++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
<h1>Counter</h1>
|
||||||
|
<p>Current count: @currentCount.ToString()</p>
|
||||||
|
<button onclick=@OnButtonClicked>Click me</button>
|
||||||
|
|
||||||
|
@functions {
|
||||||
|
int currentCount = 0;
|
||||||
|
|
||||||
|
void OnButtonClicked(Microsoft.Blazor.RenderTree.UIEventArgs eventArgs)
|
||||||
|
{
|
||||||
|
currentCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue