Skip to content

Commit efd4f32

Browse files
committed
Avoid observing resizes when a node is invisible from the beginning
1 parent dd69832 commit efd4f32

File tree

2 files changed

+40
-3
lines changed

2 files changed

+40
-3
lines changed

src/Blazor.Diagrams/Components/Renderers/NodeRenderer.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
using System;
2-
using System.Text;
3-
using System.Threading.Tasks;
1+
using System.Text;
42
using Blazor.Diagrams.Core.Extensions;
53
using Blazor.Diagrams.Core.Geometry;
64
using Blazor.Diagrams.Core.Models;
@@ -129,6 +127,9 @@ protected override void BuildRenderTree(RenderTreeBuilder builder)
129127

130128
protected override async Task OnAfterRenderAsync(bool firstRender)
131129
{
130+
if (firstRender && !Node.Visible)
131+
return;
132+
132133
if (firstRender || _becameVisible)
133134
{
134135
_becameVisible = false;
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using Blazor.Diagrams.Components.Renderers;
2+
using Blazor.Diagrams.Core.Geometry;
3+
using Blazor.Diagrams.Core.Models;
4+
using Bunit;
5+
using Xunit;
6+
7+
namespace Blazor.Diagrams.Tests.Components;
8+
9+
public class NodeRendererTests
10+
{
11+
12+
[Fact]
13+
public void NodeRenderer_WhenNodeVisibleIsFalseAndIsFirstRender_ShouldNotObserveResizes()
14+
{
15+
// Arrange
16+
JSRuntimeInvocationHandler call;
17+
using (var ctx = new TestContext())
18+
{
19+
ctx.JSInterop.Setup<Rectangle>("ZBlazorDiagrams.getBoundingClientRect", _ => true);
20+
call = ctx.JSInterop.SetupVoid("ZBlazorDiagrams.observe", _ => true).SetVoidResult();
21+
22+
// Act
23+
var cut = ctx.RenderComponent<NodeRenderer>(p =>
24+
{
25+
p.Add(n => n.BlazorDiagram, new BlazorDiagram());
26+
p.Add(n => n.Node, new NodeModel()
27+
{
28+
Visible = false
29+
});
30+
});
31+
}
32+
33+
// Assert
34+
call.VerifyNotInvoke("ZBlazorDiagrams.observe");
35+
}
36+
}

0 commit comments

Comments
 (0)